@crowdedkingdomstudios/crowdyjs 2.1.2 → 4.0.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 (72) hide show
  1. package/MIGRATION.md +26 -0
  2. package/README.md +155 -749
  3. package/dist/auth-state.d.ts +6 -16
  4. package/dist/auth-state.d.ts.map +1 -1
  5. package/dist/auth-state.js +9 -26
  6. package/dist/client.d.ts +14 -5
  7. package/dist/client.d.ts.map +1 -1
  8. package/dist/client.js +24 -17
  9. package/dist/crowdy-client.d.ts +62 -16
  10. package/dist/crowdy-client.d.ts.map +1 -1
  11. package/dist/crowdy-client.js +70 -28
  12. package/dist/domains/apps.d.ts +48 -20
  13. package/dist/domains/apps.d.ts.map +1 -1
  14. package/dist/domains/apps.js +58 -35
  15. package/dist/domains/auth.d.ts +33 -22
  16. package/dist/domains/auth.d.ts.map +1 -1
  17. package/dist/domains/auth.js +51 -33
  18. package/dist/domains/serverStatus.d.ts +2 -1
  19. package/dist/domains/serverStatus.d.ts.map +1 -1
  20. package/dist/domains/serverStatus.js +5 -1
  21. package/dist/domains/udp.d.ts +28 -3
  22. package/dist/domains/udp.d.ts.map +1 -1
  23. package/dist/domains/udp.js +52 -1
  24. package/dist/domains/users.d.ts +19 -16
  25. package/dist/domains/users.d.ts.map +1 -1
  26. package/dist/domains/users.js +21 -39
  27. package/dist/errors.d.ts +42 -0
  28. package/dist/errors.d.ts.map +1 -0
  29. package/dist/errors.js +42 -0
  30. package/dist/generated/graphql.d.ts +1473 -11
  31. package/dist/generated/graphql.d.ts.map +1 -1
  32. package/dist/generated/graphql.js +17 -8
  33. package/dist/index.d.ts +37 -18
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +37 -20
  36. package/dist/logger.d.ts +8 -0
  37. package/dist/logger.d.ts.map +1 -0
  38. package/dist/logger.js +1 -0
  39. package/dist/realtime.d.ts +89 -0
  40. package/dist/realtime.d.ts.map +1 -0
  41. package/dist/realtime.js +273 -0
  42. package/dist/session.d.ts +27 -0
  43. package/dist/session.d.ts.map +1 -0
  44. package/dist/session.js +61 -0
  45. package/dist/subscriptions.d.ts +1 -48
  46. package/dist/subscriptions.d.ts.map +1 -1
  47. package/dist/subscriptions.js +1 -192
  48. package/dist/types.d.ts +2 -31
  49. package/dist/types.d.ts.map +1 -1
  50. package/dist/types.js +5 -33
  51. package/dist/utils.d.ts +12 -0
  52. package/dist/utils.d.ts.map +1 -0
  53. package/dist/utils.js +50 -0
  54. package/dist/world.d.ts +44 -0
  55. package/dist/world.d.ts.map +1 -0
  56. package/dist/world.js +105 -0
  57. package/package.json +12 -3
  58. package/dist/domains/appAccess.d.ts +0 -23
  59. package/dist/domains/appAccess.d.ts.map +0 -1
  60. package/dist/domains/appAccess.js +0 -42
  61. package/dist/domains/billing.d.ts +0 -17
  62. package/dist/domains/billing.d.ts.map +0 -1
  63. package/dist/domains/billing.js +0 -31
  64. package/dist/domains/organizations.d.ts +0 -33
  65. package/dist/domains/organizations.d.ts.map +0 -1
  66. package/dist/domains/organizations.js +0 -90
  67. package/dist/domains/payments.d.ts +0 -20
  68. package/dist/domains/payments.d.ts.map +0 -1
  69. package/dist/domains/payments.js +0 -28
  70. package/dist/domains/quotas.d.ts +0 -20
  71. package/dist/domains/quotas.d.ts.map +0 -1
  72. 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
  };
