Skip to main content

EnsureContainerInput

Atomically get-or-create a container by an opaque binding key. The key is unique per (appId, typeName, sessionId); concurrent ensures converge on one row. Creation-only fields are ignored when the row already exists.

input EnsureContainerInput {
appId: BigInt!
sessionId: String
typeName: String!
bindingKey: String!
displayName: String!
description: String
ownerUserId: BigInt
metadataJson: String
properties: [SeedPropertyInput!]
}

Fields

EnsureContainerInput.appId ● BigInt! non-null scalar

The app (tenant) the container belongs to.

EnsureContainerInput.sessionId ● String scalar

Optional session scoping the key and the container (omit for app-global). Two sessions may hold the same bindingKey independently.

EnsureContainerInput.typeName ● String! non-null scalar

The container type to resolve or instantiate.

EnsureContainerInput.bindingKey ● String! non-null scalar

Opaque client-derived key (max 128 chars) identifying the shared container within (appId, typeName, sessionId). All concurrent ensures with the same key return the same containerId. The prefix seed: is reserved for gameModelSeed; non-admin ensureContainer may not claim it.

EnsureContainerInput.displayName ● String! non-null scalar

Human-friendly display name. Used ONLY when this call creates the row.

EnsureContainerInput.description ● String scalar

Optional description. Used ONLY when this call creates the row.

EnsureContainerInput.ownerUserId ● BigInt scalar

Owner user id, same rules as CreateContainerInput (defaults to the caller for member/owner types, shared null for admin types). Used ONLY when this call creates the row.

EnsureContainerInput.metadataJson ● String scalar

JSON object of metadata. Used ONLY when this call creates the row.

EnsureContainerInput.properties ● [SeedPropertyInput!] list input

Initial property values. Used ONLY when this call creates the row.

Member Of

gameModelEnsureContainer mutation