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
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.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