@@ -139,11 +140,13 @@ export type App = {
139
140
  createdAt: Scalars['DateTime']['output'];
140
141
  createdBy: Scalars['BigInt']['output'];
141
142
  description: Maybe<Scalars['String']['output']>;
143
+ gameApiUrl: Maybe<Scalars['String']['output']>;
142
144
  metadata: Maybe<Scalars['String']['output']>;
143
145
  name: Scalars['String']['output'];
144
146
  org: Maybe<Organization>;
145
147
  orgId: Scalars['BigInt']['output'];
146
148
  slug: Maybe<Scalars['String']['output']>;
149
+ splitMode: Scalars['Boolean']['output'];
147
150
  state: Maybe<Scalars['String']['output']>;
148
151
  status: AppStatus;
149
152
  updatedAt: Scalars['DateTime']['output'];
@@ -159,12 +162,21 @@ export type AppAccessTier = {
159
162
  isDefault: Scalars['Boolean']['output'];
160
163
  isFree: Scalars['Boolean']['output'];
161
164
  name: Scalars['String']['output'];
165
+ permissionKeys: Array<Scalars['String']['output']>;
162
166
  priceCents: Maybe<Scalars['BigInt']['output']>;
163
167
  status: Scalars['String']['output'];
164
168
  tierId: Scalars['BigInt']['output'];
165
169
  tierOrder: Scalars['Float']['output'];
166
170
  updatedAt: Scalars['DateTime']['output'];
167
171
  };
172
+ export type AppAvatarState = {
173
+ __typename?: 'AppAvatarState';
174
+ appId: Scalars['BigInt']['output'];
175
+ avatarId: Scalars['BigInt']['output'];
176
+ createdAt: Scalars['DateTime']['output'];
177
+ state: Maybe<Scalars['String']['output']>;
178
+ updatedAt: Scalars['DateTime']['output'];
179
+ };
168
180
  export type AppBudget = {
169
181
  __typename?: 'AppBudget';
170
182
  appBudgetId: Scalars['BigInt']['output'];
@@ -176,6 +188,17 @@ export type AppBudget = {
176
188
  periodStart: Scalars['DateTime']['output'];
177
189
  updatedAt: Scalars['DateTime']['output'];
178
190
  };
191
+ export type AppGroupPolicy = {
192
+ __typename?: 'AppGroupPolicy';
193
+ appId: Scalars['BigInt']['output'];
194
+ /** admin | member | anyone */
195
+ creationPolicy: Scalars['String']['output'];
196
+ /** open | request | invite | admin */
197
+ defaultMembershipPolicy: Scalars['String']['output'];
198
+ groupType: Scalars['String']['output'];
199
+ maxGroupsPerUser: Maybe<Scalars['Int']['output']>;
200
+ maxMembers: Maybe<Scalars['Int']['output']>;
201
+ };
179
202
  export type AppMarketplaceFilterInput = {
180
203
  orgSlug?: InputMaybe<Scalars['String']['input']>;
181
204
  query?: InputMaybe<Scalars['String']['input']>;
@@ -186,6 +209,25 @@ export declare enum AppStatus {
186
209
  Draft = "DRAFT",
187
210
  Live = "LIVE"
188
211
  }
212
+ export type AppUsageRollupRow = {
213
+ __typename?: 'AppUsageRollupRow';
214
+ appId: Scalars['String']['output'];
215
+ appName: Scalars['String']['output'];
216
+ appSlug: Scalars['String']['output'];
217
+ graphqlRecvBytes: Scalars['String']['output'];
218
+ graphqlSendBytes: Scalars['String']['output'];
219
+ replicationRecvBytes: Scalars['String']['output'];
220
+ replicationSendBytes: Scalars['String']['output'];
221
+ };
222
+ export type AppUsageSummary = {
223
+ __typename?: 'AppUsageSummary';
224
+ appId: Scalars['String']['output'];
225
+ graphqlRecvBytes: Scalars['String']['output'];
226
+ graphqlSendBytes: Scalars['String']['output'];
227
+ replicationRecvBytes: Scalars['String']['output'];
228
+ replicationSendBytes: Scalars['String']['output'];
229
+ topGraphqlOperations: Array<GraphqlOperationUsageRow>;
230
+ };
189
231
  export type AppUserAccess = {
190
232
  __typename?: 'AppUserAccess';
191
233
  appId: Scalars['BigInt']['output'];
@@ -210,6 +252,15 @@ export type AppsPage = {
210
252
  items: Array<App>;
211
253
  pageInfo: PageInfo;
212
254
  };
255
+ export type AssignGroupToGridInput = {
256
+ appId: Scalars['BigInt']['input'];
257
+ expiresAt?: InputMaybe<Scalars['DateTime']['input']>;
258
+ gridId: Scalars['BigInt']['input'];
259
+ groupId: Scalars['BigInt']['input'];
260
+ /** Optional: scope the grant to members holding this group role. Omit to grant to all members of the group. */
261
+ groupRoleId?: InputMaybe<Scalars['BigInt']['input']>;
262
+ permissionKeys: Array<Scalars['String']['input']>;
263
+ };
213
264
  export type AuthResponse = {
214
265
  __typename?: 'AuthResponse';
215
266
  gameTokenId: Scalars['String']['output'];
@@ -237,6 +288,16 @@ export type AvatarDto = {
237
288
  export type BatchActorLookupInput = {
238
289
  uuids: Array<Scalars['String']['input']>;
239
290
  };
291
+ export type BuddyLiveRates = {
292
+ __typename?: 'BuddyLiveRates';
293
+ clientRecvMbitPerSec: Scalars['Float']['output'];
294
+ clientRecvMsgsPerSec: Scalars['Float']['output'];
295
+ clientSendMbitPerSec: Scalars['Float']['output'];
296
+ clientSendMsgsPerSec: Scalars['Float']['output'];
297
+ clients: Scalars['Float']['output'];
298
+ serverId: Scalars['String']['output'];
299
+ updatedAt: Scalars['DateTime']['output'];
300
+ };
240
301
  export type Checkout = {
241
302
  __typename?: 'Checkout';
242
303
  amountCents: Maybe<Scalars['BigInt']['output']>;
@@ -341,6 +402,231 @@ export type ChunksByDistanceResponse = {
341
402
  limit: Maybe<Scalars['Int']['output']>;
342
403
  skip: Maybe<Scalars['Int']['output']>;
343
404
  };
405
+ export type CksBuddyHealth = {
406
+ __typename?: 'CksBuddyHealth';
407
+ clientPort: Maybe<Scalars['Int']['output']>;
408
+ clients: Maybe<Scalars['Int']['output']>;
409
+ /** Seconds since server_status.updated_at (game DB heartbeat). */
410
+ heartbeatAgeSec: Maybe<Scalars['Float']['output']>;
411
+ ip4: Maybe<Scalars['String']['output']>;
412
+ /** True when heartbeat is missing or older than the staleness threshold (~30s). Game-api rejects assignment when age > ~11s. */
413
+ isStale: Scalars['Boolean']['output'];
414
+ /** False when no server_status row exists for this environment. */
415
+ registered: Scalars['Boolean']['output'];
416
+ status: Maybe<Scalars['String']['output']>;
417
+ /** Operator-facing hint when multiplayer assignment may fail. */
418
+ troubleshootingHint: Scalars['String']['output'];
419
+ updatedAt: Maybe<Scalars['DateTime']['output']>;
420
+ };
421
+ export type CksDeployProgress = {
422
+ __typename?: 'CksDeployProgress';
423
+ /** Redeploy is allowed (failed deploy or stuck order cleared) */
424
+ canRetry: Scalars['Boolean']['output'];
425
+ changeOrderId: Scalars['String']['output'];
426
+ changeOrderStatus: Scalars['String']['output'];
427
+ currentStepKind: Maybe<Scalars['String']['output']>;
428
+ currentTaskKind: Maybe<Scalars['String']['output']>;
429
+ error: Maybe<Scalars['String']['output']>;
430
+ /** True when the deploy failed but the change order was left in_progress */
431
+ isStuck: Scalars['Boolean']['output'];
432
+ targetVersion: Maybe<Scalars['String']['output']>;
433
+ tasks: Array<CksDeployProgressTask>;
434
+ tasksFailed: Scalars['Int']['output'];
435
+ tasksInProgress: Scalars['Int']['output'];
436
+ tasksPending: Scalars['Int']['output'];
437
+ tasksSucceeded: Scalars['Int']['output'];
438
+ tasksTotal: Scalars['Int']['output'];
439
+ };
440
+ export type CksDeployProgressStep = {
441
+ __typename?: 'CksDeployProgressStep';
442
+ attempt: Scalars['Int']['output'];
443
+ error: Maybe<Scalars['String']['output']>;
444
+ id: Scalars['String']['output'];
445
+ kind: Scalars['String']['output'];
446
+ /** Human-readable step label for the org UI */
447
+ label: Scalars['String']['output'];
448
+ status: Scalars['String']['output'];
449
+ };
450
+ export type CksDeployProgressTask = {
451
+ __typename?: 'CksDeployProgressTask';
452
+ error: Maybe<Scalars['String']['output']>;
453
+ id: Scalars['String']['output'];
454
+ kind: Scalars['String']['output'];
455
+ label: Scalars['String']['output'];
456
+ status: Scalars['String']['output'];
457
+ steps: Array<CksDeployProgressStep>;
458
+ };
459
+ export type CksEnvironment = {
460
+ __typename?: 'CksEnvironment';
461
+ billingGraceDeadline: Maybe<Scalars['DateTime']['output']>;
462
+ billingStatus: Scalars['String']['output'];
463
+ caddyFlavor: Maybe<Scalars['String']['output']>;
464
+ createdAt: Scalars['DateTime']['output'];
465
+ databaseFlavor: Maybe<Scalars['String']['output']>;
466
+ desiredEnvironmentVersion: Maybe<Scalars['String']['output']>;
467
+ displayName: Scalars['String']['output'];
468
+ gameApiFlavor: Maybe<Scalars['String']['output']>;
469
+ gameApiMaxServers: Scalars['Int']['output'];
470
+ gameApiMinServers: Scalars['Int']['output'];
471
+ id: Scalars['String']['output'];
472
+ loadBalancerCount: Scalars['Int']['output'];
473
+ observedEnvironmentVersion: Maybe<Scalars['String']['output']>;
474
+ orgId: Scalars['BigInt']['output'];
475
+ primaryCloud: Scalars['String']['output'];
476
+ primaryRegion: Scalars['String']['output'];
477
+ slug: Scalars['String']['output'];
478
+ status: Scalars['String']['output'];
479
+ subdomainHandle: Maybe<Scalars['String']['output']>;
480
+ suspendedAt: Maybe<Scalars['DateTime']['output']>;
481
+ udpBuddyFlavor: Maybe<Scalars['String']['output']>;
482
+ udpBuddyMaxServers: Scalars['Int']['output'];
483
+ udpBuddyMinServers: Scalars['Int']['output'];
484
+ updatedAt: Scalars['DateTime']['output'];
485
+ };
486
+ export type CksEnvironmentAudit = {
487
+ __typename?: 'CksEnvironmentAudit';
488
+ action: Scalars['String']['output'];
489
+ createdAt: Scalars['DateTime']['output'];
490
+ environmentId: Scalars['String']['output'];
491
+ id: Scalars['String']['output'];
492
+ payloadJson: Maybe<Scalars['String']['output']>;
493
+ };
494
+ export type CksEnvironmentBillingResource = {
495
+ __typename?: 'CksEnvironmentBillingResource';
496
+ componentKind: Scalars['String']['output'];
497
+ currency: Scalars['String']['output'];
498
+ customerHourlyPriceCents: Maybe<Scalars['BigInt']['output']>;
499
+ environmentId: Scalars['String']['output'];
500
+ flavorName: Maybe<Scalars['String']['output']>;
501
+ id: Scalars['String']['output'];
502
+ observedAt: Scalars['DateTime']['output'];
503
+ provider: Scalars['String']['output'];
504
+ region: Scalars['String']['output'];
505
+ resourceId: Scalars['String']['output'];
506
+ resourceName: Maybe<Scalars['String']['output']>;
507
+ status: Scalars['String']['output'];
508
+ };
509
+ export type CksEnvironmentChangeOrder = {
510
+ __typename?: 'CksEnvironmentChangeOrder';
511
+ claimedAt: Maybe<Scalars['DateTime']['output']>;
512
+ claimedBy: Maybe<Scalars['String']['output']>;
513
+ createdAt: Scalars['DateTime']['output'];
514
+ environmentId: Scalars['String']['output'];
515
+ error: Maybe<Scalars['String']['output']>;
516
+ finishedAt: Maybe<Scalars['DateTime']['output']>;
517
+ id: Scalars['String']['output'];
518
+ kind: Scalars['String']['output'];
519
+ payloadJson: Scalars['String']['output'];
520
+ requestedBy: Maybe<Scalars['BigInt']['output']>;
521
+ status: Scalars['String']['output'];
522
+ updatedAt: Scalars['DateTime']['output'];
523
+ };
524
+ export type CksEnvironmentComponent = {
525
+ __typename?: 'CksEnvironmentComponent';
526
+ desiredSpecJson: Maybe<Scalars['String']['output']>;
527
+ desiredVersion: Maybe<Scalars['String']['output']>;
528
+ environmentId: Scalars['String']['output'];
529
+ id: Scalars['String']['output'];
530
+ kind: Scalars['String']['output'];
531
+ lastObservedAt: Maybe<Scalars['DateTime']['output']>;
532
+ observedSpecJson: Maybe<Scalars['String']['output']>;
533
+ observedVersion: Maybe<Scalars['String']['output']>;
534
+ status: Maybe<Scalars['String']['output']>;
535
+ };
536
+ export type CksEnvironmentDetail = {
537
+ __typename?: 'CksEnvironmentDetail';
538
+ audit: Array<CksEnvironmentAudit>;
539
+ billingResources: Array<CksEnvironmentBillingResource>;
540
+ /** Buddy UDP server heartbeat from mirrored server_status. Null when env is destroyed or management DB has no row. */
541
+ buddyHealth: Maybe<CksBuddyHealth>;
542
+ changeOrders: Array<CksEnvironmentChangeOrder>;
543
+ components: Array<CksEnvironmentComponent>;
544
+ /** Live deploy task/step progress for the active or most recent failed deploy */
545
+ deployProgress: Maybe<CksDeployProgress>;
546
+ environment: CksEnvironment;
547
+ outputs: Array<CksEnvironmentOutput>;
548
+ secrets: Array<CksEnvironmentSecretValue>;
549
+ };
550
+ export type CksEnvironmentOutput = {
551
+ __typename?: 'CksEnvironmentOutput';
552
+ componentKind: Scalars['String']['output'];
553
+ environmentId: Scalars['String']['output'];
554
+ id: Scalars['String']['output'];
555
+ label: Scalars['String']['output'];
556
+ name: Scalars['String']['output'];
557
+ value: Scalars['String']['output'];
558
+ valueKind: Scalars['String']['output'];
559
+ };
560
+ export type CksEnvironmentQuote = {
561
+ __typename?: 'CksEnvironmentQuote';
562
+ availableBalanceCents: Scalars['BigInt']['output'];
563
+ caddyFlavor: Scalars['String']['output'];
564
+ canCreate: Scalars['Boolean']['output'];
565
+ currency: Scalars['String']['output'];
566
+ databaseFlavor: Scalars['String']['output'];
567
+ datacenter: Scalars['String']['output'];
568
+ firstDayReserveCents: Scalars['BigInt']['output'];
569
+ gameApiFlavor: Scalars['String']['output'];
570
+ gameApiMaxServers: Scalars['Int']['output'];
571
+ gameApiMinServers: Scalars['Int']['output'];
572
+ hourlyCostCents: Scalars['BigInt']['output'];
573
+ loadBalancerCount: Scalars['Int']['output'];
574
+ udpBuddyFlavor: Scalars['String']['output'];
575
+ udpBuddyMaxServers: Scalars['Int']['output'];
576
+ udpBuddyMinServers: Scalars['Int']['output'];
577
+ walletBalanceCents: Scalars['BigInt']['output'];
578
+ };
579
+ export type CksEnvironmentSecretValue = {
580
+ __typename?: 'CksEnvironmentSecretValue';
581
+ createdAt: Scalars['DateTime']['output'];
582
+ environmentId: Scalars['String']['output'];
583
+ id: Scalars['String']['output'];
584
+ kind: Maybe<Scalars['String']['output']>;
585
+ name: Scalars['String']['output'];
586
+ sealedCiphertextBase64: Scalars['String']['output'];
587
+ updatedAt: Scalars['DateTime']['output'];
588
+ };
589
+ export type CksEnvironmentVersion = {
590
+ __typename?: 'CksEnvironmentVersion';
591
+ /** Pinned cks-game-api git tag from the ingested manifest. */
592
+ gameApiGitTag: Maybe<Scalars['String']['output']>;
593
+ notes: Maybe<Scalars['String']['output']>;
594
+ releasedAt: Scalars['DateTime']['output'];
595
+ status: Scalars['String']['output'];
596
+ version: Scalars['String']['output'];
597
+ };
598
+ export type CksOvhDatacenter = {
599
+ __typename?: 'CksOvhDatacenter';
600
+ city: Maybe<Scalars['String']['output']>;
601
+ continent: Maybe<Scalars['String']['output']>;
602
+ isAvailable: Scalars['Boolean']['output'];
603
+ name: Maybe<Scalars['String']['output']>;
604
+ region: Scalars['String']['output'];
605
+ /** Number of customer-selectable instances in this datacenter after availability, pricing, and admin visibility filters. */
606
+ selectableInstanceCount: Scalars['Int']['output'];
607
+ status: Scalars['String']['output'];
608
+ syncedAt: Scalars['DateTime']['output'];
609
+ };
610
+ /** Customer-selectable catalog instance flavor. Hidden, unavailable, or unpriced rows are omitted from environmentFlavors. */
611
+ export type CksOvhFlavor = {
612
+ __typename?: 'CksOvhFlavor';
613
+ availabilityStatus: Scalars['String']['output'];
614
+ currency: Scalars['String']['output'];
615
+ /** Customer hourly price in cents. Non-null for every flavor returned from environmentFlavors. */
616
+ customerHourlyPriceCents: Scalars['BigInt']['output'];
617
+ /** Customer monthly reference price in cents. Display-only until monthly billing is implemented. */
618
+ customerMonthlyPriceCents: Maybe<Scalars['BigInt']['output']>;
619
+ diskGb: Maybe<Scalars['Int']['output']>;
620
+ flavorName: Scalars['String']['output'];
621
+ flavorType: Maybe<Scalars['String']['output']>;
622
+ pricingMode: Scalars['String']['output'];
623
+ pricingSource: Maybe<Scalars['String']['output']>;
624
+ quotaAvailable: Maybe<Scalars['Int']['output']>;
625
+ ramMb: Maybe<Scalars['Int']['output']>;
626
+ rawHourlyCostCents: Maybe<Scalars['BigInt']['output']>;
627
+ syncedAt: Scalars['DateTime']['output'];
628
+ vcpus: Maybe<Scalars['Int']['output']>;
629
+ };
344
630
  /** Notification received when another client sends an audio packet (voice chat). Received via the udpNotifications subscription. */
345
631
  export type ClientAudioNotification = {
346
632
  __typename?: 'ClientAudioNotification';
@@ -468,10 +754,241 @@ export type ClientTextPacketInput = {
468
754
  /** A unique identifier for the text source (typically the player UUID). Must be exactly 32 bytes when encoded as UTF-8. */
469
755
  uuid: Scalars['String']['input'];
470
756
  };
471
- /** Input for connecting to the UDP proxy. The server automatically selects the UDP game server with the least number of clients. This input type exists only because GraphQL requires input types to have at least one field - the _placeholder field can be ignored. */
472
- export type ConnectUdpProxyInput = {
473
- /** Placeholder field (can be ignored). GraphQL requires input types to have at least one field. */
474
- _placeholder?: InputMaybe<Scalars['Boolean']['input']>;
757
+ /** Operator-facing view of cks_environments. */
758
+ export type CpAdminEnvironment = {
759
+ __typename?: 'CpAdminEnvironment';
760
+ createdAt: Scalars['DateTime']['output'];
761
+ deletionProtectionEnabled: Scalars['Boolean']['output'];
762
+ deletionProtectionSetAt: Maybe<Scalars['DateTime']['output']>;
763
+ deletionProtectionSetByEmail: Maybe<Scalars['String']['output']>;
764
+ displayName: Scalars['String']['output'];
765
+ id: Scalars['ID']['output'];
766
+ orgId: Maybe<Scalars['String']['output']>;
767
+ primaryCloud: Scalars['String']['output'];
768
+ primaryRegion: Scalars['String']['output'];
769
+ slug: Scalars['String']['output'];
770
+ status: Scalars['String']['output'];
771
+ subdomainHandle: Maybe<Scalars['String']['output']>;
772
+ updatedAt: Scalars['DateTime']['output'];
773
+ };
774
+ export type CpAdminEnvironmentsPage = {
775
+ __typename?: 'CpAdminEnvironmentsPage';
776
+ page: Scalars['Int']['output'];
777
+ pageSize: Scalars['Int']['output'];
778
+ rows: Array<CpAdminEnvironment>;
779
+ total: Scalars['Int']['output'];
780
+ };
781
+ export type CpAuditEntry = {
782
+ __typename?: 'CpAuditEntry';
783
+ action: Scalars['String']['output'];
784
+ actorKind: Scalars['String']['output'];
785
+ actorUserId: Maybe<Scalars['String']['output']>;
786
+ createdAt: Scalars['DateTime']['output'];
787
+ entityId: Maybe<Scalars['String']['output']>;
788
+ entityKind: Maybe<Scalars['String']['output']>;
789
+ environmentId: Maybe<Scalars['String']['output']>;
790
+ id: Scalars['ID']['output'];
791
+ payloadJson: Maybe<Scalars['String']['output']>;
792
+ };
793
+ export type CpBuddyLiveRates = {
794
+ __typename?: 'CpBuddyLiveRates';
795
+ clientRecvMbitPerSec: Scalars['Float']['output'];
796
+ clientRecvMsgsPerSec: Scalars['Float']['output'];
797
+ clientSendMbitPerSec: Scalars['Float']['output'];
798
+ clientSendMsgsPerSec: Scalars['Float']['output'];
799
+ clients: Scalars['Float']['output'];
800
+ serverId: Scalars['String']['output'];
801
+ updatedAt: Scalars['DateTime']['output'];
802
+ };
803
+ export type CpChangeOrder = {
804
+ __typename?: 'CpChangeOrder';
805
+ claimedAt: Maybe<Scalars['DateTime']['output']>;
806
+ claimedBy: Maybe<Scalars['String']['output']>;
807
+ createdAt: Scalars['DateTime']['output'];
808
+ environmentId: Scalars['String']['output'];
809
+ error: Maybe<Scalars['String']['output']>;
810
+ finishedAt: Maybe<Scalars['DateTime']['output']>;
811
+ id: Scalars['ID']['output'];
812
+ kind: Scalars['String']['output'];
813
+ /** JSON-encoded payload */
814
+ payloadJson: Maybe<Scalars['String']['output']>;
815
+ status: Scalars['String']['output'];
816
+ updatedAt: Scalars['DateTime']['output'];
817
+ };
818
+ export type CpChangeOrderDetail = {
819
+ __typename?: 'CpChangeOrderDetail';
820
+ order: CpChangeOrder;
821
+ steps: Array<CpStepRow>;
822
+ tasks: Array<CpTaskRow>;
823
+ };
824
+ export type CpChangeOrdersPage = {
825
+ __typename?: 'CpChangeOrdersPage';
826
+ page: Scalars['Int']['output'];
827
+ pageSize: Scalars['Int']['output'];
828
+ rows: Array<CpChangeOrder>;
829
+ total: Scalars['Int']['output'];
830
+ };
831
+ export type CpEnvSecretRow = {
832
+ __typename?: 'CpEnvSecretRow';
833
+ createdAt: Scalars['DateTime']['output'];
834
+ environmentId: Scalars['String']['output'];
835
+ id: Scalars['ID']['output'];
836
+ kind: Maybe<Scalars['String']['output']>;
837
+ name: Scalars['String']['output'];
838
+ rotatedAt: Maybe<Scalars['DateTime']['output']>;
839
+ };
840
+ /** Operator-facing view of one ingested (or git-only pending) environment release manifest. */
841
+ export type CpEnvironmentVersionRow = {
842
+ __typename?: 'CpEnvironmentVersionRow';
843
+ buddyVersion: Maybe<Scalars['String']['output']>;
844
+ gameApiGitTag: Maybe<Scalars['String']['output']>;
845
+ /** True when a row exists in cks_environment_versions. */
846
+ inDb: Scalars['Boolean']['output'];
847
+ /** True when releases/<version>.yaml exists on the configured git ref. */
848
+ inGit: Scalars['Boolean']['output'];
849
+ ingestedAt: Scalars['DateTime']['output'];
850
+ /** True when this ingested available release is what org redeploy targets (newest available, or ENVIRONMENT_DEFAULT_VERSION). */
851
+ isLatestAvailable: Scalars['Boolean']['output'];
852
+ notes: Maybe<Scalars['String']['output']>;
853
+ releasedAt: Scalars['DateTime']['output'];
854
+ sourceCommit: Maybe<Scalars['String']['output']>;
855
+ status: Scalars['String']['output'];
856
+ updatedAt: Scalars['DateTime']['output'];
857
+ version: Scalars['String']['output'];
858
+ };
859
+ /** Operator release manifest list merged from git and cks_environment_versions. */
860
+ export type CpEnvironmentVersionsPage = {
861
+ __typename?: 'CpEnvironmentVersionsPage';
862
+ /** False when GitHub manifest listing failed (e.g. invalid GITHUB_PAT). Rows may still come from the database. */
863
+ gitSourceAvailable: Scalars['Boolean']['output'];
864
+ /** Version org redeploy resolves to when no explicit version is passed. */
865
+ latestAvailableVersion: Maybe<Scalars['String']['output']>;
866
+ rows: Array<CpEnvironmentVersionRow>;
867
+ };
868
+ export type CpOperatorUser = {
869
+ __typename?: 'CpOperatorUser';
870
+ createdAt: Scalars['DateTime']['output'];
871
+ email: Maybe<Scalars['String']['output']>;
872
+ gamertag: Maybe<Scalars['String']['output']>;
873
+ isOperator: Scalars['Boolean']['output'];
874
+ isSuperAdmin: Scalars['Boolean']['output'];
875
+ userId: Scalars['ID']['output'];
876
+ };
877
+ export type CpOvhCatalogRow = {
878
+ __typename?: 'CpOvhCatalogRow';
879
+ customerHourlyPriceCents: Maybe<Scalars['String']['output']>;
880
+ customerPricingMode: Scalars['String']['output'];
881
+ diskGb: Maybe<Scalars['Int']['output']>;
882
+ flavorName: Scalars['String']['output'];
883
+ inboundBandwidth: Maybe<Scalars['Int']['output']>;
884
+ outboundBandwidth: Maybe<Scalars['Int']['output']>;
885
+ ovhHourlyPriceCents: Maybe<Scalars['String']['output']>;
886
+ quotaAvailable: Maybe<Scalars['Int']['output']>;
887
+ ramMb: Maybe<Scalars['Int']['output']>;
888
+ region: Scalars['String']['output'];
889
+ vcpus: Maybe<Scalars['Int']['output']>;
890
+ };
891
+ /** Result of publishing an environment release from a game-api tag. */
892
+ export type CpPublishEnvironmentReleaseResult = {
893
+ __typename?: 'CpPublishEnvironmentReleaseResult';
894
+ /** True when releases/vX.Y.Z.yaml was committed to the manifest git ref. */
895
+ committedToGit: Scalars['Boolean']['output'];
896
+ /** Set when ingest succeeded but the GitHub manifest commit failed. */
897
+ gitCommitError: Maybe<Scalars['String']['output']>;
898
+ schemaChanged: Scalars['Boolean']['output'];
899
+ version: CpEnvironmentVersionRow;
900
+ };
901
+ export type CpSecretRow = {
902
+ __typename?: 'CpSecretRow';
903
+ createdAt: Scalars['DateTime']['output'];
904
+ environmentId: Scalars['String']['output'];
905
+ id: Scalars['ID']['output'];
906
+ kind: Maybe<Scalars['String']['output']>;
907
+ name: Scalars['String']['output'];
908
+ rotatedAt: Maybe<Scalars['DateTime']['output']>;
909
+ };
910
+ export type CpStepRow = {
911
+ __typename?: 'CpStepRow';
912
+ attempt: Scalars['Int']['output'];
913
+ claimedBy: Maybe<Scalars['String']['output']>;
914
+ createdAt: Scalars['DateTime']['output'];
915
+ error: Maybe<Scalars['String']['output']>;
916
+ finishedAt: Maybe<Scalars['DateTime']['output']>;
917
+ handleJson: Maybe<Scalars['String']['output']>;
918
+ id: Scalars['ID']['output'];
919
+ idempotencyKey: Maybe<Scalars['String']['output']>;
920
+ intentJson: Maybe<Scalars['String']['output']>;
921
+ kind: Scalars['String']['output'];
922
+ ordinal: Scalars['Int']['output'];
923
+ outputJson: Maybe<Scalars['String']['output']>;
924
+ payloadJson: Maybe<Scalars['String']['output']>;
925
+ recheckAt: Maybe<Scalars['DateTime']['output']>;
926
+ startedAt: Maybe<Scalars['DateTime']['output']>;
927
+ status: Scalars['String']['output'];
928
+ taskId: Scalars['String']['output'];
929
+ updatedAt: Scalars['DateTime']['output'];
930
+ };
931
+ export type CpTaskRow = {
932
+ __typename?: 'CpTaskRow';
933
+ changeOrderId: Scalars['String']['output'];
934
+ /** JSON-encoded context */
935
+ contextJson: Maybe<Scalars['String']['output']>;
936
+ createdAt: Scalars['DateTime']['output'];
937
+ dependsOn: Array<Scalars['String']['output']>;
938
+ environmentId: Maybe<Scalars['String']['output']>;
939
+ error: Maybe<Scalars['String']['output']>;
940
+ finishedAt: Maybe<Scalars['DateTime']['output']>;
941
+ id: Scalars['ID']['output'];
942
+ kind: Scalars['String']['output'];
943
+ ordinal: Scalars['Int']['output'];
944
+ startedAt: Maybe<Scalars['DateTime']['output']>;
945
+ status: Scalars['String']['output'];
946
+ updatedAt: Scalars['DateTime']['output'];
947
+ };
948
+ /** cks-game-api tag on GitHub that is not yet pinned by any available environment release. */
949
+ export type CpUnreleasedGameApiTag = {
950
+ __typename?: 'CpUnreleasedGameApiTag';
951
+ /** Environment version that Publish & ingest would create (v0.1.N+1). */
952
+ proposedEnvironmentVersion: Scalars['String']['output'];
953
+ /** True when create-schema.sql differs between this tag and the current deploy-target game-api pin. */
954
+ schemaChanged: Scalars['Boolean']['output'];
955
+ tag: Scalars['String']['output'];
956
+ /** ISO timestamp when the tag was created on GitHub. */
957
+ taggedAt: Maybe<Scalars['String']['output']>;
958
+ };
959
+ /** Game-api tags eligible for one-click environment release publish. */
960
+ export type CpUnreleasedGameApiTagsPage = {
961
+ __typename?: 'CpUnreleasedGameApiTagsPage';
962
+ /** gameApiGitTag on the current org deploy target, if any. */
963
+ currentDeployTargetGameApiTag: Maybe<Scalars['String']['output']>;
964
+ /** False when GitHub tag listing failed (e.g. invalid GITHUB_PAT). */
965
+ gitSourceAvailable: Scalars['Boolean']['output'];
966
+ tags: Array<CpUnreleasedGameApiTag>;
967
+ };
968
+ export type CpUsageMinuteRow = {
969
+ __typename?: 'CpUsageMinuteRow';
970
+ minute: Scalars['DateTime']['output'];
971
+ recvBytes: Scalars['String']['output'];
972
+ recvMsgs: Maybe<Scalars['String']['output']>;
973
+ sendBytes: Scalars['String']['output'];
974
+ sendMsgs: Maybe<Scalars['String']['output']>;
975
+ };
976
+ export type CpUsageRatePeaks = {
977
+ __typename?: 'CpUsageRatePeaks';
978
+ avgSendMbitPerSec: Scalars['Float']['output'];
979
+ avgSendMsgsPerSec: Scalars['Float']['output'];
980
+ peakSendMbitPerSec: Scalars['Float']['output'];
981
+ peakSendMsgsPerSec: Scalars['Float']['output'];
982
+ sampleMinutes: Scalars['Float']['output'];
983
+ };
984
+ export type CpUsageSummary = {
985
+ __typename?: 'CpUsageSummary';
986
+ buddyLive: Maybe<CpBuddyLiveRates>;
987
+ environmentSlug: Scalars['String']['output'];
988
+ graphql: Array<CpUsageMinuteRow>;
989
+ orgId: Maybe<Scalars['String']['output']>;
990
+ replication: Array<CpUsageMinuteRow>;
991
+ replicationRates: CpUsageRatePeaks;
475
992
  };
476
993
  export type CreateAccessTierInput = {
477
994
  appId: Scalars['BigInt']['input'];
@@ -479,6 +996,7 @@ export type CreateAccessTierInput = {
479
996
  isDefault?: InputMaybe<Scalars['Boolean']['input']>;
480
997
  isFree?: InputMaybe<Scalars['Boolean']['input']>;
481
998
  name: Scalars['String']['input'];
999
+ permissionKeys?: InputMaybe<Array<Scalars['String']['input']>>;
482
1000
  tierOrder?: InputMaybe<Scalars['Int']['input']>;
483
1001
  };
484
1002
  export type CreateActorInput = {
@@ -512,8 +1030,30 @@ export type CreateCheckoutInput = {
512
1030
  successUrl?: InputMaybe<Scalars['String']['input']>;
513
1031
  tierId?: InputMaybe<Scalars['BigInt']['input']>;
514
1032
  };
1033
+ export type CreateEnvironmentInput = {
1034
+ appIds?: InputMaybe<Array<Scalars['String']['input']>>;
1035
+ /** Flavor name from environmentFlavors(datacenter) for the Caddy LB VMs in front of the game-api fleet; must have a published hourly price. */
1036
+ caddyFlavor: Scalars['String']['input'];
1037
+ /** Flavor name from environmentFlavors(datacenter); must have a published hourly price. */
1038
+ databaseFlavor: Scalars['String']['input'];
1039
+ datacenter: Scalars['String']['input'];
1040
+ displayName: Scalars['String']['input'];
1041
+ /** Flavor name from environmentFlavors(datacenter) for per-tenant game-api VMs; must have a published hourly price. */
1042
+ gameApiFlavor: Scalars['String']['input'];
1043
+ gameApiMaxServers: Scalars['Int']['input'];
1044
+ gameApiMinServers: Scalars['Int']['input'];
1045
+ loadBalancerCount: Scalars['Int']['input'];
1046
+ orgId: Scalars['BigInt']['input'];
1047
+ /** Optional explicit slug for scripts/E2E. When omitted, the API generates an opaque e-{12} slug. */
1048
+ slug?: InputMaybe<Scalars['String']['input']>;
1049
+ /** Flavor name from environmentFlavors(datacenter); must have a published hourly price. */
1050
+ udpBuddyFlavor: Scalars['String']['input'];
1051
+ udpBuddyMaxServers: Scalars['Int']['input'];
1052
+ udpBuddyMinServers: Scalars['Int']['input'];
1053
+ x25519PublicKeyBase64: Scalars['String']['input'];
1054
+ };
515
1055
  export type CreateGridInput = {
516
- app_id: Scalars['BigInt']['input'];
1056
+ appId: Scalars['BigInt']['input'];
517
1057
  corner1: ChunkCoordinatesInput;
518
1058
  corner2: ChunkCoordinatesInput;
519
1059
  };
@@ -522,6 +1062,12 @@ export type CreateGridResponse = {
522
1062
  error: UdpErrorCode;
523
1063
  grid: Maybe<Grid>;
524
1064
  };
1065
+ export type CreateGroupRoleInput = {
1066
+ groupId: Scalars['BigInt']['input'];
1067
+ permissions?: InputMaybe<Array<Scalars['String']['input']>>;
1068
+ rank?: InputMaybe<Scalars['Int']['input']>;
1069
+ roleName: Scalars['String']['input'];
1070
+ };
525
1071
  export type CreateOrgRoleInput = {
526
1072
  description?: InputMaybe<Scalars['String']['input']>;
527
1073
  orgId: Scalars['BigInt']['input'];
@@ -537,16 +1083,89 @@ export type CreateOrganizationInput = {
537
1083
  name: Scalars['String']['input'];
538
1084
  slug: Scalars['String']['input'];
539
1085
  };
1086
+ export type CreateTeamInput = {
1087
+ appId: Scalars['BigInt']['input'];
1088
+ description?: InputMaybe<Scalars['String']['input']>;
1089
+ /** open | request | invite | admin. Defaults to the app policy. */
1090
+ membershipPolicy?: InputMaybe<Scalars['String']['input']>;
1091
+ name: Scalars['String']['input'];
1092
+ };
540
1093
  export type CreateUserAppStateInput = {
541
1094
  appId: Scalars['BigInt']['input'];
542
1095
  state?: InputMaybe<Scalars['String']['input']>;
543
1096
  };
1097
+ export type DestroyEnvironmentInput = {
1098
+ orgId: Scalars['BigInt']['input'];
1099
+ slug: Scalars['String']['input'];
1100
+ };
1101
+ export type EnvironmentQuoteInput = {
1102
+ /** Flavor name from environmentFlavors(datacenter) for the Caddy LB VMs in front of the game-api fleet; must have a published hourly price. */
1103
+ caddyFlavor: Scalars['String']['input'];
1104
+ /** Flavor name from environmentFlavors(datacenter); must have a published hourly price. */
1105
+ databaseFlavor: Scalars['String']['input'];
1106
+ datacenter: Scalars['String']['input'];
1107
+ /** Flavor name from environmentFlavors(datacenter) for per-tenant game-api VMs; must have a published hourly price. */
1108
+ gameApiFlavor: Scalars['String']['input'];
1109
+ gameApiMaxServers: Scalars['Int']['input'];
1110
+ gameApiMinServers: Scalars['Int']['input'];
1111
+ loadBalancerCount: Scalars['Int']['input'];
1112
+ orgId: Scalars['BigInt']['input'];
1113
+ /** Flavor name from environmentFlavors(datacenter); must have a published hourly price. */
1114
+ udpBuddyFlavor: Scalars['String']['input'];
1115
+ udpBuddyMaxServers: Scalars['Int']['input'];
1116
+ udpBuddyMinServers: Scalars['Int']['input'];
1117
+ };
1118
+ export type EnvironmentUsageRollupRow = {
1119
+ __typename?: 'EnvironmentUsageRollupRow';
1120
+ displayName: Scalars['String']['output'];
1121
+ environmentId: Scalars['String']['output'];
1122
+ environmentSlug: Scalars['String']['output'];
1123
+ graphqlRecvBytes: Scalars['String']['output'];
1124
+ graphqlSendBytes: Scalars['String']['output'];
1125
+ replicationRecvBytes: Scalars['String']['output'];
1126
+ replicationSendBytes: Scalars['String']['output'];
1127
+ };
1128
+ export type EnvironmentUsageSummary = {
1129
+ __typename?: 'EnvironmentUsageSummary';
1130
+ buddyLive: Maybe<BuddyLiveRates>;
1131
+ environmentId: Scalars['String']['output'];
1132
+ environmentSlug: Scalars['String']['output'];
1133
+ graphql: Array<UsageMinuteRow>;
1134
+ orgId: Scalars['String']['output'];
1135
+ replication: Array<UsageMinuteRow>;
1136
+ replicationRates: UsageRatePeaks;
1137
+ };
544
1138
  export type FreePlayWindowInfo = {
545
1139
  __typename?: 'FreePlayWindowInfo';
546
1140
  description: Scalars['String']['output'];
547
1141
  isCurrentlyActive: Scalars['Boolean']['output'];
548
1142
  nextWindowStart: Maybe<Scalars['String']['output']>;
549
1143
  };
1144
+ /** Startup contract for browser game clients. Fetch this after login to initialize protocol/version checks and UDP proxy state in one round trip. */
1145
+ export type GameClientBootstrap = {
1146
+ __typename?: 'GameClientBootstrap';
1147
+ appId: Scalars['BigInt']['output'];
1148
+ maxDecayRate: Scalars['Int']['output'];
1149
+ maxReplicationDistance: Scalars['Int']['output'];
1150
+ me: User;
1151
+ /** GraphQL WebSocket subprotocol expected by udpNotifications. */
1152
+ realtimeProtocol: Scalars['String']['output'];
1153
+ sequenceNumberModulo: Scalars['Int']['output'];
1154
+ /** GraphQL subscription field that carries UDP proxy notifications. */
1155
+ subscriptionName: Scalars['String']['output'];
1156
+ udpProxyConnectionStatus: UdpProxyConnectionStatus;
1157
+ versionInfo: ServerVersionInfo;
1158
+ };
1159
+ /** 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. */
1160
+ export type GameHost = {
1161
+ __typename?: 'GameHost';
1162
+ /** How many actors the host user currently owns in this app (always >= 1 when this object is returned). */
1163
+ actorCount: Scalars['Int']['output'];
1164
+ /** 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. */
1165
+ earliestActorJoinedAt: Scalars['DateTime']['output'];
1166
+ /** 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. */
1167
+ hostUserId: Scalars['BigInt']['output'];
1168
+ };
550
1169
  /** Generic error response from the UDP game server. Uses the sequence number to match the original request that failed. */
551
1170
  export type GenericErrorResponse = {
552
1171
  __typename?: 'GenericErrorResponse';
@@ -583,15 +1202,39 @@ export type GrantAppAccessInput = {
583
1202
  tierId?: InputMaybe<Scalars['BigInt']['input']>;
584
1203
  userId: Scalars['BigInt']['input'];
585
1204
  };
1205
+ export type GrantGridPermissionsInput = {
1206
+ appId: Scalars['BigInt']['input'];
1207
+ expiresAt?: InputMaybe<Scalars['DateTime']['input']>;
1208
+ gridId: Scalars['BigInt']['input'];
1209
+ permissionKeys: Array<Scalars['String']['input']>;
1210
+ userId: Scalars['BigInt']['input'];
1211
+ };
586
1212
  export type GraphQlServer = {
587
1213
  __typename?: 'GraphQLServer';
1214
+ apiPort: Scalars['Int']['output'];
1215
+ cpuUsagePct: Maybe<Scalars['Float']['output']>;
588
1216
  createdAt: Scalars['DateTime']['output'];
589
1217
  graphqlServerId: Scalars['ID']['output'];
590
1218
  ip4: Maybe<Scalars['String']['output']>;
591
1219
  ip6: Maybe<Scalars['String']['output']>;
1220
+ /** Logical kind of GraphQL service: 'management-api' or 'game-api'. */
1221
+ kind: Maybe<Scalars['String']['output']>;
1222
+ loadAverage1m: Maybe<Scalars['Float']['output']>;
1223
+ memoryUsagePct: Maybe<Scalars['Float']['output']>;
1224
+ providerInstanceId: Maybe<Scalars['String']['output']>;
1225
+ publicIp4: Maybe<Scalars['String']['output']>;
1226
+ publicIp6: Maybe<Scalars['String']['output']>;
1227
+ runtimeServerId: Maybe<Scalars['String']['output']>;
592
1228
  status: ServerState;
593
1229
  updatedAt: Scalars['DateTime']['output'];
594
1230
  };
1231
+ export type GraphqlOperationUsageRow = {
1232
+ __typename?: 'GraphqlOperationUsageRow';
1233
+ operationName: Scalars['String']['output'];
1234
+ recvBytes: Scalars['String']['output'];
1235
+ sendBytes: Scalars['String']['output'];
1236
+ totalOps: Scalars['String']['output'];
1237
+ };
595
1238
  export type Grid = {
596
1239
  __typename?: 'Grid';
597
1240
  app_id: Scalars['BigInt']['output'];
@@ -600,6 +1243,74 @@ export type Grid = {
600
1243
  high_chunk: ChunkCoordinates;
601
1244
  low_chunk: ChunkCoordinates;
602
1245
  };
1246
+ export type GridGroupGrant = {
1247
+ __typename?: 'GridGroupGrant';
1248
+ appId: Scalars['BigInt']['output'];
1249
+ expiresAt: Maybe<Scalars['DateTime']['output']>;
1250
+ gridId: Scalars['BigInt']['output'];
1251
+ groupId: Scalars['BigInt']['output'];
1252
+ /** Null means the grant applies to all members of the group. */
1253
+ groupRoleId: Maybe<Scalars['BigInt']['output']>;
1254
+ permissionKey: Scalars['String']['output'];
1255
+ };
1256
+ export type GridPermissionLimits = {
1257
+ __typename?: 'GridPermissionLimits';
1258
+ appId: Scalars['BigInt']['output'];
1259
+ gridId: Scalars['BigInt']['output'];
1260
+ /** The permission keys this grid is limited to. Empty means no limit (every active grid permission is allowed). */
1261
+ permissionKeys: Array<Scalars['String']['output']>;
1262
+ };
1263
+ export type GridUserPermissions = {
1264
+ __typename?: 'GridUserPermissions';
1265
+ appId: Scalars['BigInt']['output'];
1266
+ gridId: Scalars['BigInt']['output'];
1267
+ permissionKeys: Array<Scalars['String']['output']>;
1268
+ userId: Scalars['BigInt']['output'];
1269
+ };
1270
+ export type Group = {
1271
+ __typename?: 'Group';
1272
+ appId: Scalars['BigInt']['output'];
1273
+ createdAt: Scalars['DateTime']['output'];
1274
+ description: Maybe<Scalars['String']['output']>;
1275
+ groupId: Scalars['BigInt']['output'];
1276
+ groupType: Scalars['String']['output'];
1277
+ membershipPolicy: Scalars['String']['output'];
1278
+ name: Scalars['String']['output'];
1279
+ ownerUserId: Maybe<Scalars['BigInt']['output']>;
1280
+ status: Scalars['String']['output'];
1281
+ };
1282
+ export type GroupMember = {
1283
+ __typename?: 'GroupMember';
1284
+ createdAt: Scalars['DateTime']['output'];
1285
+ groupId: Scalars['BigInt']['output'];
1286
+ groupMemberId: Scalars['BigInt']['output'];
1287
+ roles: Array<GroupRole>;
1288
+ status: Scalars['String']['output'];
1289
+ userId: Scalars['BigInt']['output'];
1290
+ };
1291
+ export type GroupMembership = {
1292
+ __typename?: 'GroupMembership';
1293
+ group: Group;
1294
+ joinedAt: Scalars['DateTime']['output'];
1295
+ permissions: Array<Scalars['String']['output']>;
1296
+ roles: Array<GroupRole>;
1297
+ };
1298
+ export type GroupRole = {
1299
+ __typename?: 'GroupRole';
1300
+ createdAt: Scalars['DateTime']['output'];
1301
+ groupId: Scalars['BigInt']['output'];
1302
+ groupRoleId: Scalars['BigInt']['output'];
1303
+ isSystem: Scalars['Boolean']['output'];
1304
+ permissions: Array<Scalars['String']['output']>;
1305
+ rank: Scalars['Int']['output'];
1306
+ roleName: Scalars['String']['output'];
1307
+ };
1308
+ export type IngestEnvironmentVersionInput = {
1309
+ force?: Scalars['Boolean']['input'];
1310
+ notes?: InputMaybe<Scalars['String']['input']>;
1311
+ status?: InputMaybe<Scalars['String']['input']>;
1312
+ version: Scalars['String']['input'];
1313
+ };
603
1314
  export type InviteOrgMemberInput = {
604
1315
  orgId: Scalars['BigInt']['input'];
605
1316
  userId: Scalars['BigInt']['input'];
@@ -632,8 +1343,15 @@ export type LoginUserInput = {
632
1343
  };
633
1344
  export type Mutation = {
634
1345
  __typename?: 'Mutation';
1346
+ /** 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. */
1347
+ actorHeartbeat: Maybe<GameHost>;
1348
+ /** Add a user to a team or approve a pending request (manage_members). */
1349
+ addTeamMember: GroupMember;
635
1350
  archiveAccessTier: AppAccessTier;
636
1351
  archiveApp: App;
1352
+ assignGroupToGrid: Array<GridGroupGrant>;
1353
+ /** Captures an approved PayPal order after the hosted checkout redirects back. Wallet credit still reconciles through PayPal webhooks. */
1354
+ capturePaypalCheckout: Checkout;
637
1355
  changePassword: Scalars['Boolean']['output'];
638
1356
  confirmEmail: Scalars['Boolean']['output'];
639
1357
  /** 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. */
@@ -644,32 +1362,66 @@ export type Mutation = {
644
1362
  createAvatar: Avatar;
645
1363
  /** 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. */
646
1364
  createCheckout: Checkout;
1365
+ /** 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. */
1366
+ createEnvironment: CksEnvironmentDetail;
647
1367
  createGrid: CreateGridResponse;
648
1368
  createOrgRole: OrgRole;
649
1369
  /** Returns the plaintext token exactly once. Save it; subsequent queries only show metadata. */
650
1370
  createOrgToken: OrgTokenWithSecret;
651
1371
  createOrganization: Organization;
1372
+ /** Create a team. Allowed per the app team policy (admin | member | anyone). The creator becomes the owner with a system leader role. */
1373
+ createTeam: Group;
1374
+ /** Create a team role (manage_roles). */
1375
+ createTeamRole: GroupRole;
652
1376
  deleteActor: Actor;
653
1377
  deleteAvatar: Avatar;
1378
+ deleteCpSecret: Scalars['Boolean']['output'];
654
1379
  /** Soft-deletes the caller's account: anonymizes PII, revokes sessions. Wallet, voxel, and donation history stays intact via FK. */
655
1380
  deleteMyAccount: Scalars['Boolean']['output'];
656
1381
  deleteOrgRole: Scalars['Boolean']['output'];
657
1382
  deleteQuota: Scalars['Boolean']['output'];
1383
+ /** Delete a team (manage_group). */
1384
+ deleteTeam: Scalars['Boolean']['output'];
1385
+ /** Delete a non-system team role (manage_roles). */
1386
+ deleteTeamRole: Scalars['Boolean']['output'];
658
1387
  deleteUserAppState: UserAppState;
1388
+ destroyEnvironment: CksEnvironmentChangeOrder;
659
1389
  /** 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). */
660
1390
  disconnectUdpProxy: Scalars['Boolean']['output'];
661
1391
  forceLogoutUser: Scalars['Boolean']['output'];
662
1392
  grantAppAccess: AppUserAccess;
1393
+ grantGridPermissions: GridUserPermissions;
1394
+ ingestEnvironmentVersion: CpEnvironmentVersionRow;
663
1395
  inviteOrgMember: OrgMember;
1396
+ /** Join a team. Honors the team membership policy (open -> active, request -> pending, otherwise rejected). */
1397
+ joinTeam: GroupMember;
1398
+ /** Leave a team. */
1399
+ leaveTeam: Scalars['Boolean']['output'];
664
1400
  login: AuthResponse;
665
1401
  logout: Scalars['Boolean']['output'];
666
1402
  logoutAllDevices: Scalars['Boolean']['output'];
1403
+ publishEnvironmentReleaseFromGameApiTag: CpPublishEnvironmentReleaseResult;
1404
+ /** Permanently deletes a destroyed environment record from the platform. Cloud resources must already be torn down via destroyEnvironment. */
1405
+ purgeEnvironment: Scalars['Boolean']['output'];
1406
+ putCpEnvSecret: CpEnvSecretRow;
1407
+ putCpSecret: CpSecretRow;
1408
+ /** 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. */
1409
+ redeployEnvironment: CksEnvironmentChangeOrder;
667
1410
  register: AuthResponse;
668
1411
  removeOrgMember: Scalars['Boolean']['output'];
1412
+ /** Remove a member from a team (manage_members; members may remove themselves). */
1413
+ removeTeamMember: Scalars['Boolean']['output'];
669
1414
  requestPasswordReset: Scalars['Boolean']['output'];
1415
+ /** Request to join a request-only team (creates a pending membership a manager can approve). */
1416
+ requestToJoinTeam: GroupMember;
670
1417
  resendConfirmationEmail: Scalars['Boolean']['output'];
671
1418
  resetPassword: Scalars['Boolean']['output'];
1419
+ /** 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. */
1420
+ restartEnvironmentServices: CksEnvironmentChangeOrder;
1421
+ resumeEnvironment: CksEnvironmentChangeOrder;
672
1422
  revokeAppAccess: AppUserAccess;
1423
+ revokeGridPermissions: GridUserPermissions;
1424
+ revokeGroupFromGrid: Array<GridGroupGrant>;
673
1425
  revokeOrgToken: Scalars['Boolean']['output'];
674
1426
  /** 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. */
675
1427
  rollbackVoxelUpdates: Array<RollbackVoxelEventResult>;
@@ -679,6 +1431,8 @@ export type Mutation = {
679
1431
  sendAudioPacket: Scalars['Boolean']['output'];
680
1432
  /** Send a client event to the game server. Opens a UDP proxy session automatically if none exists; related notifications arrive on udpNotifications. */
681
1433
  sendClientEvent: Scalars['Boolean']['output'];
1434
+ /** 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. */
1435
+ sendSingleActorMessage: Scalars['Boolean']['output'];
682
1436
  /** Send a text (chat) packet to the game server. Opens a UDP proxy session automatically if none exists; notifications arrive on udpNotifications. */
683
1437
  sendTextPacket: Scalars['Boolean']['output'];
684
1438
  /** Send a voxel update to the game server. Opens a UDP proxy session automatically if none exists; responses arrive on udpNotifications. */
@@ -687,28 +1441,51 @@ export type Mutation = {
687
1441
  /** Super admin only. Used to take down or relist apps platform-wide. */
688
1442
  setAppVisibility: App;
689
1443
  setEarlyAccessOverride: User;
1444
+ setEnvironmentDeletionProtection: Scalars['Boolean']['output'];
1445
+ setGridPermissionLimits: GridPermissionLimits;
1446
+ /** Super-admin only. Flip users.is_operator to grant or revoke control-plane / operator access. */
1447
+ setOperator: User;
690
1448
  /** Super admin only. Used to freeze/unfreeze orgs platform-wide. */
691
1449
  setOrgStatus: Organization;
692
1450
  setQuota: ServiceQuota;
693
1451
  setSuperAdmin: User;
1452
+ /** Replace a member's roles (manage_roles). */
1453
+ setTeamMemberRoles: GroupMember;
1454
+ /** Set who may create teams in an app and the default membership policy for new teams (requires manage_apps). */
1455
+ setTeamPolicy: AppGroupPolicy;
694
1456
  teleportRequest: TeleportResponse;
695
1457
  updateAccessTier: AppAccessTier;
696
1458
  updateActor: Actor;
697
1459
  updateActorState: Actor;
698
1460
  updateApp: App;
699
1461
  updateAvatar: Avatar;
1462
+ /** Set an avatar's per-app state. Only the avatar's owner may write; all players can read it. */
1463
+ updateAvatarAppState: AppAvatarState;
700
1464
  updateAvatarState: Avatar;
701
1465
  updateChunk: Chunk;
702
1466
  updateChunkLods: Maybe<Chunk>;
703
1467
  updateChunkState: Maybe<Chunk>;
1468
+ updateEnvironmentScaling: CksEnvironmentChangeOrder;
704
1469
  updateGamertag: User;
705
1470
  updateOrgMemberRoles: OrgMember;
706
1471
  updateOrgRole: OrgRole;
707
1472
  updateOrgToken: OrgToken;
1473
+ /** Update team name/description/membership policy (manage_group). */
1474
+ updateTeam: Group;
1475
+ /** Update a team role (manage_roles). */
1476
+ updateTeamRole: GroupRole;
708
1477
  updateUserAppState: UserAppState;
709
1478
  updateUserState: User;
710
1479
  updateUserType: User;
711
1480
  updateVoxel: Voxel;
1481
+ yankEnvironmentVersion: Scalars['Boolean']['output'];
1482
+ };
1483
+ export type MutationActorHeartbeatArgs = {
1484
+ appId: Scalars['BigInt']['input'];
1485
+ };
1486
+ export type MutationAddTeamMemberArgs = {
1487
+ groupId: Scalars['BigInt']['input'];
1488
+ userId: Scalars['BigInt']['input'];
712
1489
  };
713
1490
  export type MutationArchiveAccessTierArgs = {
714
1491
  tierId: Scalars['BigInt']['input'];
@@ -716,6 +1493,12 @@ export type MutationArchiveAccessTierArgs = {
716
1493
  export type MutationArchiveAppArgs = {
717
1494
  appId: Scalars['BigInt']['input'];
718
1495
  };
1496
+ export type MutationAssignGroupToGridArgs = {
1497
+ input: AssignGroupToGridInput;
1498
+ };
1499
+ export type MutationCapturePaypalCheckoutArgs = {
1500
+ orderId: Scalars['String']['input'];
1501
+ };
719
1502
  export type MutationChangePasswordArgs = {
720
1503
  currentPassword: Scalars['String']['input'];
721
1504
  newPassword: Scalars['String']['input'];
@@ -723,9 +1506,6 @@ export type MutationChangePasswordArgs = {
723
1506
  export type MutationConfirmEmailArgs = {
724
1507
  token: Scalars['String']['input'];
725
1508
  };
726
- export type MutationConnectUdpProxyArgs = {
727
- input?: InputMaybe<ConnectUdpProxyInput>;
728
- };
729
1509
  export type MutationCreateAccessTierArgs = {
730
1510
  input: CreateAccessTierInput;
731
1511
  };
@@ -741,6 +1521,9 @@ export type MutationCreateAvatarArgs = {
741
1521
  export type MutationCreateCheckoutArgs = {
742
1522
  input: CreateCheckoutInput;
743
1523
  };
1524
+ export type MutationCreateEnvironmentArgs = {
1525
+ input: CreateEnvironmentInput;
1526
+ };
744
1527
  export type MutationCreateGridArgs = {
745
1528
  input: CreateGridInput;
746
1529
  };
@@ -753,33 +1536,85 @@ export type MutationCreateOrgTokenArgs = {
753
1536
  export type MutationCreateOrganizationArgs = {
754
1537
  input: CreateOrganizationInput;
755
1538
  };
1539
+ export type MutationCreateTeamArgs = {
1540
+ input: CreateTeamInput;
1541
+ };
1542
+ export type MutationCreateTeamRoleArgs = {
1543
+ input: CreateGroupRoleInput;
1544
+ };
756
1545
  export type MutationDeleteActorArgs = {
757
1546
  uuid: Scalars['String']['input'];
758
1547
  };
759
1548
  export type MutationDeleteAvatarArgs = {
760
1549
  id: Scalars['BigInt']['input'];
761
1550
  };
1551
+ export type MutationDeleteCpSecretArgs = {
1552
+ environmentId: Scalars['String']['input'];
1553
+ name: Scalars['String']['input'];
1554
+ };
762
1555
  export type MutationDeleteOrgRoleArgs = {
763
1556
  orgRoleId: Scalars['BigInt']['input'];
764
1557
  };
765
1558
  export type MutationDeleteQuotaArgs = {
766
1559
  quotaId: Scalars['BigInt']['input'];
767
1560
  };
1561
+ export type MutationDeleteTeamArgs = {
1562
+ groupId: Scalars['BigInt']['input'];
1563
+ };
1564
+ export type MutationDeleteTeamRoleArgs = {
1565
+ groupRoleId: Scalars['BigInt']['input'];
1566
+ };
768
1567
  export type MutationDeleteUserAppStateArgs = {
769
1568
  appId: Scalars['BigInt']['input'];
770
1569
  };
1570
+ export type MutationDestroyEnvironmentArgs = {
1571
+ input: DestroyEnvironmentInput;
1572
+ };
771
1573
  export type MutationForceLogoutUserArgs = {
772
1574
  userId: Scalars['BigInt']['input'];
773
1575
  };
774
1576
  export type MutationGrantAppAccessArgs = {
775
1577
  input: GrantAppAccessInput;
776
1578
  };
1579
+ export type MutationGrantGridPermissionsArgs = {
1580
+ input: GrantGridPermissionsInput;
1581
+ };
1582
+ export type MutationIngestEnvironmentVersionArgs = {
1583
+ input: IngestEnvironmentVersionInput;
1584
+ };
777
1585
  export type MutationInviteOrgMemberArgs = {
778
1586
  input: InviteOrgMemberInput;
779
1587
  };
1588
+ export type MutationJoinTeamArgs = {
1589
+ groupId: Scalars['BigInt']['input'];
1590
+ };
1591
+ export type MutationLeaveTeamArgs = {
1592
+ groupId: Scalars['BigInt']['input'];
1593
+ };
780
1594
  export type MutationLoginArgs = {
781
1595
  loginUserInput: LoginUserInput;
782
1596
  };
1597
+ export type MutationPublishEnvironmentReleaseFromGameApiTagArgs = {
1598
+ input: PublishEnvironmentReleaseFromGameApiTagInput;
1599
+ };
1600
+ export type MutationPurgeEnvironmentArgs = {
1601
+ input: PurgeEnvironmentInput;
1602
+ };
1603
+ export type MutationPutCpEnvSecretArgs = {
1604
+ environmentId: Scalars['String']['input'];
1605
+ kind?: InputMaybe<Scalars['String']['input']>;
1606
+ name: Scalars['String']['input'];
1607
+ plaintext: Scalars['String']['input'];
1608
+ };
1609
+ export type MutationPutCpSecretArgs = {
1610
+ environmentId: Scalars['String']['input'];
1611
+ kind?: InputMaybe<Scalars['String']['input']>;
1612
+ name: Scalars['String']['input'];
1613
+ plaintext: Scalars['String']['input'];
1614
+ };
1615
+ export type MutationRedeployEnvironmentArgs = {
1616
+ input: RedeployEnvironmentInput;
1617
+ };
783
1618
  export type MutationRegisterArgs = {
784
1619
  registerUserInput: RegisterUserInput;
785
1620
  };
@@ -787,19 +1622,38 @@ export type MutationRemoveOrgMemberArgs = {
787
1622
  orgId: Scalars['BigInt']['input'];
788
1623
  userId: Scalars['BigInt']['input'];
789
1624
  };
1625
+ export type MutationRemoveTeamMemberArgs = {
1626
+ groupId: Scalars['BigInt']['input'];
1627
+ userId: Scalars['BigInt']['input'];
1628
+ };
790
1629
  export type MutationRequestPasswordResetArgs = {
791
1630
  email: Scalars['String']['input'];
792
1631
  };
1632
+ export type MutationRequestToJoinTeamArgs = {
1633
+ groupId: Scalars['BigInt']['input'];
1634
+ };
793
1635
  export type MutationResendConfirmationEmailArgs = {
794
1636
  email: Scalars['String']['input'];
795
1637
  };
796
1638
  export type MutationResetPasswordArgs = {
797
1639
  resetPasswordInput: ResetPasswordInput;
798
1640
  };
1641
+ export type MutationRestartEnvironmentServicesArgs = {
1642
+ input: RestartEnvironmentServicesInput;
1643
+ };
1644
+ export type MutationResumeEnvironmentArgs = {
1645
+ input: ResumeEnvironmentInput;
1646
+ };
799
1647
  export type MutationRevokeAppAccessArgs = {
800
1648
  appId: Scalars['BigInt']['input'];
801
1649
  userId: Scalars['BigInt']['input'];
802
1650
  };
1651
+ export type MutationRevokeGridPermissionsArgs = {
1652
+ input: RevokeGridPermissionsInput;
1653
+ };
1654
+ export type MutationRevokeGroupFromGridArgs = {
1655
+ input: RevokeGroupFromGridInput;
1656
+ };
803
1657
  export type MutationRevokeOrgTokenArgs = {
804
1658
  orgTokenId: Scalars['BigInt']['input'];
805
1659
  };
@@ -815,6 +1669,9 @@ export type MutationSendAudioPacketArgs = {
815
1669
  export type MutationSendClientEventArgs = {
816
1670
  input: ClientEventNotificationInput;
817
1671
  };
1672
+ export type MutationSendSingleActorMessageArgs = {
1673
+ input: SingleActorMessageInput;
1674
+ };
818
1675
  export type MutationSendTextPacketArgs = {
819
1676
  input: ClientTextPacketInput;
820
1677
  };
@@ -834,6 +1691,17 @@ export type MutationSetEarlyAccessOverrideArgs = {
834
1691
  userId: Scalars['BigInt']['input'];
835
1692
  value: Scalars['Boolean']['input'];
836
1693
  };
1694
+ export type MutationSetEnvironmentDeletionProtectionArgs = {
1695
+ enabled: Scalars['Boolean']['input'];
1696
+ environmentId: Scalars['String']['input'];
1697
+ };
1698
+ export type MutationSetGridPermissionLimitsArgs = {
1699
+ input: SetGridPermissionLimitsInput;
1700
+ };
1701
+ export type MutationSetOperatorArgs = {
1702
+ userId: Scalars['BigInt']['input'];
1703
+ value: Scalars['Boolean']['input'];
1704
+ };
837
1705
  export type MutationSetOrgStatusArgs = {
838
1706
  orgId: Scalars['BigInt']['input'];
839
1707
  status: Scalars['String']['input'];
@@ -845,6 +1713,12 @@ export type MutationSetSuperAdminArgs = {
845
1713
  userId: Scalars['BigInt']['input'];
846
1714
  value: Scalars['Boolean']['input'];
847
1715
  };
1716
+ export type MutationSetTeamMemberRolesArgs = {
1717
+ input: SetMemberRolesInput;
1718
+ };
1719
+ export type MutationSetTeamPolicyArgs = {
1720
+ input: SetTeamPolicyInput;
1721
+ };
848
1722
  export type MutationTeleportRequestArgs = {
849
1723
  input: TeleportRequestInput;
850
1724
  };
@@ -868,6 +1742,9 @@ export type MutationUpdateAvatarArgs = {
868
1742
  id: Scalars['BigInt']['input'];
869
1743
  input: UpdateAvatarInput;
870
1744
  };
1745
+ export type MutationUpdateAvatarAppStateArgs = {
1746
+ input: UpdateAvatarAppStateInput;
1747
+ };
871
1748
  export type MutationUpdateAvatarStateArgs = {
872
1749
  id: Scalars['BigInt']['input'];
873
1750
  input: UpdateAvatarStateInput;
@@ -881,6 +1758,9 @@ export type MutationUpdateChunkLodsArgs = {
881
1758
  export type MutationUpdateChunkStateArgs = {
882
1759
  input: UpdateChunkStateInput;
883
1760
  };
1761
+ export type MutationUpdateEnvironmentScalingArgs = {
1762
+ input: UpdateEnvironmentScalingInput;
1763
+ };
884
1764
  export type MutationUpdateGamertagArgs = {
885
1765
  input: UpdateGamertagInput;
886
1766
  };
@@ -897,6 +1777,12 @@ export type MutationUpdateOrgTokenArgs = {
897
1777
  input: UpdateOrgTokenInput;
898
1778
  orgTokenId: Scalars['BigInt']['input'];
899
1779
  };
1780
+ export type MutationUpdateTeamArgs = {
1781
+ input: UpdateTeamInput;
1782
+ };
1783
+ export type MutationUpdateTeamRoleArgs = {
1784
+ input: UpdateGroupRoleInput;
1785
+ };
900
1786
  export type MutationUpdateUserAppStateArgs = {
901
1787
  input: CreateUserAppStateInput;
902
1788
  };
@@ -910,6 +1796,24 @@ export type MutationUpdateUserTypeArgs = {
910
1796
  export type MutationUpdateVoxelArgs = {
911
1797
  input: UpdateVoxelInput;
912
1798
  };
1799
+ export type MutationYankEnvironmentVersionArgs = {
1800
+ version: Scalars['String']['input'];
1801
+ };
1802
+ export type NearbyGridPermissions = {
1803
+ __typename?: 'NearbyGridPermissions';
1804
+ appId: Scalars['BigInt']['output'];
1805
+ gridId: Scalars['BigInt']['output'];
1806
+ highChunk: ChunkCoordinates;
1807
+ lowChunk: ChunkCoordinates;
1808
+ permissionKeys: Array<Scalars['String']['output']>;
1809
+ userId: Scalars['BigInt']['output'];
1810
+ };
1811
+ export type NearbyGridPermissionsInput = {
1812
+ appId: Scalars['BigInt']['input'];
1813
+ highChunk: ChunkCoordinatesInput;
1814
+ lowChunk: ChunkCoordinatesInput;
1815
+ userId: Scalars['BigInt']['input'];
1816
+ };
913
1817
  export type OrgMember = {
914
1818
  __typename?: 'OrgMember';
915
1819
  createdAt: Scalars['DateTime']['output'];
@@ -946,8 +1850,10 @@ export type OrgRole = {
946
1850
  export type OrgToken = {
947
1851
  __typename?: 'OrgToken';
948
1852
  createdAt: Scalars['DateTime']['output'];
1853
+ environmentId: Maybe<Scalars['String']['output']>;
949
1854
  expiresAt: Maybe<Scalars['DateTime']['output']>;
950
1855
  isActive: Scalars['Boolean']['output'];
1856
+ kind: Scalars['String']['output'];
951
1857
  label: Maybe<Scalars['String']['output']>;
952
1858
  lastUsedAt: Maybe<Scalars['DateTime']['output']>;
953
1859
  orgId: Scalars['BigInt']['output'];
@@ -992,11 +1898,37 @@ export type PageInfo = {
992
1898
  offset: Scalars['Int']['output'];
993
1899
  totalCount: Scalars['Int']['output'];
994
1900
  };
1901
+ export type PaymentEventRecord = {
1902
+ __typename?: 'PaymentEventRecord';
1903
+ checkoutId: Maybe<Scalars['BigInt']['output']>;
1904
+ createdAt: Scalars['DateTime']['output'];
1905
+ error: Maybe<Scalars['String']['output']>;
1906
+ eventId: Scalars['BigInt']['output'];
1907
+ eventType: Scalars['String']['output'];
1908
+ externalEventId: Scalars['String']['output'];
1909
+ processedAt: Maybe<Scalars['DateTime']['output']>;
1910
+ provider: PaymentProvider;
1911
+ };
1912
+ export type PaymentEventsPage = {
1913
+ __typename?: 'PaymentEventsPage';
1914
+ items: Array<PaymentEventRecord>;
1915
+ pageInfo: PageInfo;
1916
+ };
995
1917
  /** External payment processor for a checkout. */
996
1918
  export declare enum PaymentProvider {
997
1919
  Paypal = "PAYPAL",
998
1920
  Stripe = "STRIPE"
999
1921
  }
1922
+ export type PublishEnvironmentReleaseFromGameApiTagInput = {
1923
+ /** Overwrite an existing environment version row if it already exists. */
1924
+ force?: Scalars['Boolean']['input'];
1925
+ /** cks-game-api semver tag (e.g. v0.6.20). */
1926
+ gameApiTag: Scalars['String']['input'];
1927
+ };
1928
+ export type PurgeEnvironmentInput = {
1929
+ orgId: Scalars['BigInt']['input'];
1930
+ slug: Scalars['String']['input'];
1931
+ };
1000
1932
  export type Query = {
1001
1933
  __typename?: 'Query';
1002
1934
  /** Returns only active (ReadyForClients) GraphQL servers */
@@ -1009,23 +1941,60 @@ export type Query = {
1009
1941
  appBudget: Maybe<AppBudget>;
1010
1942
  appBudgets: Array<AppBudget>;
1011
1943
  appBySlug: Maybe<App>;
1944
+ /** Top GraphQL operations by bytes for an app in the time range. */
1945
+ appGraphqlOperations: Array<GraphqlOperationUsageRow>;
1946
+ /** Replication and GraphQL totals plus top operations for one app. */
1947
+ appUsageSummary: AppUsageSummary;
1012
1948
  appUserAccessByApp: Array<AppUserAccess>;
1013
1949
  /** Public marketplace listing. Returns visibility=PUBLIC + status=LIVE only. No auth required. */
1014
1950
  apps: AppsPage;
1015
1951
  appsForOrg: Array<App>;
1016
1952
  avatar: Avatar;
1953
+ /** Read one avatar's per-app state (public to all players). */
1954
+ avatarAppState: Maybe<AppAvatarState>;
1955
+ /** Batch-read per-app state for many avatars (public to all players). */
1956
+ avatarAppStates: Array<AppAvatarState>;
1017
1957
  batchLookupActors: Array<Actor>;
1018
1958
  /** Super admin only. Cross-tenant payments audit. */
1019
1959
  checkouts: CheckoutsPage;
1960
+ cpAudit: Array<CpAuditEntry>;
1961
+ cpChangeOrder: Maybe<CpChangeOrderDetail>;
1962
+ cpChangeOrders: CpChangeOrdersPage;
1963
+ cpEnvSecrets: Array<CpEnvSecretRow>;
1964
+ cpEnvironment: Maybe<CpAdminEnvironment>;
1965
+ cpEnvironmentVersions: CpEnvironmentVersionsPage;
1966
+ cpEnvironments: CpAdminEnvironmentsPage;
1967
+ cpOvhCatalogSummary: Array<CpOvhCatalogRow>;
1968
+ cpSecrets: Array<CpSecretRow>;
1969
+ cpUnreleasedGameApiTags: CpUnreleasedGameApiTagsPage;
1970
+ cpUsageSummary: CpUsageSummary;
1020
1971
  /** The most-specific quota that applies to (orgId, appId, tierId, metric). Walks tier -> app -> org -> free_tier_defaults. Returns null if nothing matches. */
1021
1972
  effectiveQuota: Maybe<ServiceQuota>;
1973
+ /** OVH datacenters that have at least one customer-priced instance flavor available for customer selection. */
1974
+ environmentDatacenters: Array<CksOvhDatacenter>;
1975
+ /** Customer-selectable instance flavors in the datacenter with current availability and customer pricing. */
1976
+ environmentFlavors: Array<CksOvhFlavor>;
1977
+ /** Pricing quote for the selected flavors. Fails if any flavor is unavailable, hidden, or lacks customer pricing. */
1978
+ environmentQuote: CksEnvironmentQuote;
1979
+ /** Per-app usage totals for apps linked to an environment. */
1980
+ environmentUsageByApp: Array<AppUsageRollupRow>;
1981
+ /** Per-minute replication and GraphQL usage for apps linked to an environment. Observability only. */
1982
+ environmentUsageSummary: EnvironmentUsageSummary;
1983
+ environmentVersions: Array<CksEnvironmentVersion>;
1022
1984
  freePlayWindowInfo: FreePlayWindowInfo;
1985
+ /** Single startup payload for browser game clients: current user, version requirements, UDP proxy status, realtime protocol details, and spatial send limits. */
1986
+ gameClientBootstrap: GameClientBootstrap;
1987
+ /** 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. */
1988
+ gameHost: Maybe<GameHost>;
1023
1989
  getChunk: Maybe<Chunk>;
1024
1990
  getChunkLods: Maybe<ChunkLodsResponse>;
1025
1991
  getChunksByDistance: ChunksByDistanceResponse;
1026
1992
  getVoxelList: ChunkVoxelResponse;
1027
1993
  /** Returns all registered GraphQL servers */
1028
1994
  graphqlServers: Array<GraphQlServer>;
1995
+ gridGroupGrants: Array<GridGroupGrant>;
1996
+ gridPermissionLimits: GridPermissionLimits;
1997
+ gridUserPermissions: GridUserPermissions;
1029
1998
  listVoxelUpdatesByDistance: VoxelUpdatesByDistanceResponse;
1030
1999
  listVoxels: Array<Voxel>;
1031
2000
  me: Maybe<User>;
@@ -1038,22 +2007,45 @@ export type Query = {
1038
2007
  myDonationData: UserDonationData;
1039
2008
  myOrganizations: Array<OrgMembership>;
1040
2009
  myPropertyTokens: UserPropertyTokenData;
2010
+ /** The caller's teams in an app, with their roles and effective team permissions. */
2011
+ myTeams: Array<GroupMembership>;
2012
+ nearbyGridPermissions: Array<NearbyGridPermissions>;
2013
+ operatorUsers: Array<CpOperatorUser>;
2014
+ orgEnvironment: Maybe<CksEnvironmentDetail>;
2015
+ orgEnvironments: Array<CksEnvironment>;
1041
2016
  orgMembers: Array<OrgMember>;
1042
2017
  /** The full seed list of permission keys. Used by the UI to render role editors. */
1043
2018
  orgPermissions: Array<OrgPermission>;
1044
2019
  orgRoles: Array<OrgRole>;
1045
2020
  orgTokens: Array<OrgToken>;
2021
+ /** Aggregate usage totals per environment in an organization. */
2022
+ orgUsageByEnvironment: Array<EnvironmentUsageRollupRow>;
1046
2023
  organization: Maybe<Organization>;
1047
2024
  organizationBySlug: Maybe<Organization>;
2025
+ /** Super admin only. Inbound payment webhook audit log. */
2026
+ paymentEvents: PaymentEventsPage;
1048
2027
  quotasForApp: Array<ServiceQuota>;
1049
2028
  quotasForOrg: Array<ServiceQuota>;
2029
+ /** Runtime permission keys that can be granted through app tiers or grid permissions. */
2030
+ runtimePermissions: Array<Scalars['String']['output']>;
1050
2031
  /** Returns a random server from the lowest 20% of servers by client count to distribute load evenly */
1051
2032
  serverWithLeastClients: ServerStatus;
2033
+ /** Fetch one team by id. */
2034
+ team: Group;
2035
+ /** List the members of a team. */
2036
+ teamMembers: Array<GroupMember>;
2037
+ /** The current team creation/membership policy for an app. */
2038
+ teamPolicy: AppGroupPolicy;
2039
+ /** List the roles of a team. */
2040
+ teamRoles: Array<GroupRole>;
2041
+ /** List active teams in an app. */
2042
+ teams: Array<Group>;
1052
2043
  /** 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. */
1053
2044
  udpProxyConnectionStatus: UdpProxyConnectionStatus;
1054
2045
  user: Maybe<User>;
1055
2046
  userAppState: Maybe<UserAppState>;
1056
2047
  userAppStates: Array<UserAppState>;
2048
+ /** Avatars owned by a user. Non-owners receive public state only (private_state is stripped). */
1057
2049
  userAvatars: Array<Avatar>;
1058
2050
  /** 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. */
1059
2051
  usersPaginated: UsersPage;
@@ -1086,6 +2078,18 @@ export type QueryAppBySlugArgs = {
1086
2078
  appSlug: Scalars['String']['input'];
1087
2079
  orgSlug: Scalars['String']['input'];
1088
2080
  };
2081
+ export type QueryAppGraphqlOperationsArgs = {
2082
+ appId: Scalars['BigInt']['input'];
2083
+ limit?: InputMaybe<Scalars['Int']['input']>;
2084
+ orgId: Scalars['BigInt']['input'];
2085
+ since: Scalars['DateTime']['input'];
2086
+ };
2087
+ export type QueryAppUsageSummaryArgs = {
2088
+ appId: Scalars['BigInt']['input'];
2089
+ operationLimit?: InputMaybe<Scalars['Int']['input']>;
2090
+ orgId: Scalars['BigInt']['input'];
2091
+ since: Scalars['DateTime']['input'];
2092
+ };
1089
2093
  export type QueryAppUserAccessByAppArgs = {
1090
2094
  appId: Scalars['BigInt']['input'];
1091
2095
  limit?: InputMaybe<Scalars['Int']['input']>;
@@ -1103,6 +2107,14 @@ export type QueryAppsForOrgArgs = {
1103
2107
  export type QueryAvatarArgs = {
1104
2108
  id: Scalars['BigInt']['input'];
1105
2109
  };
2110
+ export type QueryAvatarAppStateArgs = {
2111
+ appId: Scalars['BigInt']['input'];
2112
+ avatarId: Scalars['BigInt']['input'];
2113
+ };
2114
+ export type QueryAvatarAppStatesArgs = {
2115
+ appId: Scalars['BigInt']['input'];
2116
+ avatarIds: Array<Scalars['BigInt']['input']>;
2117
+ };
1106
2118
  export type QueryBatchLookupActorsArgs = {
1107
2119
  input: BatchActorLookupInput;
1108
2120
  };
@@ -1111,12 +2123,66 @@ export type QueryCheckoutsArgs = {
1111
2123
  limit?: InputMaybe<Scalars['Int']['input']>;
1112
2124
  offset?: InputMaybe<Scalars['Int']['input']>;
1113
2125
  };
2126
+ export type QueryCpAuditArgs = {
2127
+ environmentId?: InputMaybe<Scalars['String']['input']>;
2128
+ limit?: Scalars['Int']['input'];
2129
+ };
2130
+ export type QueryCpChangeOrderArgs = {
2131
+ id: Scalars['String']['input'];
2132
+ };
2133
+ export type QueryCpChangeOrdersArgs = {
2134
+ environmentId?: InputMaybe<Scalars['String']['input']>;
2135
+ page?: Scalars['Int']['input'];
2136
+ pageSize?: Scalars['Int']['input'];
2137
+ };
2138
+ export type QueryCpEnvSecretsArgs = {
2139
+ environmentId?: InputMaybe<Scalars['String']['input']>;
2140
+ };
2141
+ export type QueryCpEnvironmentArgs = {
2142
+ slug: Scalars['String']['input'];
2143
+ };
2144
+ export type QueryCpEnvironmentsArgs = {
2145
+ page?: Scalars['Int']['input'];
2146
+ pageSize?: Scalars['Int']['input'];
2147
+ };
2148
+ export type QueryCpOvhCatalogSummaryArgs = {
2149
+ region?: InputMaybe<Scalars['String']['input']>;
2150
+ };
2151
+ export type QueryCpSecretsArgs = {
2152
+ environmentId?: InputMaybe<Scalars['String']['input']>;
2153
+ };
2154
+ export type QueryCpUsageSummaryArgs = {
2155
+ environmentSlug: Scalars['String']['input'];
2156
+ since: Scalars['DateTime']['input'];
2157
+ };
1114
2158
  export type QueryEffectiveQuotaArgs = {
1115
2159
  appId?: InputMaybe<Scalars['BigInt']['input']>;
1116
2160
  metric: Scalars['String']['input'];
1117
2161
  orgId?: InputMaybe<Scalars['BigInt']['input']>;
1118
2162
  tierId?: InputMaybe<Scalars['BigInt']['input']>;
1119
2163
  };
2164
+ export type QueryEnvironmentFlavorsArgs = {
2165
+ datacenter: Scalars['String']['input'];
2166
+ };
2167
+ export type QueryEnvironmentQuoteArgs = {
2168
+ input: EnvironmentQuoteInput;
2169
+ };
2170
+ export type QueryEnvironmentUsageByAppArgs = {
2171
+ environmentSlug: Scalars['String']['input'];
2172
+ orgId: Scalars['BigInt']['input'];
2173
+ since: Scalars['DateTime']['input'];
2174
+ };
2175
+ export type QueryEnvironmentUsageSummaryArgs = {
2176
+ environmentSlug: Scalars['String']['input'];
2177
+ orgId: Scalars['BigInt']['input'];
2178
+ since: Scalars['DateTime']['input'];
2179
+ };
2180
+ export type QueryGameClientBootstrapArgs = {
2181
+ appId: Scalars['BigInt']['input'];
2182
+ };
2183
+ export type QueryGameHostArgs = {
2184
+ appId: Scalars['BigInt']['input'];
2185
+ };
1120
2186
  export type QueryGetChunkArgs = {
1121
2187
  input: GetChunkInput;
1122
2188
  };
@@ -1129,6 +2195,20 @@ export type QueryGetChunksByDistanceArgs = {
1129
2195
  export type QueryGetVoxelListArgs = {
1130
2196
  input: GetVoxelListInput;
1131
2197
  };
2198
+ export type QueryGridGroupGrantsArgs = {
2199
+ appId: Scalars['BigInt']['input'];
2200
+ gridId: Scalars['BigInt']['input'];
2201
+ groupId: Scalars['BigInt']['input'];
2202
+ };
2203
+ export type QueryGridPermissionLimitsArgs = {
2204
+ appId: Scalars['BigInt']['input'];
2205
+ gridId: Scalars['BigInt']['input'];
2206
+ };
2207
+ export type QueryGridUserPermissionsArgs = {
2208
+ appId: Scalars['BigInt']['input'];
2209
+ gridId: Scalars['BigInt']['input'];
2210
+ userId: Scalars['BigInt']['input'];
2211
+ };
1132
2212
  export type QueryListVoxelUpdatesByDistanceArgs = {
1133
2213
  input: ListVoxelUpdatesByDistanceInput;
1134
2214
  };
@@ -1145,6 +2225,19 @@ export type QueryMyCheckoutsArgs = {
1145
2225
  limit?: InputMaybe<Scalars['Int']['input']>;
1146
2226
  offset?: InputMaybe<Scalars['Int']['input']>;
1147
2227
  };
2228
+ export type QueryMyTeamsArgs = {
2229
+ appId: Scalars['BigInt']['input'];
2230
+ };
2231
+ export type QueryNearbyGridPermissionsArgs = {
2232
+ input: NearbyGridPermissionsInput;
2233
+ };
2234
+ export type QueryOrgEnvironmentArgs = {
2235
+ orgId: Scalars['BigInt']['input'];
2236
+ slug: Scalars['String']['input'];
2237
+ };
2238
+ export type QueryOrgEnvironmentsArgs = {
2239
+ orgId: Scalars['BigInt']['input'];
2240
+ };
1148
2241
  export type QueryOrgMembersArgs = {
1149
2242
  orgId: Scalars['BigInt']['input'];
1150
2243
  };
@@ -1154,18 +2247,41 @@ export type QueryOrgRolesArgs = {
1154
2247
  export type QueryOrgTokensArgs = {
1155
2248
  orgId: Scalars['BigInt']['input'];
1156
2249
  };
2250
+ export type QueryOrgUsageByEnvironmentArgs = {
2251
+ orgId: Scalars['BigInt']['input'];
2252
+ since: Scalars['DateTime']['input'];
2253
+ };
1157
2254
  export type QueryOrganizationArgs = {
1158
2255
  id: Scalars['BigInt']['input'];
1159
2256
  };
1160
2257
  export type QueryOrganizationBySlugArgs = {
1161
2258
  slug: Scalars['String']['input'];
1162
2259
  };
2260
+ export type QueryPaymentEventsArgs = {
2261
+ limit?: InputMaybe<Scalars['Int']['input']>;
2262
+ offset?: InputMaybe<Scalars['Int']['input']>;
2263
+ };
1163
2264
  export type QueryQuotasForAppArgs = {
1164
2265
  appId: Scalars['BigInt']['input'];
1165
2266
  };
1166
2267
  export type QueryQuotasForOrgArgs = {
1167
2268
  orgId: Scalars['BigInt']['input'];
1168
2269
  };
2270
+ export type QueryTeamArgs = {
2271
+ groupId: Scalars['BigInt']['input'];
2272
+ };
2273
+ export type QueryTeamMembersArgs = {
2274
+ groupId: Scalars['BigInt']['input'];
2275
+ };
2276
+ export type QueryTeamPolicyArgs = {
2277
+ appId: Scalars['BigInt']['input'];
2278
+ };
2279
+ export type QueryTeamRolesArgs = {
2280
+ groupId: Scalars['BigInt']['input'];
2281
+ };
2282
+ export type QueryTeamsArgs = {
2283
+ appId: Scalars['BigInt']['input'];
2284
+ };
1169
2285
  export type QueryUserArgs = {
1170
2286
  id: Scalars['BigInt']['input'];
1171
2287
  };
@@ -1196,6 +2312,24 @@ export type QueryWalletTransactionsArgs = {
1196
2312
  offset?: InputMaybe<Scalars['Int']['input']>;
1197
2313
  orgId: Scalars['BigInt']['input'];
1198
2314
  };
2315
+ /** SDK-facing realtime lifecycle event emitted on udpNotifications when the subscription cannot open a UDP proxy session. */
2316
+ export type RealtimeConnectionEvent = {
2317
+ __typename?: 'RealtimeConnectionEvent';
2318
+ code: Scalars['String']['output'];
2319
+ message: Scalars['String']['output'];
2320
+ retryable: Scalars['Boolean']['output'];
2321
+ status: Scalars['String']['output'];
2322
+ };
2323
+ /** full = replace VMs. services = update in place on existing runtime servers. Omit for automatic routing. */
2324
+ export declare enum RedeployDeployMode {
2325
+ Full = "FULL",
2326
+ Services = "SERVICES"
2327
+ }
2328
+ export type RedeployEnvironmentInput = {
2329
+ deployMode?: InputMaybe<RedeployDeployMode>;
2330
+ orgId: Scalars['BigInt']['input'];
2331
+ slug: Scalars['String']['input'];
2332
+ };
1199
2333
  export type RegisterUserInput = {
1200
2334
  email: Scalars['String']['input'];
1201
2335
  gamertag?: InputMaybe<Scalars['String']['input']>;
@@ -1205,6 +2339,28 @@ export type ResetPasswordInput = {
1205
2339
  newPassword: Scalars['String']['input'];
1206
2340
  token: Scalars['String']['input'];
1207
2341
  };
2342
+ export type RestartEnvironmentServicesInput = {
2343
+ orgId: Scalars['BigInt']['input'];
2344
+ slug: Scalars['String']['input'];
2345
+ };
2346
+ export type ResumeEnvironmentInput = {
2347
+ orgId: Scalars['BigInt']['input'];
2348
+ slug: Scalars['String']['input'];
2349
+ };
2350
+ export type RevokeGridPermissionsInput = {
2351
+ appId: Scalars['BigInt']['input'];
2352
+ gridId: Scalars['BigInt']['input'];
2353
+ permissionKeys?: InputMaybe<Array<Scalars['String']['input']>>;
2354
+ userId: Scalars['BigInt']['input'];
2355
+ };
2356
+ export type RevokeGroupFromGridInput = {
2357
+ appId: Scalars['BigInt']['input'];
2358
+ gridId: Scalars['BigInt']['input'];
2359
+ groupId: Scalars['BigInt']['input'];
2360
+ groupRoleId?: InputMaybe<Scalars['BigInt']['input']>;
2361
+ /** Optional subset of keys to revoke. Omit to revoke all of the group/role grants on this grid. */
2362
+ permissionKeys?: InputMaybe<Array<Scalars['String']['input']>>;
2363
+ };
1208
2364
  export type RollbackVoxelEventResult = {
1209
2365
  __typename?: 'RollbackVoxelEventResult';
1210
2366
  appId: Scalars['BigInt']['output'];
@@ -1298,6 +2454,17 @@ export type ServiceQuota = {
1298
2454
  tierId: Maybe<Scalars['BigInt']['output']>;
1299
2455
  updatedAt: Scalars['DateTime']['output'];
1300
2456
  };
2457
+ export type SetGridPermissionLimitsInput = {
2458
+ appId: Scalars['BigInt']['input'];
2459
+ gridId: Scalars['BigInt']['input'];
2460
+ /** The whitelist of permission keys allowed on this grid. Empty array removes all limits (every active grid permission becomes grantable again). */
2461
+ permissionKeys: Array<Scalars['String']['input']>;
2462
+ };
2463
+ export type SetMemberRolesInput = {
2464
+ groupId: Scalars['BigInt']['input'];
2465
+ roleIds: Array<Scalars['BigInt']['input']>;
2466
+ userId: Scalars['BigInt']['input'];
2467
+ };
1301
2468
  export type SetQuotaInput = {
1302
2469
  actionOnExceed?: InputMaybe<Scalars['String']['input']>;
1303
2470
  appId?: InputMaybe<Scalars['BigInt']['input']>;
@@ -1307,15 +2474,57 @@ export type SetQuotaInput = {
1307
2474
  period?: InputMaybe<Scalars['String']['input']>;
1308
2475
  tierId?: InputMaybe<Scalars['BigInt']['input']>;
1309
2476
  };
2477
+ export type SetTeamPolicyInput = {
2478
+ appId: Scalars['BigInt']['input'];
2479
+ /** admin | member | anyone. Who may create teams in this app. */
2480
+ creationPolicy?: InputMaybe<Scalars['String']['input']>;
2481
+ /** open | request | invite | admin. Default membership policy for new teams. */
2482
+ defaultMembershipPolicy?: InputMaybe<Scalars['String']['input']>;
2483
+ maxGroupsPerUser?: InputMaybe<Scalars['Int']['input']>;
2484
+ maxMembers?: InputMaybe<Scalars['Int']['input']>;
2485
+ };
2486
+ /** 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. */
2487
+ export type SingleActorMessageInput = {
2488
+ /** The ID of the app the destination actor belongs to. */
2489
+ appId: Scalars['BigInt']['input'];
2490
+ /** The chunk coordinates of the DESTINATION actor (where the target currently is). The sender must know this. */
2491
+ chunk: ChunkCoordinatesInput;
2492
+ /** The message payload, base64-encoded. Opaque to the server; the sender’s identity (if needed) must be embedded here by the application. */
2493
+ payload: Scalars['String']['input'];
2494
+ /** Client's sequence number for this message (0-255, wraps). Used to match error responses. */
2495
+ sequenceNumber?: InputMaybe<Scalars['Int']['input']>;
2496
+ /** 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. */
2497
+ targetUuid: Scalars['String']['input'];
2498
+ };
2499
+ /** 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. */
2500
+ export type SingleActorMessageNotification = {
2501
+ __typename?: 'SingleActorMessageNotification';
2502
+ /** The ID of the app the message was sent within. */
2503
+ appId: Scalars['BigInt']['output'];
2504
+ /** The X coordinate of the destination chunk. */
2505
+ chunkX: Scalars['BigInt']['output'];
2506
+ /** The Y coordinate of the destination chunk. */
2507
+ chunkY: Scalars['BigInt']['output'];
2508
+ /** The Z coordinate of the destination chunk. */
2509
+ chunkZ: Scalars['BigInt']['output'];
2510
+ /** Server-generated epoch milliseconds timestamp. */
2511
+ epochMillis: Scalars['BigInt']['output'];
2512
+ /** The message payload, base64-encoded. Opaque to the server; decode per your application protocol. */
2513
+ payload: Scalars['String']['output'];
2514
+ /** The sender's sequence number for this message (0-255). */
2515
+ sequenceNumber: Scalars['Int']['output'];
2516
+ /** The destination actor’s UUID (your own actor’s UUID, echoed from the message). */
2517
+ uuid: Scalars['String']['output'];
2518
+ };
1310
2519
  export type Subscription = {
1311
2520
  __typename?: 'Subscription';
1312
- /** Downlink from the game server (responses, notifications, GenericErrorResponse). On subscribe, opens a UDP proxy session if none exists (least-loaded server). Requires a game token—without one, yields a single null then ends. Connection failures may yield null. Unsubscribing stops delivery only; call disconnectUdpProxy to release the session. */
2521
+ /** 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. */
1313
2522
  udpNotifications: Maybe<UdpNotification>;
1314
2523
  };
1315
2524
  export type TeleportRequestInput = {
1316
- UUID: Scalars['String']['input'];
1317
2525
  appId: Scalars['BigInt']['input'];
1318
2526
  chunkAddress: ChunkCoordinatesInput;
2527
+ uuid: Scalars['String']['input'];
1319
2528
  voxelAddress: VoxelCoordinatesInput;
1320
2529
  };
1321
2530
  export type TeleportResponse = {
@@ -1356,7 +2565,7 @@ export declare enum UdpErrorCode {
1356
2565
  UserNotAuthenticated = "USER_NOT_AUTHENTICATED"
1357
2566
  }
1358
2567
  /** 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. */
1359
- export type UdpNotification = ActorUpdateNotification | ActorUpdateResponse | ClientAudioNotification | ClientEventNotification | ClientTextNotification | GenericErrorResponse | ServerEventNotification | VoxelUpdateNotification | VoxelUpdateResponse;
2568
+ export type UdpNotification = ActorUpdateNotification | ActorUpdateResponse | ClientAudioNotification | ClientEventNotification | ClientTextNotification | GenericErrorResponse | RealtimeConnectionEvent | ServerEventNotification | SingleActorMessageNotification | VoxelUpdateNotification | VoxelUpdateResponse;
1360
2569
  /** 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. */
1361
2570
  export type UdpProxyConnectionStatus = {
1362
2571
  __typename?: 'UdpProxyConnectionStatus';
@@ -1377,6 +2586,7 @@ export type UpdateAccessTierInput = {
1377
2586
  isFree?: InputMaybe<Scalars['Boolean']['input']>;
1378
2587
  name?: InputMaybe<Scalars['String']['input']>;
1379
2588
  paypalPlanId?: InputMaybe<Scalars['String']['input']>;
2589
+ permissionKeys?: InputMaybe<Array<Scalars['String']['input']>>;
1380
2590
  priceCents?: InputMaybe<Scalars['BigInt']['input']>;
1381
2591
  stripePriceId?: InputMaybe<Scalars['String']['input']>;
1382
2592
  tierOrder?: InputMaybe<Scalars['Int']['input']>;
@@ -1399,6 +2609,12 @@ export type UpdateAppInput = {
1399
2609
  status?: InputMaybe<AppStatus>;
1400
2610
  visibility?: InputMaybe<AppVisibility>;
1401
2611
  };
2612
+ export type UpdateAvatarAppStateInput = {
2613
+ appId: Scalars['BigInt']['input'];
2614
+ avatarId: Scalars['BigInt']['input'];
2615
+ /** Base64-encoded binary state. Null clears it. */
2616
+ state?: InputMaybe<Scalars['String']['input']>;
2617
+ };
1402
2618
  export type UpdateAvatarInput = {
1403
2619
  name?: InputMaybe<Scalars['String']['input']>;
1404
2620
  };
@@ -1416,10 +2632,27 @@ export type UpdateChunkStateInput = {
1416
2632
  chunkState?: InputMaybe<Scalars['String']['input']>;
1417
2633
  coordinates: ChunkCoordinatesInput;
1418
2634
  };
2635
+ export type UpdateEnvironmentScalingInput = {
2636
+ /** Caddy LB flavor (in front of the game-api fleet). When omitted the existing value is preserved. */
2637
+ caddyFlavor?: InputMaybe<Scalars['String']['input']>;
2638
+ gameApiMaxServers: Scalars['Int']['input'];
2639
+ gameApiMinServers: Scalars['Int']['input'];
2640
+ loadBalancerCount: Scalars['Int']['input'];
2641
+ orgId: Scalars['BigInt']['input'];
2642
+ slug: Scalars['String']['input'];
2643
+ udpBuddyMaxServers: Scalars['Int']['input'];
2644
+ udpBuddyMinServers: Scalars['Int']['input'];
2645
+ };
1419
2646
  export type UpdateGamertagInput = {
1420
2647
  disambiguation: Scalars['String']['input'];
1421
2648
  gamertag: Scalars['String']['input'];
1422
2649
  };
2650
+ export type UpdateGroupRoleInput = {
2651
+ groupRoleId: Scalars['BigInt']['input'];
2652
+ permissions?: InputMaybe<Array<Scalars['String']['input']>>;
2653
+ rank?: InputMaybe<Scalars['Int']['input']>;
2654
+ roleName?: InputMaybe<Scalars['String']['input']>;
2655
+ };
1423
2656
  export type UpdateOrgRoleInput = {
1424
2657
  description?: InputMaybe<Scalars['String']['input']>;
1425
2658
  permissions?: InputMaybe<Array<Scalars['String']['input']>>;
@@ -1430,6 +2663,12 @@ export type UpdateOrgTokenInput = {
1430
2663
  isActive?: InputMaybe<Scalars['Boolean']['input']>;
1431
2664
  label?: InputMaybe<Scalars['String']['input']>;
1432
2665
  };
2666
+ export type UpdateTeamInput = {
2667
+ description?: InputMaybe<Scalars['String']['input']>;
2668
+ groupId: Scalars['BigInt']['input'];
2669
+ membershipPolicy?: InputMaybe<Scalars['String']['input']>;
2670
+ name?: InputMaybe<Scalars['String']['input']>;
2671
+ };
1433
2672
  export type UpdateUserStateInput = {
1434
2673
  state?: InputMaybe<Scalars['String']['input']>;
1435
2674
  };
@@ -1440,6 +2679,22 @@ export type UpdateVoxelInput = {
1440
2679
  state?: InputMaybe<Scalars['String']['input']>;
1441
2680
  voxelType: Scalars['Float']['input'];
1442
2681
  };
2682
+ export type UsageMinuteRow = {
2683
+ __typename?: 'UsageMinuteRow';
2684
+ minute: Scalars['DateTime']['output'];
2685
+ recvBytes: Scalars['String']['output'];
2686
+ recvMsgs: Maybe<Scalars['String']['output']>;
2687
+ sendBytes: Scalars['String']['output'];
2688
+ sendMsgs: Maybe<Scalars['String']['output']>;
2689
+ };
2690
+ export type UsageRatePeaks = {
2691
+ __typename?: 'UsageRatePeaks';
2692
+ avgSendMbitPerSec: Scalars['Float']['output'];
2693
+ avgSendMsgsPerSec: Scalars['Float']['output'];
2694
+ peakSendMbitPerSec: Scalars['Float']['output'];
2695
+ peakSendMsgsPerSec: Scalars['Float']['output'];
2696
+ sampleMinutes: Scalars['Float']['output'];
2697
+ };
1443
2698
  export type User = {
1444
2699
  __typename?: 'User';
1445
2700
  createdAt: Scalars['DateTime']['output'];
@@ -1450,6 +2705,8 @@ export type User = {
1450
2705
  grantEarlyAccess: Scalars['Boolean']['output'];
1451
2706
  grantEarlyAccessOverride: Scalars['Boolean']['output'];
1452
2707
  isConfirmed: Scalars['Boolean']['output'];
2708
+ /** Company-employee flag that grants access to control-plane / operator features. Independent from is_super_admin. */
2709
+ isOperator: Scalars['Boolean']['output'];
1453
2710
  isSuperAdmin: Scalars['Boolean']['output'];
1454
2711
  orgId: Maybe<Scalars['BigInt']['output']>;
1455
2712
  /** The current user's effective permission keys on the given org. Empty if not a member. Always full set if super admin. */
@@ -1790,6 +3047,7 @@ export type AppAccessTiersQuery = {
1790
3047
  currency: string | null;
1791
3048
  billingPeriod: string | null;
1792
3049
  description: string | null;
3050
+ permissionKeys: Array<string>;
1793
3051
  status: string;
1794
3052
  createdAt: string;
1795
3053
  updatedAt: string;
@@ -1846,6 +3104,7 @@ export type CreateAccessTierMutation = {
1846
3104
  currency: string | null;
1847
3105
  billingPeriod: string | null;
1848
3106
  description: string | null;
3107
+ permissionKeys: Array<string>;
1849
3108
  status: string;
1850
3109
  createdAt: string;
1851
3110
  updatedAt: string;
@@ -1927,6 +3186,7 @@ export type UpdateAccessTierMutation = {
1927
3186
  currency: string | null;
1928
3187
  billingPeriod: string | null;
1929
3188
  description: string | null;
3189
+ permissionKeys: Array<string>;
1930
3190
  status: string;
1931
3191
  updatedAt: string;
1932
3192
  };
@@ -1946,6 +3206,8 @@ export type AppQuery = {
1946
3206
  visibility: AppVisibility;
1947
3207
  status: AppStatus;
1948
3208
  metadata: string | null;
3209
+ splitMode: boolean;
3210
+ gameApiUrl: string | null;
1949
3211
  createdAt: string;
1950
3212
  updatedAt: string;
1951
3213
  org: {
@@ -1972,6 +3234,8 @@ export type AppBySlugQuery = {
1972
3234
  visibility: AppVisibility;
1973
3235
  status: AppStatus;
1974
3236
  metadata: string | null;
3237
+ splitMode: boolean;
3238
+ gameApiUrl: string | null;
1975
3239
  createdAt: string;
1976
3240
  updatedAt: string;
1977
3241
  org: {
@@ -1997,6 +3261,8 @@ export type AppsForOrgQuery = {
1997
3261
  visibility: AppVisibility;
1998
3262
  status: AppStatus;
1999
3263
  metadata: string | null;
3264
+ splitMode: boolean;
3265
+ gameApiUrl: string | null;
2000
3266
  createdAt: string;
2001
3267
  updatedAt: string;
2002
3268
  }>;
@@ -2050,6 +3316,8 @@ export type MarketplaceAppsQuery = {
2050
3316
  visibility: AppVisibility;
2051
3317
  status: AppStatus;
2052
3318
  metadata: string | null;
3319
+ splitMode: boolean;
3320
+ gameApiUrl: string | null;
2053
3321
  createdAt: string;
2054
3322
  updatedAt: string;
2055
3323
  org: {
@@ -2082,6 +3350,8 @@ export type MyAppsQuery = {
2082
3350
  visibility: AppVisibility;
2083
3351
  status: AppStatus;
2084
3352
  metadata: string | null;
3353
+ splitMode: boolean;
3354
+ gameApiUrl: string | null;
2085
3355
  createdAt: string;
2086
3356
  updatedAt: string;
2087
3357
  org: {
@@ -2968,6 +4238,61 @@ export type ActiveGraphQlServersQuery = {
2968
4238
  updatedAt: string;
2969
4239
  }>;
2970
4240
  };
4241
+ export type GameClientBootstrapQueryVariables = Exact<{
4242
+ appId: Scalars['BigInt']['input'];
4243
+ }>;
4244
+ export type GameClientBootstrapQuery = {
4245
+ __typename?: 'Query';
4246
+ gameClientBootstrap: {
4247
+ __typename?: 'GameClientBootstrap';
4248
+ appId: string;
4249
+ realtimeProtocol: string;
4250
+ subscriptionName: string;
4251
+ maxReplicationDistance: number;
4252
+ maxDecayRate: number;
4253
+ sequenceNumberModulo: number;
4254
+ udpProxyConnectionStatus: {
4255
+ __typename?: 'UdpProxyConnectionStatus';
4256
+ connected: boolean;
4257
+ serverIp6: string | null;
4258
+ serverClientPort: number | null;
4259
+ lastMessageTime: string | null;
4260
+ };
4261
+ versionInfo: {
4262
+ __typename?: 'ServerVersionInfo';
4263
+ serverVersion: {
4264
+ __typename?: 'VersionInfo';
4265
+ major: number;
4266
+ minor: number;
4267
+ patch: number;
4268
+ build: number;
4269
+ };
4270
+ minimumClientVersion: {
4271
+ __typename?: 'VersionInfo';
4272
+ major: number;
4273
+ minor: number;
4274
+ patch: number;
4275
+ build: number;
4276
+ };
4277
+ };
4278
+ me: {
4279
+ __typename?: 'User';
4280
+ userId: string;
4281
+ email: string | null;
4282
+ gamertag: string | null;
4283
+ disambiguation: string | null;
4284
+ state: string | null;
4285
+ isConfirmed: boolean;
4286
+ createdAt: string;
4287
+ grantEarlyAccess: boolean;
4288
+ grantEarlyAccessOverride: boolean;
4289
+ orgId: string | null;
4290
+ externalId: string | null;
4291
+ userType: string;
4292
+ isSuperAdmin: boolean;
4293
+ };
4294
+ };
4295
+ };
2971
4296
  export type GraphqlServersQueryVariables = Exact<{
2972
4297
  [key: string]: never;
2973
4298
  }>;
@@ -3133,6 +4458,13 @@ export type SendClientEventMutation = {
3133
4458
  __typename?: 'Mutation';
3134
4459
  sendClientEvent: boolean;
3135
4460
  };
4461
+ export type SendSingleActorMessageMutationVariables = Exact<{
4462
+ input: SingleActorMessageInput;
4463
+ }>;
4464
+ export type SendSingleActorMessageMutation = {
4465
+ __typename?: 'Mutation';
4466
+ sendSingleActorMessage: boolean;
4467
+ };
3136
4468
  export type SendTextPacketMutationVariables = Exact<{
3137
4469
  input: ClientTextPacketInput;
3138
4470
  }>;
@@ -3147,6 +4479,133 @@ export type SendVoxelUpdateMutation = {
3147
4479
  __typename?: 'Mutation';
3148
4480
  sendVoxelUpdate: boolean;
3149
4481
  };
4482
+ export type UdpNotificationsSubscriptionVariables = Exact<{
4483
+ [key: string]: never;
4484
+ }>;
4485
+ export type UdpNotificationsSubscription = {
4486
+ __typename?: 'Subscription';
4487
+ udpNotifications: {
4488
+ __typename: 'ActorUpdateNotification';
4489
+ appId: string;
4490
+ chunkX: string;
4491
+ chunkY: string;
4492
+ chunkZ: string;
4493
+ distance: number;
4494
+ decayRate: number;
4495
+ uuid: string;
4496
+ state: string;
4497
+ sequenceNumber: number;
4498
+ epochMillis: string;
4499
+ } | {
4500
+ __typename: 'ActorUpdateResponse';
4501
+ appId: string;
4502
+ chunkX: string;
4503
+ chunkY: string;
4504
+ chunkZ: string;
4505
+ distance: number;
4506
+ decayRate: number;
4507
+ uuid: string;
4508
+ sequenceNumber: number;
4509
+ epochMillis: string;
4510
+ } | {
4511
+ __typename: 'ClientAudioNotification';
4512
+ appId: string;
4513
+ chunkX: string;
4514
+ chunkY: string;
4515
+ chunkZ: string;
4516
+ distance: number;
4517
+ decayRate: number;
4518
+ uuid: string;
4519
+ audioData: string;
4520
+ sequenceNumber: number;
4521
+ epochMillis: string;
4522
+ } | {
4523
+ __typename: 'ClientEventNotification';
4524
+ appId: string;
4525
+ chunkX: string;
4526
+ chunkY: string;
4527
+ chunkZ: string;
4528
+ distance: number;
4529
+ decayRate: number;
4530
+ uuid: string;
4531
+ eventType: number;
4532
+ state: string;
4533
+ sequenceNumber: number;
4534
+ epochMillis: string;
4535
+ } | {
4536
+ __typename: 'ClientTextNotification';
4537
+ appId: string;
4538
+ chunkX: string;
4539
+ chunkY: string;
4540
+ chunkZ: string;
4541
+ distance: number;
4542
+ decayRate: number;
4543
+ uuid: string;
4544
+ text: string;
4545
+ sequenceNumber: number;
4546
+ epochMillis: string;
4547
+ } | {
4548
+ __typename: 'GenericErrorResponse';
4549
+ sequenceNumber: number;
4550
+ errorCode: UdpErrorCode;
4551
+ } | {
4552
+ __typename: 'RealtimeConnectionEvent';
4553
+ status: string;
4554
+ code: string;
4555
+ message: string;
4556
+ retryable: boolean;
4557
+ } | {
4558
+ __typename: 'ServerEventNotification';
4559
+ appId: string;
4560
+ chunkX: string;
4561
+ chunkY: string;
4562
+ chunkZ: string;
4563
+ distance: number;
4564
+ decayRate: number;
4565
+ uuid: string;
4566
+ eventType: number;
4567
+ state: string;
4568
+ sequenceNumber: number;
4569
+ epochMillis: string;
4570
+ } | {
4571
+ __typename: 'SingleActorMessageNotification';
4572
+ appId: string;
4573
+ chunkX: string;
4574
+ chunkY: string;
4575
+ chunkZ: string;
4576
+ uuid: string;
4577
+ payload: string;
4578
+ sequenceNumber: number;
4579
+ epochMillis: string;
4580
+ } | {
4581
+ __typename: 'VoxelUpdateNotification';
4582
+ appId: string;
4583
+ chunkX: string;
4584
+ chunkY: string;
4585
+ chunkZ: string;
4586
+ distance: number;
4587
+ decayRate: number;
4588
+ uuid: string;
4589
+ voxelX: number;
4590
+ voxelY: number;
4591
+ voxelZ: number;
4592
+ voxelType: number;
4593
+ voxelState: string;
4594
+ sequenceNumber: number;
4595
+ epochMillis: string;
4596
+ } | {
4597
+ __typename: 'VoxelUpdateResponse';
4598
+ appId: string;
4599
+ chunkX: string;
4600
+ chunkY: string;
4601
+ chunkZ: string;
4602
+ distance: number;
4603
+ decayRate: number;
4604
+ uuid: string;
4605
+ sequenceNumber: number;
4606
+ epochMillis: string;
4607
+ } | null;
4608
+ };
3150
4609
  export type UdpProxyConnectionStatusQueryVariables = Exact<{
3151
4610
  [key: string]: never;
3152
4611
  }>;
@@ -3537,6 +4996,7 @@ export declare const QuotasForAppDocument: DocumentNode<QuotasForAppQuery, Quota
3537
4996
  export declare const QuotasForOrgDocument: DocumentNode<QuotasForOrgQuery, QuotasForOrgQueryVariables>;
3538
4997
  export declare const SetQuotaDocument: DocumentNode<SetQuotaMutation, SetQuotaMutationVariables>;
3539
4998
  export declare const ActiveGraphQlServersDocument: DocumentNode<ActiveGraphQlServersQuery, ActiveGraphQlServersQueryVariables>;
4999
+ export declare const GameClientBootstrapDocument: DocumentNode<GameClientBootstrapQuery, GameClientBootstrapQueryVariables>;
3540
5000
  export declare const GraphqlServersDocument: DocumentNode<GraphqlServersQuery, GraphqlServersQueryVariables>;
3541
5001
  export declare const ServerWithLeastClientsDocument: DocumentNode<ServerWithLeastClientsQuery, ServerWithLeastClientsQueryVariables>;
3542
5002
  export declare const VersionInfoDocument: DocumentNode<VersionInfoQuery, VersionInfoQueryVariables>;
@@ -3550,8 +5010,10 @@ export declare const DisconnectUdpProxyDocument: DocumentNode<DisconnectUdpProxy
3550
5010
  export declare const SendActorUpdateDocument: DocumentNode<SendActorUpdateMutation, SendActorUpdateMutationVariables>;
3551
5011
  export declare const SendAudioPacketDocument: DocumentNode<SendAudioPacketMutation, SendAudioPacketMutationVariables>;
3552
5012
  export declare const SendClientEventDocument: DocumentNode<SendClientEventMutation, SendClientEventMutationVariables>;
5013
+ export declare const SendSingleActorMessageDocument: DocumentNode<SendSingleActorMessageMutation, SendSingleActorMessageMutationVariables>;
3553
5014
  export declare const SendTextPacketDocument: DocumentNode<SendTextPacketMutation, SendTextPacketMutationVariables>;
3554
5015
  export declare const SendVoxelUpdateDocument: DocumentNode<SendVoxelUpdateMutation, SendVoxelUpdateMutationVariables>;
5016
+ export declare const UdpNotificationsDocument: DocumentNode<UdpNotificationsSubscription, UdpNotificationsSubscriptionVariables>;
3555
5017
  export declare const UdpProxyConnectionStatusDocument: DocumentNode<UdpProxyConnectionStatusQuery, UdpProxyConnectionStatusQueryVariables>;
3556
5018
  export declare const DeleteMyAccountDocument: DocumentNode<DeleteMyAccountMutation, DeleteMyAccountMutationVariables>;
3557
5019
  export declare const ForceLogoutUserDocument: DocumentNode<ForceLogoutUserMutation, ForceLogoutUserMutationVariables>;