Skip to main content

App

A publishable application (game/experience) owned by an organization. Its discoverability is controlled by visibility and its lifecycle by status.

type App {
appId: BigInt!
orgId: BigInt!
name: String!
slug: String
description: String
visibility: AppVisibility!
status: AppStatus!
launchUrl: String
isTrusted: Boolean!
redirectUris: [String!]!
clientType: String!
metadata: String
state: String
createdBy: BigInt!
splitMode: Boolean!
gameApiUrl: String
deploymentTarget: String!
reservedEgressBytesPerSec: BigInt!
runtimeStatus: String!
runtimeDenialReason: String
codeAdmissionMode: String!
gridClaimPolicy: String!
gridClaimApproverUserIds: [String!]!
createdAt: DateTime!
updatedAt: DateTime!
org: Organization
}

Fields

App.appId ● BigInt! non-null scalar

Unique numeric identifier of the app (primary key).

App.orgId ● BigInt! non-null scalar

Numeric id of the organization that owns this app.

App.name ● String! non-null scalar

Human-readable display name of the app.

App.slug ● String scalar

URL-safe slug, unique within the org; combined with the org slug to form the marketplace path. May be null for legacy rows.

App.description ● String scalar

Short plain-text description shown in listings; also matched by the marketplace free-text filter.

App.visibility ● AppVisibility! non-null enum

Marketplace discoverability (PUBLIC/UNLISTED/PRIVATE). See AppVisibility.

App.status ● AppStatus! non-null enum

Lifecycle state (DRAFT/LIVE/ARCHIVED). See AppStatus.

App.launchUrl ● String scalar

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.

App.isTrusted ● Boolean! non-null scalar

True for first-party/trusted apps: portal entry skips the consent screen. The Overworld (app 1) is trusted. Studio admins cannot set this; it is platform-controlled.

App.redirectUris ● [String!]! non-null scalar

OAuth-style redirect-URI allow-list for the portal handoff. A portal authorization code’s redirect_uri must match one of these by origin; empty disallows browser portal entry to this app.

App.clientType ● String! non-null scalar

OAuth client type: "public" (browser/PKCE, no secret) or "confidential" (server-side, holds a secret). Defaults to "public".

App.metadata ● String scalar

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.

App.state ● String scalar

Base64-encoded binary blob of the app's persisted runtime/world state; opaque to clients and potentially large. Null when no state has been saved.

App.createdBy ● BigInt! non-null scalar

Numeric user id of the account that created the app.

App.splitMode ● Boolean! non-null scalar

True when this app's runtime data lives in a dedicated per-tenant game-api database (rather than the shared game-api). Used together with gameApiUrl to route gameplay calls.

App.gameApiUrl ● String scalar

Resolved game-api base URL for SDK/runtime calls: the per-tenant URL for dedicated apps, or the shared platform URL for shared apps. Null for legacy or not-yet-deployed apps.

App.deploymentTarget ● String! non-null scalar

Where the app runs: "none" (draft / not deployed), "shared" (the shared game-api), or "dedicated" (a provisioned per-tenant environment).

App.reservedEgressBytesPerSec ● BigInt! non-null scalar

Reserved sustained egress in bytes/s for shared apps. 0 = free tier; >0 bypasses the ~1 MB/s rate limit and incurs a monthly reservation fee.

App.runtimeStatus ● String! non-null scalar

Shared-environment runtime gate, mirrored to the game DB and enforced by game-api + Buddy: "active", "grace", "denied", or "suspended".

App.runtimeDenialReason ● String scalar

When runtimeStatus is not "active", why the runtime is gated: "free_allowance", "insufficient_funds", "spend_cap", or "subscription_lapsed". Null when active.

App.codeAdmissionMode ● String! non-null scalar

Player-code censorship mode: "implicit_allow" (default/off) or "allow_list" (strict admission of every running artifact, including self-authored code).

App.gridClaimPolicy ● String! non-null scalar

How a player claim confers grid ownership (D4): "self_claim" (the claim right alone; default), "approval" (designated approvers accept claim requests), "invite" (standing invites only), or "marketplace_only" (only a marketplace grid purchase; the purchase edge ships in P4b).

App.gridClaimApproverUserIds ● [String!]! non-null scalar

Player user ids allowed to approve grid claim requests in "approval" mode. When empty, approval falls back to org staff holding manage_compute.

App.createdAt ● DateTime! non-null scalar

Timestamp when the app was created.

App.updatedAt ● DateTime! non-null scalar

Timestamp when the app was last updated.

App.org ● Organization object

The organization that owns this app. Null if the owning org cannot be found.

Returned By

app query ● appBySlug query ● appsForOrg query ● archiveApp mutation ● createApp mutation ● linkAppToEnvironment mutation ● myApps query ● setAppVisibility mutation ● updateApp mutation

Member Of

AppEdge object ● AppsPage object ● SetAppReservedThroughputResult object