@crowdedkingdoms/crowdyjs 18.15.0 → 18.16.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -888,6 +888,8 @@ export type App = {
888
888
  isTrusted: Scalars['Boolean']['output'];
889
889
  /** Browser destination (origin/URL) a player is redirected to when they portal into this app from the Overworld. Used to route the player and to validate portal redirect URIs. */
890
890
  launchUrl: Maybe<Scalars['String']['output']>;
891
+ /** Whether the organization lets its org-managed players build and run mods (and use the Studio agent) in this app, paying for their mod compute, egress, storage and model tokens itself. False by default, and false wherever org-managed players are off (they are on dev only). Set with setAppManagedPlayerMods (manage_billing). Players with a Crowded Kingdoms account are unaffected. */
892
+ managedPlayerModsEnabled: Scalars['Boolean']['output'];
891
893
  /** Opaque JSON-encoded string of marketplace media (cover image URL, screenshots, long description, etc.). Stored internally as JSONB; clients must JSON.parse on read and JSON.stringify on write. Null/"{}" when unset. */
892
894
  metadata: Maybe<Scalars['String']['output']>;
893
895
  /** Human-readable display name of the app. */
@@ -2199,12 +2201,16 @@ export type CreateOrgRoleInput = {
2199
2201
  roleName: Scalars['String']['input'];
2200
2202
  };
2201
2203
  export type CreateOrgTokenInput = {
2204
+ /** Limit the token to these apps of the organization; omit for every app (org-managed players, dev only). */
2205
+ appIds?: InputMaybe<Array<Scalars['BigInt']['input']>>;
2202
2206
  /** Optional expiry timestamp; omit for a non-expiring token. */
2203
2207
  expiresAt?: InputMaybe<Scalars['DateTime']['input']>;
2204
2208
  /** Optional human-readable label (max 256 characters). */
2205
2209
  label?: InputMaybe<Scalars['String']['input']>;
2206
2210
  /** Organization to mint the token for (BigInt as string). */
2207
2211
  orgId: Scalars['BigInt']['input'];
2212
+ /** What the token may do: 'players:mint' and/or 'players:manage' (org-managed players, dev only). Omit for a token with no scope, which can do nothing. */
2213
+ scopes?: InputMaybe<Array<Scalars['String']['input']>>;
2208
2214
  };
2209
2215
  export type CreateOrganizationInput = {
2210
2216
  /** Organization display name (1-256 characters). */
@@ -3383,6 +3389,12 @@ export type EmailStatusRecord = {
3383
3389
  /** valid | bounced | complained. */
3384
3390
  status: Scalars['String']['output'];
3385
3391
  };
3392
+ export type ExchangeManagedPlayerAssertionInput = {
3393
+ /** The app to play. */
3394
+ appId: Scalars['BigInt']['input'];
3395
+ /** The compact JWS your organization signed for this player (header alg EdDSA, ES256 or RS256 with a registered kid; claims iss, aud, sub, iat, exp at most 300 s after iat, a fresh jti, and optionally gamertag). Use each once. */
3396
+ assertion: Scalars['String']['input'];
3397
+ };
3386
3398
  /** Input for exchangePortalCode: the destination game (public client) trades a one-time portal code for an app-scoped gameplay token. Public (the code + PKCE verifier authorize the call). */
3387
3399
  export type ExchangePortalCodeInput = {
3388
3400
  /** The one-time authorization code received on the redirect. */
@@ -4524,6 +4536,37 @@ export type LoginUserInput = {
4524
4536
  /** Account password (min 8 characters). */
4525
4537
  password: Scalars['String']['input'];
4526
4538
  };
4539
+ /** A player an organization signs in itself (an org-managed player): a Crowded Kingdoms user with no email, password or wallet, known to the org by its own id. Dev only for now. */
4540
+ export type ManagedPlayer = {
4541
+ __typename?: 'ManagedPlayer';
4542
+ /** When the player was first signed in or provisioned. */
4543
+ createdAt: Scalars['DateTime']['output'];
4544
+ /** Whether the player is disabled: it cannot sign in, and its sessions were ended when it was disabled. An org disables and enables with updateManagedPlayer; a platform block also reads as disabled and only an operator lifts it. */
4545
+ disabled: Scalars['Boolean']['output'];
4546
+ /** Disambiguation shown beside the gamertag, if the org set one. */
4547
+ disambiguation: Maybe<Scalars['String']['output']>;
4548
+ /** The id the organization knows the player by (its own account id), unique within the org. */
4549
+ externalId: Scalars['String']['output'];
4550
+ /** Display name. */
4551
+ gamertag: Maybe<Scalars['String']['output']>;
4552
+ /** The organization the player belongs to. */
4553
+ orgId: Scalars['BigInt']['output'];
4554
+ /** The player’s Crowded Kingdoms user id (BigInt as a decimal string): what hubs, channels and other players see. */
4555
+ userId: Scalars['BigInt']['output'];
4556
+ };
4557
+ export type ManagedPlayerSpecInput = {
4558
+ /** The id your organization knows the player by. */
4559
+ externalId: Scalars['String']['input'];
4560
+ /** Display name (at most 64 characters). */
4561
+ gamertag?: InputMaybe<Scalars['String']['input']>;
4562
+ };
4563
+ /** One page of an org’s managed players, by user id. */
4564
+ export type ManagedPlayersPage = {
4565
+ __typename?: 'ManagedPlayersPage';
4566
+ /** Pass as `after` for the next page; null on the last. */
4567
+ nextCursor: Maybe<Scalars['String']['output']>;
4568
+ players: Array<ManagedPlayer>;
4569
+ };
4527
4570
  /** Input for mintAppToken: directly mint an app-scoped gameplay token for the calling user (native/direct path, no browser redirect). */
4528
4571
  export type MintAppTokenInput = {
4529
4572
  /** Numeric id of the app to mint a confined gameplay token for. Free/open apps are auto-granted access; paid apps require an existing entitlement (else FORBIDDEN). */
@@ -4538,6 +4581,16 @@ export type MintGridTokenInput = {
4538
4581
  /** Lifetime in seconds (60-3600, default 900). Never outlives the app token it was minted from. */
4539
4582
  ttlSeconds?: InputMaybe<Scalars['Int']['input']>;
4540
4583
  };
4584
+ export type MintManagedPlayerTokenInput = {
4585
+ /** The app to play: one of the org token's organization's apps. */
4586
+ appId: Scalars['BigInt']['input'];
4587
+ /** The id your organization knows the player by (1-256 characters, no control characters). Use your own stable account id, not an email address. The first sign-in creates the player. */
4588
+ externalId: Scalars['String']['input'];
4589
+ /** Display name (at most 64 characters). Set when the player is created; later sign-ins leave it (rename with updateManagedPlayer). */
4590
+ gamertag?: InputMaybe<Scalars['String']['input']>;
4591
+ /** How long this sign-in lasts, in seconds (default and maximum: the org's settings). The app token refreshes (refreshAppToken) until then; after it, sign the player in again. */
4592
+ sessionTtlSeconds?: InputMaybe<Scalars['Int']['input']>;
4593
+ };
4541
4594
  export type Mutation = {
4542
4595
  __typename?: 'Mutation';
4543
4596
  /** Give up a STAGING publish and clear its staged objects. Requires manage_apps and a SESSION token. */
@@ -4622,7 +4675,7 @@ export type Mutation = {
4622
4675
  createGridChannel: Group;
4623
4676
  /** Creates a custom role in an organization with a name, optional description, and permission keys. Requires the 'manage_members' permission on the org (super admins bypass). */
4624
4677
  createOrgRole: OrgRole;
4625
- /** Mints a new org API token and returns the plaintext token exactly once - save it, since subsequent queries only show metadata. Requires the 'manage_tokens' permission on the target org (super admins bypass). */
4678
+ /** Mints a new org token (it starts with `cko_`) and returns the plaintext exactly once - save it, since subsequent queries only show metadata. An org token is the organization's SERVER credential for its org-managed players (dev only for now): with scope 'players:mint' its server signs the org's own players in (mintManagedPlayerToken), with 'players:manage' it manages them; `appIds` limits it to some of the org's apps. Never put one in a game client or a web page: a request with an Origin header is refused. Requires the 'manage_tokens' permission on the target org (super admins bypass). */
4626
4679
  createOrgToken: OrgTokenWithSecret;
4627
4680
  /** Creates a new organization and makes the authenticated caller its owner (with full permissions). Requires a valid session token. */
4628
4681
  createOrganization: Organization;
@@ -4680,6 +4733,8 @@ export type Mutation = {
4680
4733
  deleteChannelRole: Scalars['Boolean']['output'];
4681
4734
  /** Delete a studio-created peer grid so its chunk box no longer blocks overlapping grid creation. Requires app-admin ('manage_apps'). Returns a hybrid response — on success `gridId` is populated and `error` is NO_ERROR; on failure `gridId` is null and `error` is a UDP-style error code (e.g. GRID_NOT_FOUND, CANNOT_DELETE_DEFAULT_WORLD_GRID, GRID_HAS_NESTED_CHILDREN). The open-by-default world grid and any grid that still contains nested child grids cannot be deleted. */
4682
4735
  deleteGrid: DeleteGridResponse;
4736
+ /** Dev only. Delete a managed player: its sessions end and its row is anonymized, as an account deletion is. Signing the same external id in again creates a new player. False when there was no such player. An org token with players:manage, or an org admin with manage_players. */
4737
+ deleteManagedPlayer: Scalars['Boolean']['output'];
4683
4738
  /** DESTRUCTIVE self-service: soft-deletes the authenticated caller's OWN account — anonymizes PII and revokes all sessions; wallet, voxel, and donation history stay intact via FK. Acts only on the caller (no target argument). Requires a valid game token. */
4684
4739
  deleteMyAccount: Scalars['Boolean']['output'];
4685
4740
  /** Deletes an organization role. Requires the 'manage_members' permission on the role's org (super admins bypass). DESTRUCTIVE: removes the role and unassigns it from all members. Returns false if the role does not exist. */
@@ -4694,8 +4749,12 @@ export type Mutation = {
4694
4749
  deleteUserAppState: UserAppState;
4695
4750
  /** 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). */
4696
4751
  disconnectUdpProxy: Scalars['Boolean']['output'];
4752
+ /** Dev only. Sign a managed player out everywhere: its sessions and app tokens end, and so do its realtime and ck-exec connections. It can sign in again (use updateManagedPlayer to stop that). False when it held no session. An org token with players:manage, or an org admin with manage_players. */
4753
+ endManagedPlayerSessions: Scalars['Boolean']['output'];
4697
4754
  /** OPERATOR: end the sessions and app tokens of these accounts (at most 1000), skipping any this tier admits. Returns how many had sessions ended. Refused on prod. */
4698
4755
  endTierAccessSessions: Scalars['Int']['output'];
4756
+ /** Dev only. Exchange an assertion your organization signed for one of its players for that player's app-scoped gameplay token (the same token mintManagedPlayerToken returns). Public: the signature is the credential, so a game client calls it directly, from a browser on your registered origin or natively. The assertion must name a registered, active key (header kid) and carry iss and aud as registered (aud defaults to ck:app:<appId>), sub (your id for the player), iat, exp at most 300 seconds after iat, and a jti never used before for this app; optionally gamertag. The player is created on its first sign-in. Refusals are ASSERTION_REJECTED with extensions.reason. */
4757
+ exchangeManagedPlayerAssertion: AppTokenResponse;
4699
4758
  /** Exchange a one-time portal authorization code (with the matching PKCE verifier) for an app-scoped gameplay token. Public (the code + verifier authorize the call); called by the destination game at its own origin so the game never sees the player's session token. */
4700
4759
  exchangePortalCode: AppTokenResponse;
4701
4760
  /** Make an earlier ck-exec version active again, a rollback. Running instances pick it up when they next start, as after a deploy. Requires the org 'manage_compute' permission. */
@@ -4784,6 +4843,10 @@ export type Mutation = {
4784
4843
  mintAppToken: AppTokenResponse;
4785
4844
  /** Mint a grid-scoped token from the app token you hold (DN-10). The result can call only a short, fixed list of gameplay fields, and each is confined to the grid: world reads and replication sends must address a chunk inside it (a send's origin; its reach follows distance), and channels must be the grid's own. refreshAppToken and logout are refused, so the token cannot widen or tear down its parent. Requires an app token (not a session token, not another grid token), and the caller must own the grid or hold run_client_code on it. */
4786
4845
  mintGridToken: GridTokenResponse;
4846
+ /** ORG TOKEN ONLY, dev only. Sign one of your organization's own players in and get its app-scoped gameplay token, the same token mintAppToken returns: hand `token` (and the URLs) to the player's device, which plays with it exactly as with any app token and refreshes it with refreshAppToken. Call from your server with `Authorization: Bearer cko_...` (scope players:mint); a request with an Origin header is refused. The player is created on its first sign-in (no email, password or wallet), and each sign-in lasts `sessionTtlSeconds` (default and maximum: the org's settings): after it the device comes back to you. The app must be one of your organization's apps (and in the token's app list, if it has one). Free tiers grant access automatically; a paid tier needs grantAppAccess. */
4847
+ mintManagedPlayerToken: AppTokenResponse;
4848
+ /** Dev only. Create managed players ahead of their first sign-in, up to 500 a call in one write (creating a player is a cluster-wide commit, so a large import goes in batches). A player that exists is left as it is. An org token with players:manage, or an org admin with manage_players. */
4849
+ provisionManagedPlayers: ProvisionManagedPlayersResult;
4787
4850
  /** Publishes an app to the shared game-api environment. Free under the org's app-slot quota (result.free = true); beyond the quota, publish still succeeds and metered usage is charged to the org wallet. Requires the 'manage_apps' permission on the app's org. Blocked when SHARED_GAME_API_URL is not configured. */
4788
4851
  publishAppToShared: PublishAppResult;
4789
4852
  /** Store acceptance of the current required legal documents (Game Terms, API Terms, SDK Developer Terms, Free Tier and Billing Basis, Overworld Privacy Policy) and the age-of-majority attestation. Both arguments must be true; a false value stores nothing and is refused with LEGAL_ACCEPTANCE_REQUIRED. Idempotent for a version already stored. Requires a session token. Gameplay tokens stay refused until this has succeeded for the current document set. */
@@ -4792,6 +4855,8 @@ export type Mutation = {
4792
4855
  refreshAppToken: AppTokenResponse;
4793
4856
  /** Registers a new email + password account: creates the (initially unconfirmed) account, emails a confirmation link, and returns an AuthResponse with a session `token` for immediate use (send as `Authorization: Bearer <token>`). If an account already exists for the email it is refused with extensions.code EMAIL_ALREADY_REGISTERED (409) and no session is returned: an account that already has a password is left exactly as it was (sign in, or use the emailed reset), and only a password-less account (created via magic link/social) gets the password attached pending email confirmation. It is a routine outcome rather than a fault, and it reached clients as INTERNAL_SERVER_ERROR before v1.60.0, which is why several of them match it by its message text. A browser request (Origin header present) must send acceptLegal and attestAgeOfMajority both true or it is refused with LEGAL_ACCEPTANCE_REQUIRED before an account is created; a request with no Origin may omit them, and gameplay tokens stay refused until the documents are stored. Public; first-party origins only (HOSTED_SIGN_IN_REQUIRED otherwise); rate-limited. */
4794
4857
  register: AuthResponse;
4858
+ /** Dev only. Register the PUBLIC half of a key your organization signs its players' sign-in assertions with (exchangeManagedPlayerAssertion): its kid, algorithm (EdDSA, ES256 or RS256), the JWK, the iss your assertions carry and, if your identity provider sets its own, their aud. The private key never leaves your systems. Requires manage_players on the org. */
4859
+ registerOrgSigningKey: OrgSigningKey;
4795
4860
  /** OPERATOR ONLY. Reverses a retirement: the organization returns to status 'active', deleted_at is cleared, and the tombstone records who put it back and why rather than being deleted. Its apps are LEFT ARCHIVED — un-archiving is archiveApp's inverse and belongs to whoever decides which apps should serve traffic again. Refuses an organization that is not currently retired. */
4796
4861
  reinstateOrganization: OrgRetirementType;
4797
4862
  /** Release a one-chunk grid previously created through claimGridChunk. Requires an ordinary app-scoped player token and the caller must still be its current user owner. Refuses foreign grids, studio/marketplace grids, and grids assigned through legacy claimGridOwnership. Atomically removes pending claim requests and invites, self-claim ownership, direct/effective ACL rows, and the grid so its chunk can be claimed again. */
@@ -4830,7 +4895,9 @@ export type Mutation = {
4830
4895
  revokeGridPermissions: GridUserPermissions;
4831
4896
  /** Revoke group/role grants on a grid (deletes from the `grid_group_grants` input table) and recompute the materialized effective ACL. Omit `permissionKeys` to revoke ALL of the group/role's grants on the grid; pass a subset to revoke only those keys. Requires app-admin ('manage_apps'). DESTRUCTIVE: removes the granted permissions from every affected member. Returns the group's remaining grants on the grid. */
4832
4897
  revokeGroupFromGrid: Array<GridGroupGrant>;
4833
- /** Permanently deactivates an org token so it can no longer authenticate. Requires the 'manage_tokens' permission on the token's org (super admins bypass). DESTRUCTIVE and irreversible; the secret cannot be reactivated. Returns false if the token does not exist. */
4898
+ /** Dev only. Revoke a signing key: assertions it signed are refused from now on (sessions already signed in run until they lapse; end them with endManagedPlayerSessions). False when there was no such active key. Requires manage_players on the org. */
4899
+ revokeOrgSigningKey: Scalars['Boolean']['output'];
4900
+ /** Permanently deactivates an org token so it can no longer authenticate. With `endSessions: true` it also signs out every managed player session the token signed in (their app tokens, realtime and ck-exec connections end now); without it those sessions run until they lapse. Requires the 'manage_tokens' permission on the token's org (super admins bypass). DESTRUCTIVE and irreversible; the secret cannot be reactivated. Returns false if the token does not exist. */
4834
4901
  revokeOrgToken: Scalars['Boolean']['output'];
4835
4902
  /** OPERATOR: revoke a provisioning token. With revokeAccounts, also clear the grant of every account it created and end their sessions. Refused on prod. */
4836
4903
  revokeTierAccessProvisioningToken: TierAccessProvisioningToken;
@@ -4872,6 +4939,8 @@ export type Mutation = {
4872
4939
  setAppComputeBudget: AppComputeBudgetInfo;
4873
4940
  /** Set how a player claim confers grid ownership in this app (D4): SELF_CLAIM, APPROVAL (optionally with a designated approver list), or INVITE. MARKETPLACE_ONLY is refused with FEATURE_DISABLED while paid grid commerce is off the public API. Requires 'manage_apps'. Changing policy never revokes existing grid_ownership rows. */
4874
4941
  setAppGridClaimPolicy: GridClaimPolicy;
4942
+ /** Dev only. Let the organization's org-managed players build and run mods (and use the Studio agent) in this app, or stop them. The organization pays for what they use: their mod compute and egress as its own compute, their project storage as the app's, their model tokens from the org wallet. Turning it off pauses their mods within a minute and refuses new builds. Requires manage_billing on the app's organization. Returns the new setting. */
4943
+ setAppManagedPlayerMods: Scalars['Boolean']['output'];
4875
4944
  /** Reserve capacity for a shared app. A reservation is a FLOOR, not a ceiling: the platform provisions and holds a minimum for you and does not limit what you may use beyond it. Billed monthly from the org wallet whether or not it is used; upgrades are prorated for the current month. Note that the ~1 MB/s free-tier shaping is lifted by funding a wallet, not by reserving. Requires 'manage_billing' on the app's org. */
4876
4945
  setAppReservedThroughput: SetAppReservedThroughputResult;
4877
4946
  /** Sets per-app hourly/daily spend caps (in cents) and returns the re-evaluated runtime state. Pass null for a limit to clear that cap. Exceeding a cap denies the app's runtime (runtimeDenialReason = spend_cap). Requires the 'manage_billing' permission on the app's org. */
@@ -4904,6 +4973,8 @@ export type Mutation = {
4904
4973
  setOperator: User;
4905
4974
  /** OPERATOR ONLY. Sets or clears an organization billing exemption. When true, org-wallet debits and money-driven runtime denials are skipped; usage is still metered and every waived amount is written to org_billing_waivers. Does not waive player-wallet charges, failure breakers, or the per-minute compute budget. reason is required when setting true. SIDE EFFECT: re-evaluates the runtime gate for every shared app in the org, so clearing the exemption re-denies immediately instead of waiting for the next hourly tick. */
4906
4975
  setOrgBillingExempt: BillingExemptOrgType;
4976
+ /** OPERATOR ONLY, dev only. Enable or disable an organization's org-managed players and set its limits. Disabling refuses new sign-ins; sessions already running last until they lapse (end them with endManagedPlayerSessions). */
4977
+ setOrgManagedPlayerSettings: OrgManagedPlayerSettings;
4907
4978
  /** Super admin only. Freeze ('frozen') or unfreeze ('active') an organization platform-wide. A FROZEN organization grants its members NO org permission (super admins excepted, so it is reversible): they cannot spend its wallet, create or manage apps, or change members, and every such refusal names the freeze; its API tokens stop authenticating; the org itself still resolves by id and slug so Studio can show the state. Takes exactly 'active' or 'frozen'; 'retired' is refused in either direction — retirement is retireOrganization, which writes a tombstone. */
4908
4979
  setOrgStatus: Organization;
4909
4980
  /** Configure the caller's player-wallet auto-recharge: enable/disable, per-period ceiling, recharge amount, and low-water threshold. Enabling requires a vaulted payment method. */
@@ -4978,6 +5049,8 @@ export type Mutation = {
4978
5049
  updateChunkState: Maybe<Chunk>;
4979
5050
  /** Sets the authenticated user’s gamertag and disambiguation and appends a gamertag-history row. Requires a valid game token; only ever updates the caller. Fails if the gamertag+disambiguation pair is already taken. */
4980
5051
  updateGamertag: User;
5052
+ /** Dev only. Rename a managed player, or disable or enable it. Disabling ends every session it has now (realtime and ck-exec included) and refuses its sign-ins; enabling lifts only a disable the org set. An org token with players:manage, or an org admin with manage_players. */
5053
+ updateManagedPlayer: ManagedPlayer;
4981
5054
  /** Replaces the full set of roles assigned to an org member. Requires the 'manage_members' permission on the org (super admins bypass). Pass the complete desired role list; roles not included are removed. */
4982
5055
  updateOrgMemberRoles: OrgMember;
4983
5056
  /** Updates a role's name, description, and/or permission set. Requires the 'manage_members' permission on the role's org (super admins bypass). If input.permissions is provided it replaces the entire set (empty array clears all); omit to leave permissions unchanged. Throws FORBIDDEN when input.permissions is given for a SYSTEM role (such as the org's built-in 'admin'): system roles have a fixed permission set, so create a custom role and assign that instead. Name and description remain editable on a system role. */
@@ -5224,6 +5297,10 @@ export type MutationDeleteChannelRoleArgs = {
5224
5297
  export type MutationDeleteGridArgs = {
5225
5298
  input: DeleteGridInput;
5226
5299
  };
5300
+ export type MutationDeleteManagedPlayerArgs = {
5301
+ externalId: Scalars['String']['input'];
5302
+ orgId: Scalars['BigInt']['input'];
5303
+ };
5227
5304
  export type MutationDeleteOrgRoleArgs = {
5228
5305
  idempotencyKey?: InputMaybe<Scalars['String']['input']>;
5229
5306
  orgRoleId: Scalars['BigInt']['input'];
@@ -5242,9 +5319,16 @@ export type MutationDeleteTeamRoleArgs = {
5242
5319
  export type MutationDeleteUserAppStateArgs = {
5243
5320
  appId: Scalars['BigInt']['input'];
5244
5321
  };
5322
+ export type MutationEndManagedPlayerSessionsArgs = {
5323
+ externalId: Scalars['String']['input'];
5324
+ orgId: Scalars['BigInt']['input'];
5325
+ };
5245
5326
  export type MutationEndTierAccessSessionsArgs = {
5246
5327
  userIds: Array<Scalars['BigInt']['input']>;
5247
5328
  };
5329
+ export type MutationExchangeManagedPlayerAssertionArgs = {
5330
+ input: ExchangeManagedPlayerAssertionInput;
5331
+ };
5248
5332
  export type MutationExchangePortalCodeArgs = {
5249
5333
  input: ExchangePortalCodeInput;
5250
5334
  };
@@ -5418,6 +5502,12 @@ export type MutationMintAppTokenArgs = {
5418
5502
  export type MutationMintGridTokenArgs = {
5419
5503
  input: MintGridTokenInput;
5420
5504
  };
5505
+ export type MutationMintManagedPlayerTokenArgs = {
5506
+ input: MintManagedPlayerTokenInput;
5507
+ };
5508
+ export type MutationProvisionManagedPlayersArgs = {
5509
+ input: ProvisionManagedPlayersInput;
5510
+ };
5421
5511
  export type MutationPublishAppToSharedArgs = {
5422
5512
  appId: Scalars['BigInt']['input'];
5423
5513
  cancelUrl?: InputMaybe<Scalars['String']['input']>;
@@ -5436,6 +5526,9 @@ export type MutationRefreshAppTokenArgs = {
5436
5526
  export type MutationRegisterArgs = {
5437
5527
  registerUserInput: RegisterUserInput;
5438
5528
  };
5529
+ export type MutationRegisterOrgSigningKeyArgs = {
5530
+ input: RegisterOrgSigningKeyInput;
5531
+ };
5439
5532
  export type MutationReinstateOrganizationArgs = {
5440
5533
  input: ReinstateOrganizationInput;
5441
5534
  };
@@ -5503,7 +5596,12 @@ export type MutationRevokeGridPermissionsArgs = {
5503
5596
  export type MutationRevokeGroupFromGridArgs = {
5504
5597
  input: RevokeGroupFromGridInput;
5505
5598
  };
5599
+ export type MutationRevokeOrgSigningKeyArgs = {
5600
+ keyId: Scalars['BigInt']['input'];
5601
+ orgId: Scalars['BigInt']['input'];
5602
+ };
5506
5603
  export type MutationRevokeOrgTokenArgs = {
5604
+ endSessions?: InputMaybe<Scalars['Boolean']['input']>;
5507
5605
  idempotencyKey?: InputMaybe<Scalars['String']['input']>;
5508
5606
  orgTokenId: Scalars['BigInt']['input'];
5509
5607
  };
@@ -5575,6 +5673,10 @@ export type MutationSetAppGridClaimPolicyArgs = {
5575
5673
  approverUserIds?: InputMaybe<Array<Scalars['BigInt']['input']>>;
5576
5674
  policy: GridClaimPolicy;
5577
5675
  };
5676
+ export type MutationSetAppManagedPlayerModsArgs = {
5677
+ appId: Scalars['BigInt']['input'];
5678
+ enabled: Scalars['Boolean']['input'];
5679
+ };
5578
5680
  export type MutationSetAppReservedThroughputArgs = {
5579
5681
  idempotencyKey?: InputMaybe<Scalars['String']['input']>;
5580
5682
  input: SetAppReservedThroughputInput;
@@ -5636,6 +5738,9 @@ export type MutationSetOrgBillingExemptArgs = {
5636
5738
  orgId: Scalars['BigInt']['input'];
5637
5739
  reason: Scalars['String']['input'];
5638
5740
  };
5741
+ export type MutationSetOrgManagedPlayerSettingsArgs = {
5742
+ input: SetOrgManagedPlayerSettingsInput;
5743
+ };
5639
5744
  export type MutationSetOrgStatusArgs = {
5640
5745
  orgId: Scalars['BigInt']['input'];
5641
5746
  status: Scalars['String']['input'];
@@ -5774,6 +5879,9 @@ export type MutationUpdateChunkStateArgs = {
5774
5879
  export type MutationUpdateGamertagArgs = {
5775
5880
  input: UpdateGamertagInput;
5776
5881
  };
5882
+ export type MutationUpdateManagedPlayerArgs = {
5883
+ input: UpdateManagedPlayerInput;
5884
+ };
5777
5885
  export type MutationUpdateOrgMemberRolesArgs = {
5778
5886
  orgId: Scalars['BigInt']['input'];
5779
5887
  roleIds: Array<Scalars['BigInt']['input']>;
@@ -5906,6 +6014,23 @@ export type OrgAutoBilling = {
5906
6014
  /** Amount to top up the wallet by on each auto-recharge, in cents. */
5907
6015
  rechargeAmountCents: Scalars['BigInt']['output'];
5908
6016
  };
6017
+ /** An organization's org-managed player settings. Set by a Crowded Kingdoms operator; the org reads them. */
6018
+ export type OrgManagedPlayerSettings = {
6019
+ __typename?: 'OrgManagedPlayerSettings';
6020
+ /** How long one sign-in lasts (seconds) when the org does not ask for less: app tokens refresh until then. */
6021
+ defaultSessionTtlSeconds: Scalars['Int']['output'];
6022
+ /** Whether the org may sign its own players in (mintManagedPlayerToken, exchangeManagedPlayerAssertion). */
6023
+ enabled: Scalars['Boolean']['output'];
6024
+ /** How many managed players the org may hold. */
6025
+ maxPlayers: Scalars['BigInt']['output'];
6026
+ /** The longest sign-in the org may ask for (seconds). */
6027
+ maxSessionTtlSeconds: Scalars['Int']['output'];
6028
+ /** Sign-ins a minute, fleet-wide. */
6029
+ mintsPerMinute: Scalars['Int']['output'];
6030
+ orgId: Scalars['BigInt']['output'];
6031
+ /** How many managed players it holds now. */
6032
+ playerCount: Scalars['BigInt']['output'];
6033
+ };
5909
6034
  export type OrgMember = {
5910
6035
  __typename?: 'OrgMember';
5911
6036
  /** When the membership was created. */
@@ -5991,17 +6116,48 @@ export type OrgRole = {
5991
6116
  /** Display name of the role. */
5992
6117
  roleName: Scalars['String']['output'];
5993
6118
  };
6119
+ /** The public half of a key an organization signs its players' sign-in assertions with (exchangeManagedPlayerAssertion). Only public keys are stored. Dev only for now. */
6120
+ export type OrgSigningKey = {
6121
+ __typename?: 'OrgSigningKey';
6122
+ /** 'EdDSA', 'ES256' or 'RS256'. */
6123
+ algorithm: Scalars['String']['output'];
6124
+ /** The apps the key signs players in to; null means every app of the organization. */
6125
+ appIds: Maybe<Array<Scalars['BigInt']['output']>>;
6126
+ /** The `aud` an assertion must include; null means `ck:app:<appId>` for the app it signs in to. */
6127
+ audience: Maybe<Scalars['String']['output']>;
6128
+ createdAt: Scalars['DateTime']['output'];
6129
+ /** The `iss` an assertion must carry. */
6130
+ issuer: Scalars['String']['output'];
6131
+ /** The key’s id here. */
6132
+ keyId: Scalars['BigInt']['output'];
6133
+ /** The `kid` an assertion’s header names to pick this key. */
6134
+ kid: Scalars['String']['output'];
6135
+ label: Maybe<Scalars['String']['output']>;
6136
+ orgId: Scalars['BigInt']['output'];
6137
+ /** The public key, as a JWK (JSON). */
6138
+ publicJwk: Scalars['String']['output'];
6139
+ /** When the key was revoked; a revoked key verifies nothing. */
6140
+ revokedAt: Maybe<Scalars['DateTime']['output']>;
6141
+ };
5994
6142
  export type OrgToken = {
5995
6143
  __typename?: 'OrgToken';
6144
+ /** The apps the token may sign players in to; null means every app of the organization. */
6145
+ appIds: Maybe<Array<Scalars['BigInt']['output']>>;
5996
6146
  /** When the token was created. */
5997
6147
  createdAt: Scalars['DateTime']['output'];
5998
- /** For 'service' tokens, the environment id (UUID) the token is scoped to; null for user-minted tokens. */
6148
+ /**
6149
+ * For 'service' tokens, the environment id (UUID) the token is scoped to; null for user-minted tokens.
6150
+ * @deprecated Environment-bound service tokens were retired with dedicated environments; always null.
6151
+ */
5999
6152
  environmentId: Maybe<Scalars['String']['output']>;
6000
6153
  /** Optional expiry timestamp; null means the token never expires. */
6001
6154
  expiresAt: Maybe<Scalars['DateTime']['output']>;
6002
6155
  /** False once revoked; inactive tokens cannot authenticate. */
6003
6156
  isActive: Scalars['Boolean']['output'];
6004
- /** 'user_minted' (human-created) or 'service' (minted by the control plane for per-tenant game-apis). */
6157
+ /**
6158
+ * 'user_minted' (human-created) or 'service' (minted by the control plane for per-tenant game-apis).
6159
+ * @deprecated Service tokens were retired; every org token is 'user_minted'. Read `scopes` for what a token may do.
6160
+ */
6005
6161
  kind: Scalars['String']['output'];
6006
6162
  /** Optional human-readable label. */
6007
6163
  label: Maybe<Scalars['String']['output']>;
@@ -6013,12 +6169,16 @@ export type OrgToken = {
6013
6169
  orgTokenId: Scalars['BigInt']['output'];
6014
6170
  /** When the token was revoked, if it has been. */
6015
6171
  revokedAt: Maybe<Scalars['DateTime']['output']>;
6172
+ /** What the token may do: 'players:mint' (sign the org's managed players in, mintManagedPlayerToken) and 'players:manage' (provision, list, rename, disable, sign out and delete them). A token with no scope can do nothing. Org tokens authenticate on dev only for now. */
6173
+ scopes: Array<Scalars['String']['output']>;
6016
6174
  /** When the token was last updated. */
6017
6175
  updatedAt: Scalars['DateTime']['output'];
6018
6176
  };
6019
6177
  /** Returned exactly once - on org token creation. The plaintext `token` field is never re-emitted. Future listings show metadata only via the `OrgToken` type. */
6020
6178
  export type OrgTokenWithSecret = {
6021
6179
  __typename?: 'OrgTokenWithSecret';
6180
+ /** The apps the token may sign players in to; null means every app of the organization. */
6181
+ appIds: Maybe<Array<Scalars['BigInt']['output']>>;
6022
6182
  /** When the token was created. */
6023
6183
  createdAt: Scalars['DateTime']['output'];
6024
6184
  /** Optional expiry timestamp; null means no expiry. */
@@ -6031,7 +6191,9 @@ export type OrgTokenWithSecret = {
6031
6191
  orgId: Scalars['BigInt']['output'];
6032
6192
  /** Unique token id (BigInt as string). */
6033
6193
  orgTokenId: Scalars['BigInt']['output'];
6034
- /** The plaintext token, returned exactly once. Save it now: only its hash is stored and it cannot be shown again. */
6194
+ /** What the token may do ('players:mint', 'players:manage'). */
6195
+ scopes: Array<Scalars['String']['output']>;
6196
+ /** The plaintext token (it starts with `cko_`), returned exactly once. Save it now: only its hash is stored and it cannot be shown again. Keep it on your organization's server: a request from a browser cannot use it. */
6035
6197
  token: Scalars['String']['output'];
6036
6198
  };
6037
6199
  /** Org-level rollup of per-app monthly egress projections for all shared apps. */
@@ -6549,6 +6711,21 @@ export type PortalConsentState = {
6549
6711
  /** True for first-party/trusted apps (consent is always skipped). */
6550
6712
  trusted: Scalars['Boolean']['output'];
6551
6713
  };
6714
+ export type ProvisionManagedPlayersInput = {
6715
+ /** The organization (an org token's own, if one is used). */
6716
+ orgId: Scalars['BigInt']['input'];
6717
+ /** The players to create, at most 500. One that exists is left as it is. */
6718
+ players: Array<ManagedPlayerSpecInput>;
6719
+ };
6720
+ /** What provisionManagedPlayers did: the players, in the order asked, created or already there. */
6721
+ export type ProvisionManagedPlayersResult = {
6722
+ __typename?: 'ProvisionManagedPlayersResult';
6723
+ /** Players this call created. */
6724
+ created: Scalars['Int']['output'];
6725
+ /** Players that already existed and were left as they were. */
6726
+ existing: Scalars['Int']['output'];
6727
+ players: Array<ManagedPlayer>;
6728
+ };
6552
6729
  /** One priced dimension of the public rate card: its rate and its free allowances. A dimension with a price of 0 is metered but not charged. */
6553
6730
  export type PublicRateCardEntryType = {
6554
6731
  __typename?: 'PublicRateCardEntryType';
@@ -6853,6 +7030,10 @@ export type Query = {
6853
7030
  listVoxelUpdatesByDistance: VoxelUpdatesByDistanceResponse;
6854
7031
  /** Lists recorded voxel edits for a single chunk (optionally only those at/after `since`), newest first. Requires a valid bearer token; app-scoped tokens are limited to their own app. Read-only. */
6855
7032
  listVoxels: Array<Voxel>;
7033
+ /** Dev only. One managed player by the id your organization knows it by, or null. An org token with players:manage, or an org admin with manage_players. */
7034
+ managedPlayer: Maybe<ManagedPlayer>;
7035
+ /** Dev only. The organization's managed players, by user id. `search` matches the start of the external id (exactly) or of the gamertag (any case). An org token with players:manage, or an org admin with manage_players. */
7036
+ managedPlayers: ManagedPlayersPage;
6856
7037
  /** Returns the authenticated user resolved from the token (sent as `Authorization: Bearer <token>`), or null if missing/invalid. Readable with either an identity session token or an app-scoped gameplay token. */
6857
7038
  me: Maybe<User>;
6858
7039
  /** Lists the roles assigned to a single org member. Requires a valid session token. */
@@ -6901,6 +7082,8 @@ export type Query = {
6901
7082
  orgAutoBilling: OrgAutoBilling;
6902
7083
  /** An org's free shared-app slot quota and how much of it is used. Apps beyond the quota still publish; metered usage is billed from the org wallet. Caller must be a member of the org. */
6903
7084
  orgFreeAppQuota: FreeAppQuota;
7085
+ /** Dev only. The organization's org-managed player settings: whether it may sign its own players in, its cap, sign-in rate and sign-in lifetimes, and how many players it holds. Requires manage_players on the org (super-admins and operators bypass). */
7086
+ orgManagedPlayerSettings: OrgManagedPlayerSettings;
6904
7087
  /** Lists the members of an organization. Requires the 'manage_members' permission on the org (super admins bypass). */
6905
7088
  orgMembers: Array<OrgMember>;
6906
7089
  /** Lists the org's saved (vaulted) off-session payment methods. Returns metadata only (brand/last4/status), never card numbers. Requires the 'view_billing' org permission. */
@@ -6909,6 +7092,8 @@ export type Query = {
6909
7092
  orgPermissions: Array<OrgPermission>;
6910
7093
  /** Lists all roles defined in an organization. Requires the 'manage_members' permission on the org (super admins bypass). */
6911
7094
  orgRoles: Array<OrgRole>;
7095
+ /** Dev only. The organization's signing keys for player assertions, newest first, revoked ones included. Requires manage_players on the org. */
7096
+ orgSigningKeys: Array<OrgSigningKey>;
6912
7097
  /** Lists an organization's API tokens (metadata only; secret values are never returned here). Requires the 'manage_tokens' permission on the org (super admins bypass). */
6913
7098
  orgTokens: Array<OrgToken>;
6914
7099
  /** Org rollup of per-app monthly egress projections for all shared apps, with upgrade prompts when on track to exceed free tier. Requires the 'view_usage' org permission. */
@@ -7417,6 +7602,16 @@ export type QueryListVoxelUpdatesByDistanceArgs = {
7417
7602
  export type QueryListVoxelsArgs = {
7418
7603
  input: ListVoxelsInput;
7419
7604
  };
7605
+ export type QueryManagedPlayerArgs = {
7606
+ externalId: Scalars['String']['input'];
7607
+ orgId: Scalars['BigInt']['input'];
7608
+ };
7609
+ export type QueryManagedPlayersArgs = {
7610
+ after?: InputMaybe<Scalars['String']['input']>;
7611
+ first?: InputMaybe<Scalars['Int']['input']>;
7612
+ orgId: Scalars['BigInt']['input'];
7613
+ search?: InputMaybe<Scalars['String']['input']>;
7614
+ };
7420
7615
  export type QueryMemberRolesArgs = {
7421
7616
  orgMemberId: Scalars['BigInt']['input'];
7422
7617
  };
@@ -7452,6 +7647,9 @@ export type QueryOrgAutoBillingArgs = {
7452
7647
  export type QueryOrgFreeAppQuotaArgs = {
7453
7648
  orgId: Scalars['BigInt']['input'];
7454
7649
  };
7650
+ export type QueryOrgManagedPlayerSettingsArgs = {
7651
+ orgId: Scalars['BigInt']['input'];
7652
+ };
7455
7653
  export type QueryOrgMembersArgs = {
7456
7654
  orgId: Scalars['BigInt']['input'];
7457
7655
  };
@@ -7461,6 +7659,9 @@ export type QueryOrgPaymentMethodsArgs = {
7461
7659
  export type QueryOrgRolesArgs = {
7462
7660
  orgId: Scalars['BigInt']['input'];
7463
7661
  };
7662
+ export type QueryOrgSigningKeysArgs = {
7663
+ orgId: Scalars['BigInt']['input'];
7664
+ };
7464
7665
  export type QueryOrgTokensArgs = {
7465
7666
  orgId: Scalars['BigInt']['input'];
7466
7667
  };
@@ -7680,6 +7881,22 @@ export type RealtimeConnectionEvent = {
7680
7881
  /** Lifecycle status: "failed" when the session could not be established or had to be torn down, or "draining" for the one advisory case (SERVER_DRAINING) where the stream stays open. */
7681
7882
  status: Scalars['String']['output'];
7682
7883
  };
7884
+ export type RegisterOrgSigningKeyInput = {
7885
+ /** 'EdDSA' (Ed25519), 'ES256' (P-256) or 'RS256' (RSA, 2048 bits or more). */
7886
+ algorithm: Scalars['String']['input'];
7887
+ /** Limit the key to these apps of the organization; omit for every app. */
7888
+ appIds?: InputMaybe<Array<Scalars['BigInt']['input']>>;
7889
+ /** The `aud` your assertions carry, when your identity provider sets its own (for example its client id). Omit to require `ck:app:<appId>`. */
7890
+ audience?: InputMaybe<Scalars['String']['input']>;
7891
+ /** The `iss` your assertions carry (for example your sign-in service’s URL). */
7892
+ issuer: Scalars['String']['input'];
7893
+ /** The key id your assertions name in their header (1-128 characters), unique among the org’s active keys. */
7894
+ kid: Scalars['String']['input'];
7895
+ label?: InputMaybe<Scalars['String']['input']>;
7896
+ orgId: Scalars['BigInt']['input'];
7897
+ /** The PUBLIC key as a JWK (a JSON object). A JWK with private members is refused. */
7898
+ publicJwk: Scalars['String']['input'];
7899
+ };
7683
7900
  export type RegisterUserInput = {
7684
7901
  /** True when the player has agreed to the current required legal documents (Game Terms, API Terms, SDK Developer Terms, Free Tier and Billing Basis, Overworld Privacy Policy). A browser signup that omits this, or sends false, is refused with LEGAL_ACCEPTANCE_REQUIRED. Calls with no Origin header may omit it; gameplay tokens stay refused until the documents are stored. */
7685
7902
  acceptLegal?: InputMaybe<Scalars['Boolean']['input']>;
@@ -8241,6 +8458,14 @@ export type SetMemberRolesInput = {
8241
8458
  /** The member (user) whose roles to set. */
8242
8459
  userId: Scalars['BigInt']['input'];
8243
8460
  };
8461
+ export type SetOrgManagedPlayerSettingsInput = {
8462
+ defaultSessionTtlSeconds?: InputMaybe<Scalars['Int']['input']>;
8463
+ enabled: Scalars['Boolean']['input'];
8464
+ maxPlayers?: InputMaybe<Scalars['BigInt']['input']>;
8465
+ maxSessionTtlSeconds?: InputMaybe<Scalars['Int']['input']>;
8466
+ mintsPerMinute?: InputMaybe<Scalars['Int']['input']>;
8467
+ orgId: Scalars['BigInt']['input'];
8468
+ };
8244
8469
  export type SetQuotaInput = {
8245
8470
  /** What to do when the limit is exceeded. Optional; defaults to "throttle" (typical values: "throttle" to rate-limit, "block" to reject). */
8246
8471
  actionOnExceed?: InputMaybe<Scalars['String']['input']>;
@@ -8767,6 +8992,16 @@ export type UpdateGroupRoleInput = {
8767
8992
  /** New role name (max 128 chars). Ignored for system roles. Omit to leave unchanged. */
8768
8993
  roleName?: InputMaybe<Scalars['String']['input']>;
8769
8994
  };
8995
+ export type UpdateManagedPlayerInput = {
8996
+ /** True disables the player (no sign-in; every session ends now, Buddy and ck-exec included). False enables a player the org disabled. */
8997
+ disabled?: InputMaybe<Scalars['Boolean']['input']>;
8998
+ /** New disambiguation (at most 128 characters). */
8999
+ disambiguation?: InputMaybe<Scalars['String']['input']>;
9000
+ externalId: Scalars['String']['input'];
9001
+ /** New display name. */
9002
+ gamertag?: InputMaybe<Scalars['String']['input']>;
9003
+ orgId: Scalars['BigInt']['input'];
9004
+ };
8770
9005
  export type UpdateOrgRoleInput = {
8771
9006
  /** New description; omit to leave unchanged. */
8772
9007
  description?: InputMaybe<Scalars['String']['input']>;
@@ -8776,12 +9011,16 @@ export type UpdateOrgRoleInput = {
8776
9011
  roleName?: InputMaybe<Scalars['String']['input']>;
8777
9012
  };
8778
9013
  export type UpdateOrgTokenInput = {
9014
+ /** Replace the apps the token is limited to; an empty list means every app of the organization. Omit to leave unchanged. */
9015
+ appIds?: InputMaybe<Array<Scalars['BigInt']['input']>>;
8779
9016
  /** New expiry timestamp; omit to leave unchanged. */
8780
9017
  expiresAt?: InputMaybe<Scalars['DateTime']['input']>;
8781
9018
  /** Set false to deactivate the token; omit to leave unchanged. Revoked tokens cannot be re-minted. */
8782
9019
  isActive?: InputMaybe<Scalars['Boolean']['input']>;
8783
9020
  /** New label; omit to leave unchanged. */
8784
9021
  label?: InputMaybe<Scalars['String']['input']>;
9022
+ /** Replace the token's scopes ('players:mint', 'players:manage'); omit to leave unchanged. */
9023
+ scopes?: InputMaybe<Array<Scalars['String']['input']>>;
8785
9024
  };
8786
9025
  /** Update an existing team. Omitted fields are left unchanged. */
8787
9026
  export type UpdateTeamInput = {
@@ -8847,7 +9086,7 @@ export type User = {
8847
9086
  disambiguation: Maybe<Scalars['String']['output']>;
8848
9087
  /** Account email. Private: null unless the caller is this user, a super-admin or an operator (and for anonymized/soft-deleted accounts). */
8849
9088
  email: Maybe<Scalars['String']['output']>;
8850
- /** External identity-provider id for federated accounts, or null. Private: null unless the caller is this user, a super-admin or an operator. */
9089
+ /** The id an organization knows an org-managed player by (its own account id), or null for every other account. Private: null unless the caller is this user, a super-admin or an operator. */
8851
9090
  externalId: Maybe<Scalars['String']['output']>;
8852
9091
  /** Public display name; null if unset or anonymized. Unique in combination with `disambiguation`. */
8853
9092
  gamertag: Maybe<Scalars['String']['output']>;
@@ -8863,7 +9102,7 @@ export type User = {
8863
9102
  isOperator: Maybe<Scalars['Boolean']['output']>;
8864
9103
  /** Whether the user holds platform super-admin privileges (toggled via `setSuperAdmin`). Private: null unless the caller is this user, a super-admin or an operator. */
8865
9104
  isSuperAdmin: Maybe<Scalars['Boolean']['output']>;
8866
- /** Organization the user belongs to, or null. BigInt serialized as a decimal string. Private: null unless the caller is this user, a super-admin or an operator. */
9105
+ /** The organization an org-managed player belongs to (BigInt serialized as a decimal string), or null for every other account. Private: null unless the caller is this user, a super-admin or an operator. */
8867
9106
  orgId: Maybe<Scalars['BigInt']['output']>;
8868
9107
  /** The user's effective permission keys on the given org (empty if not a member; full set if super admin). Requires a valid bearer game token. Private: null unless the caller is this user, a super-admin or an operator. */
8869
9108
  permissionsForOrg: Maybe<Array<Scalars['String']['output']>>;
@@ -8871,7 +9110,7 @@ export type User = {
8871
9110
  state: Maybe<Scalars['String']['output']>;
8872
9111
  /** Unique user id and primary key. BigInt serialized as a decimal string. */
8873
9112
  userId: Scalars['BigInt']['output'];
8874
- /** Account type, e.g. "direct" or "deleted". Private: null unless the caller is this user, a super-admin or an operator. */
9113
+ /** Account type: "direct" (a Crowded Kingdoms account), "org_managed" (a player an organization signs in itself; no email, password or wallet) or "deleted". Private: null unless the caller is this user, a super-admin or an operator. */
8875
9114
  userType: Maybe<Scalars['String']['output']>;
8876
9115
  };
8877
9116
  export type UserPermissionsForOrgArgs = {