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