@crowdedkingdoms/crowdyjs 15.0.0 → 15.1.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.
- package/MIGRATION.md +78 -4
- package/README.md +7 -6
- package/dist/domains/auth.d.ts +150 -8
- package/dist/domains/auth.d.ts.map +1 -1
- package/dist/domains/auth.js +202 -7
- package/dist/domains/crowdyStudio.d.ts.map +1 -1
- package/dist/domains/crowdyStudio.js +11 -2
- package/dist/generated/graphql.d.ts +104 -4
- package/dist/generated/graphql.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/kit/npcs.d.ts.map +1 -1
- package/dist/kit/social.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -3348,6 +3348,64 @@ export type DeployPlayerComputeInput = {
|
|
|
3348
3348
|
/** Optional server tick rate in Hz. Omit for invoke/event-only modules or CLIENT artifacts. Clamped by the effective player/app policy. */
|
|
3349
3349
|
tickHz?: InputMaybe<Scalars['Float']['input']>;
|
|
3350
3350
|
};
|
|
3351
|
+
/** Everything this API knows about whether an address can be emailed, and why. */
|
|
3352
|
+
export type EmailDeliverability = {
|
|
3353
|
+
__typename?: 'EmailDeliverability';
|
|
3354
|
+
email: Scalars['String']['output'];
|
|
3355
|
+
/** Most recent events first. */
|
|
3356
|
+
events: Array<EmailEventRecord>;
|
|
3357
|
+
/** Whether a send to this address would be attempted right now. False for a permanent bounce, a complaint, or a transient bounce inside its 24-hour cool-off. */
|
|
3358
|
+
sendable: Scalars['Boolean']['output'];
|
|
3359
|
+
/** Null means SES has never reported anything about this address, which is treated as sendable. */
|
|
3360
|
+
status: Maybe<EmailStatusRecord>;
|
|
3361
|
+
/** Whether this address is refused before SES is consulted at all, because its domain is in EMAIL_SUPPRESS_DOMAINS. */
|
|
3362
|
+
suppressedDomain: Scalars['Boolean']['output'];
|
|
3363
|
+
};
|
|
3364
|
+
/** How this API instance is configured to send mail. Read it before concluding that a missing email is a bug: an instance with sendingEnabled=false composes every message and hands none of them to SES. */
|
|
3365
|
+
export type EmailDeliveryConfig = {
|
|
3366
|
+
__typename?: 'EmailDeliveryConfig';
|
|
3367
|
+
/** SES_CONFIGURATION_SET. Null or empty means sends carry no configuration set, so SES publishes NO delivery or bounce events for them and this tier learns nothing about its own mail. */
|
|
3368
|
+
configurationSet: Maybe<Scalars['String']['output']>;
|
|
3369
|
+
/** The From address (EMAIL_FROM). */
|
|
3370
|
+
fromAddress: Scalars['String']['output'];
|
|
3371
|
+
/** AWS_REGION used for SES. */
|
|
3372
|
+
region: Scalars['String']['output'];
|
|
3373
|
+
/** SEND_EMAILS. False means nothing reaches SES from this instance. */
|
|
3374
|
+
sendingEnabled: Scalars['Boolean']['output'];
|
|
3375
|
+
/** Domain suffixes refused before SES is consulted (EMAIL_SUPPRESS_DOMAINS). */
|
|
3376
|
+
suppressedDomains: Array<Scalars['String']['output']>;
|
|
3377
|
+
};
|
|
3378
|
+
/** One recorded SES event for an address: the `send` this API wrote when it handed the message to SES, or a `delivery` / `bounce` / `complaint` / `delivery_delay` that arrived back on the SNS webhook. */
|
|
3379
|
+
export type EmailEventRecord = {
|
|
3380
|
+
__typename?: 'EmailEventRecord';
|
|
3381
|
+
/** When the row was written (ISO 8601). */
|
|
3382
|
+
createdAt: Scalars['String']['output'];
|
|
3383
|
+
/** Recipient address the event concerns. */
|
|
3384
|
+
email: Scalars['String']['output'];
|
|
3385
|
+
/** Event detail where SES supplies one: `Permanent/General` for a bounce, the complaint feedback type for a complaint. */
|
|
3386
|
+
eventSubtype: Maybe<Scalars['String']['output']>;
|
|
3387
|
+
/** send | delivery | bounce | complaint | delivery_delay. Lower-case, as stored. */
|
|
3388
|
+
eventType: Scalars['String']['output'];
|
|
3389
|
+
/** SES message id. Present on the `send` row this API writes and on the feedback events SES publishes for it, which is what lets one send be matched to its own delivery rather than a previous run's. */
|
|
3390
|
+
messageId: Maybe<Scalars['String']['output']>;
|
|
3391
|
+
};
|
|
3392
|
+
/** An address's stored deliverability record. Absent (null) until SES reports something about the address. */
|
|
3393
|
+
export type EmailStatusRecord = {
|
|
3394
|
+
__typename?: 'EmailStatusRecord';
|
|
3395
|
+
bounceSubType: Maybe<Scalars['String']['output']>;
|
|
3396
|
+
/** Permanent | Transient | Undetermined, from SES. */
|
|
3397
|
+
bounceType: Maybe<Scalars['String']['output']>;
|
|
3398
|
+
complaintType: Maybe<Scalars['String']['output']>;
|
|
3399
|
+
deliveryAttempts: Maybe<Scalars['Int']['output']>;
|
|
3400
|
+
email: Scalars['String']['output'];
|
|
3401
|
+
/** True once SES has reported a permanent bounce or a complaint. This is what stops the address being sent to again. */
|
|
3402
|
+
isPermanentFailure: Maybe<Scalars['Boolean']['output']>;
|
|
3403
|
+
lastEventAt: Maybe<Scalars['String']['output']>;
|
|
3404
|
+
lastEventType: Maybe<Scalars['String']['output']>;
|
|
3405
|
+
messageId: Maybe<Scalars['String']['output']>;
|
|
3406
|
+
/** valid | bounced | complained. */
|
|
3407
|
+
status: Scalars['String']['output'];
|
|
3408
|
+
};
|
|
3351
3409
|
/** Compute units attributed to one engine over the query window. */
|
|
3352
3410
|
export type EngineComputeUnits = {
|
|
3353
3411
|
__typename?: 'EngineComputeUnits';
|
|
@@ -3950,6 +4008,8 @@ export type GmContainerType = {
|
|
|
3950
4008
|
__typename?: 'GmContainerType';
|
|
3951
4009
|
/** The app (tenant) that owns the type. */
|
|
3952
4010
|
appId: Scalars['BigInt']['output'];
|
|
4011
|
+
/** Who may CREATE a container of this type under a client-supplied bindingKey (gameModelEnsureContainer). Same JSON shape as a function invokePolicyJson — an AuthorityRule tree — except that owner_of_self, is_current_turn and condition are refused, because a bind creates the container and there is no acting container to resolve them against. Omit it (the default) and binding is governed by the type's instantiableBy alone, which is the behaviour before this field existed. Resolving an EXISTING key is unaffected: it is a read. For a shared world object, {"type":"is_host"} or instantiableBy: admin stops one player from squatting the key and becoming its owner. */
|
|
4012
|
+
bindPolicyJson: Maybe<Scalars['String']['output']>;
|
|
3953
4013
|
/** Default visibility for this type's properties: public | owner | hidden. */
|
|
3954
4014
|
defaultPropertyVisibility: Scalars['String']['output'];
|
|
3955
4015
|
/** Optional description of the type. */
|
|
@@ -5033,6 +5093,8 @@ export type Mutation = {
|
|
|
5033
5093
|
exchangePortalCode: AppTokenResponse;
|
|
5034
5094
|
/** ADMIN/DESTRUCTIVE: revokes ALL of the target user’s sessions by deleting every game_token row, forcing re-authentication on every device. Returns true if at least one session was revoked. Requires a super-admin bearer game token (and the management API enabled). */
|
|
5035
5095
|
forceLogoutUser: Scalars['Boolean']['output'];
|
|
5096
|
+
/** Operator only (is_operator). Deletes the stored deliverability rows for one address (email_status and email_events) and returns how many rows went. Exists so a verification run is not reading the previous run's events, and so an address suppressed by a bounce that has since been fixed can be given another chance. Returns 0 when there was nothing stored. */
|
|
5097
|
+
forgetEmailDeliverability: Scalars['Int']['output'];
|
|
5036
5098
|
/** Create a directed relationship edge between two containers (the game model is a graph), with a relationship type and optional weight. Requires a valid token. */
|
|
5037
5099
|
gameModelAddEdge: GmEdge;
|
|
5038
5100
|
/** Cancel pending timers by id or by dedupe key, returning how many were removed. A timer already claimed for execution cannot be cancelled. Requires app-admin ('manage_apps'). */
|
|
@@ -5057,7 +5119,7 @@ export type Mutation = {
|
|
|
5057
5119
|
gameModelDeleteFunction: Scalars['Boolean']['output'];
|
|
5058
5120
|
/** Delete a property definition from a container type. Does not remove instance property values already stored on containers. Requires app-admin ('manage_apps'). DESTRUCTIVE. Returns true if a definition was deleted. */
|
|
5059
5121
|
gameModelDeletePropertyDef: Scalars['Boolean']['output'];
|
|
5060
|
-
/** Atomically get-or-create a container by an opaque bindingKey, unique per (appId, typeName, sessionId). Concurrent ensures with the same key all return the SAME containerId and exactly one response has created: true — no client-side leader election or list-then-create coordination is needed for shared world objects. When the row already exists this behaves like a read (creation-only fields are ignored and the type's instantiableBy rule is NOT enforced); when it does not exist, creation is authorized exactly like gameModelCreateContainer (instantiableBy + owner rules), so a caller who may not instantiate the type errors only in the not-exists case.
|
|
5122
|
+
/** Atomically get-or-create a container by an opaque bindingKey, unique per (appId, typeName, sessionId). Concurrent ensures with the same key all return the SAME containerId and exactly one response has created: true — no client-side leader election or list-then-create coordination is needed for shared world objects. When the row already exists this behaves like a read (creation-only fields are ignored and the type's instantiableBy rule is NOT enforced); when it does not exist, creation is authorized exactly like gameModelCreateContainer (instantiableBy + owner rules) AND by the type's bindPolicy, so a caller who may not instantiate the type, or may not claim keys for it, errors only in the not-exists case. bindingKey is client-supplied, so on a member- or owner-instantiable type ANY entitled player may create the keyed row and becomes its owner — which inverts every owner_of_self invoke policy on that type. Set the container type's bindPolicy (e.g. {"type":"is_host"}), or use an admin-instantiable type, for any object more than one player shares. Requires a valid token. */
|
|
5061
5123
|
gameModelEnsureContainer: GmEnsureContainerResult;
|
|
5062
5124
|
/** Grant a feature key to an access tier, so users on that tier satisfy tier_feature authority checks for it. Requires app-admin ('manage_apps'). */
|
|
5063
5125
|
gameModelGrantTierFeature: GmTierFeature;
|
|
@@ -5213,6 +5275,8 @@ export type Mutation = {
|
|
|
5213
5275
|
sendClientEvent: Scalars['Boolean']['output'];
|
|
5214
5276
|
/** Send a direct actor-to-actor message, delivered only to the actor identified by targetUuid (NOT broadcast to nearby actors). The sender must know the destination actor’s current chunk. Requires a bearer game token; opens a UDP proxy session automatically if none exists. The target receives a SingleActorMessageNotification on udpNotifications; the sender receives no echo. Returns Boolean! that is true only when the datagram was ACCEPTED FOR SENDING — NOT confirmation of delivery; failures arrive ASYNCHRONOUSLY as GenericErrorResponse on udpNotifications, correlated by the request sequenceNumber (correlation only — not an idempotency key; the server does not dedupe replays). */
|
|
5215
5277
|
sendSingleActorMessage: Scalars['Boolean']['output'];
|
|
5278
|
+
/** Operator only (is_operator). Sends a plain test message to one address and returns the SES message id. SIDE EFFECTS: a real outbound email billed to the shared SES identity, and a `send` row in email_events. Prefer the AWS mailbox simulator (success@ / bounce@ / complaint@simulator.amazonses.com), which exercises the whole path without touching a real inbox or a real reputation. `sent: true` with `simulated: true` means SEND_EMAILS is off and nothing left the building -- read both fields. */
|
|
5279
|
+
sendTestEmail: SendTestEmailResult;
|
|
5216
5280
|
/** Send a spatial text/chat packet, fanned out to nearby actors as a ClientTextNotification. Requires a bearer game token; opens a UDP proxy session automatically if none exists. Returns Boolean! that is true only when the datagram was ACCEPTED FOR SENDING to the game server — NOT confirmation of delivery. The sender receives no echo; failures arrive ASYNCHRONOUSLY as GenericErrorResponse on udpNotifications, correlated by the request sequenceNumber (correlation only — not an idempotency key; the server does not dedupe replays). */
|
|
5217
5281
|
sendTextPacket: Scalars['Boolean']['output'];
|
|
5218
5282
|
/** Send a single voxel (block) update for spatial replication to nearby chunks. Requires a bearer game token; opens a UDP proxy session automatically if none exists. Returns Boolean! that is true only when the datagram was ACCEPTED FOR SENDING to the game server — NOT confirmation that the world applied the change. There is NO separate per-request success response: the change fans out to nearby clients (the sender included) as a VoxelUpdateNotification carrying the same sequenceNumber (VoxelUpdateResponse is legacy and is never emitted). Failures arrive ASYNCHRONOUSLY as a GenericErrorResponse; both are correlated by the request sequenceNumber (correlation only — not an idempotency key; the server does not dedupe replays). */
|
|
@@ -5249,6 +5313,8 @@ export type Mutation = {
|
|
|
5249
5313
|
setEarlyAccessOverride: User;
|
|
5250
5314
|
/** Replace the whitelist of permission keys allowed on a grid (writes the `grid_permission_limits` input table), then recompute the grid's materialized effective ACL so any keys no longer on the whitelist are dropped for all users. Pass an empty array to remove all limits. Requires app-admin ('manage_apps'). DESTRUCTIVE: narrowing the whitelist can strip effective permissions from existing users on the grid. */
|
|
5251
5315
|
setGridPermissionLimits: GridPermissionLimits;
|
|
5316
|
+
/** Adds a password to the signed-in account when it does not have one yet — for an account created by magic link or a social provider, which previously had no in-product way to add password sign-in. Requires a valid session token; the session is the proof of account control, so the password is usable immediately and no email confirmation is needed. Throws CONFLICT if a password is already set (use changePassword, which verifies the current one). A security notification is emailed to the account address. Existing sessions are not revoked. */
|
|
5317
|
+
setInitialPassword: Scalars['Boolean']['output'];
|
|
5252
5318
|
/** Set (author-only) the acquisition mode and pricing for a code listing. Non-free modes require completed seller onboarding. Curation can reject a listing but never reprice it (07 §1.2). */
|
|
5253
5319
|
setListingPricing: Scalars['Boolean']['output'];
|
|
5254
5320
|
/** Super-admin only. Flip users.is_operator to grant or revoke control-plane / operator access. */
|
|
@@ -5660,6 +5726,9 @@ export type MutationExchangePortalCodeArgs = {
|
|
|
5660
5726
|
export type MutationForceLogoutUserArgs = {
|
|
5661
5727
|
userId: Scalars['BigInt']['input'];
|
|
5662
5728
|
};
|
|
5729
|
+
export type MutationForgetEmailDeliverabilityArgs = {
|
|
5730
|
+
email: Scalars['String']['input'];
|
|
5731
|
+
};
|
|
5663
5732
|
export type MutationGameModelAddEdgeArgs = {
|
|
5664
5733
|
input: AddEdgeInput;
|
|
5665
5734
|
};
|
|
@@ -5974,6 +6043,10 @@ export type MutationSendClientEventArgs = {
|
|
|
5974
6043
|
export type MutationSendSingleActorMessageArgs = {
|
|
5975
6044
|
input: SingleActorMessageInput;
|
|
5976
6045
|
};
|
|
6046
|
+
export type MutationSendTestEmailArgs = {
|
|
6047
|
+
subject?: InputMaybe<Scalars['String']['input']>;
|
|
6048
|
+
to: Scalars['String']['input'];
|
|
6049
|
+
};
|
|
5977
6050
|
export type MutationSendTextPacketArgs = {
|
|
5978
6051
|
input: ClientTextPacketInput;
|
|
5979
6052
|
};
|
|
@@ -6048,6 +6121,9 @@ export type MutationSetEarlyAccessOverrideArgs = {
|
|
|
6048
6121
|
export type MutationSetGridPermissionLimitsArgs = {
|
|
6049
6122
|
input: SetGridPermissionLimitsInput;
|
|
6050
6123
|
};
|
|
6124
|
+
export type MutationSetInitialPasswordArgs = {
|
|
6125
|
+
newPassword: Scalars['String']['input'];
|
|
6126
|
+
};
|
|
6051
6127
|
export type MutationSetListingPricingArgs = {
|
|
6052
6128
|
input: SetListingPricingInput;
|
|
6053
6129
|
};
|
|
@@ -7463,6 +7539,10 @@ export type Query = {
|
|
|
7463
7539
|
crowdyStudioProjects: Array<CrowdyStudioProject>;
|
|
7464
7540
|
/** Resolves the single most-specific quota that applies to the given (tierId, appId, orgId, metric) by walking tier -> app -> org -> free-tier defaults and returning the first match; its limitValue/period describe the enforced limit. Returns null if no matching rule and no free-tier default exist for the metric. Requires the 'view_usage' permission on the most-specific scope provided: tierId or appId -> 'view_usage' on the (owning) app; orgId -> 'view_usage' on the org. A metric-only query (no scope ids) resolves the platform free-tier default and only requires an authenticated user. */
|
|
7465
7541
|
effectiveQuota: Maybe<ServiceQuota>;
|
|
7542
|
+
/** Operator only (is_operator). Everything this API knows about whether an address can be emailed: its stored status, whether its domain is suppressed, and the recent SES events for it (the `send` written when the message was handed to SES, and the `delivery` / `bounce` / `complaint` that came back on the SNS webhook). */
|
|
7543
|
+
emailDeliverability: EmailDeliverability;
|
|
7544
|
+
/** Operator only (is_operator). How THIS API instance is configured to send mail: whether sending is on, the From address, the SES configuration set, the region and the suppressed domains. Answers 'why did no email arrive' without an SSH session, and reports the instance that served the query rather than the fleet. */
|
|
7545
|
+
emailDeliveryConfig: EmailDeliveryConfig;
|
|
7466
7546
|
/** Reports whether a free-play window is active now, a human-readable schedule description, and the ISO-8601 start of the next window. PUBLIC: no authentication required. Takes no arguments; computed from server config and the current clock. */
|
|
7467
7547
|
freePlayWindowInfo: FreePlayWindowInfo;
|
|
7468
7548
|
/** Single startup payload for browser game clients: the authenticated user, server/min-client version requirements, current UDP proxy status, realtime protocol details (subprotocol + subscription name), and the spatial send limits/constants (maxReplicationDistance, maxDecayRate, sequenceNumberModulo). Requires a bearer game token. Read-only: does not open a UDP proxy session. Call this once after login to initialize a play session. */
|
|
@@ -7677,7 +7757,7 @@ export type Query = {
|
|
|
7677
7757
|
quotasForOrg: Array<ServiceQuota>;
|
|
7678
7758
|
/** Lists all valid runtime permission keys (e.g. "access", "teleport", "update_voxel_data", "use_voice_chat") that may be assigned to an access tier permissionKeys. PUBLIC: no authentication required. Ordered by the permission bit index. */
|
|
7679
7759
|
runtimePermissions: Array<Scalars['String']['output']>;
|
|
7680
|
-
/** Pick a low-load game server for a native (direct-UDP) client to connect to: returns a random server from the least-loaded ~20% (by client count) of ReadyForClients servers to spread load, always CO-LOCATED with the datacenter that holds the data for this app (all rows for one app live in a single datacenter).
|
|
7760
|
+
/** Pick a low-load game server for a native (direct-UDP) client to connect to: returns a random server from the least-loaded ~20% (by client count) of ReadyForClients servers to spread load, always CO-LOCATED with the datacenter that holds the data for this app (all rows for one app live in a single datacenter). This REFUSES rather than returning a Buddy elsewhere, because every gameplay write for the session would otherwise cross datacenters — invisible, because each write still succeeds — and the refusal tells you which of three situations you are in. If you reached the wrong datacenter (the shared entry name resolves to all of them, so this is the common case for a client that has not re-discovered) it is WRONG_DATACENTER, carrying gameApiUrl and gameApiWsUrl in extensions: reconnect there and retry, which the CrowdyJS and CrowdyCPP clients do for you. If the app’s own datacenter is not serving at all it is APP_UNAVAILABLE, deliberately with no endpoint. Only when this IS the app’s datacenter and it has no healthy co-located Buddy is it NO_LOCAL_BUDDY — also with no endpoint, because there is nowhere else to go; that one needs an operator. Requires a bearer game token; as a side effect it authorizes that token’s P2P session with the chosen Buddy so the native client’s spatial datagrams are accepted. Connect the native client to the returned ip4 and clientPort. Browser clients should instead use the UDP proxy (connectUdpProxy / udpNotifications) and do not need this. */
|
|
7681
7761
|
serverWithLeastClients: ServerStatus;
|
|
7682
7762
|
/** @deprecated Legacy monthly app-slot subscription catalog. New shared publishes use wallet usage billing only. */
|
|
7683
7763
|
sharedEnvPlans: Array<SharedEnvPlan>;
|
|
@@ -7992,6 +8072,10 @@ export type QueryEffectiveQuotaArgs = {
|
|
|
7992
8072
|
orgId?: InputMaybe<Scalars['BigInt']['input']>;
|
|
7993
8073
|
tierId?: InputMaybe<Scalars['BigInt']['input']>;
|
|
7994
8074
|
};
|
|
8075
|
+
export type QueryEmailDeliverabilityArgs = {
|
|
8076
|
+
email: Scalars['String']['input'];
|
|
8077
|
+
eventLimit?: InputMaybe<Scalars['Int']['input']>;
|
|
8078
|
+
};
|
|
7995
8079
|
export type QueryGameClientBootstrapArgs = {
|
|
7996
8080
|
appId: Scalars['BigInt']['input'];
|
|
7997
8081
|
};
|
|
@@ -8713,6 +8797,8 @@ export type SeedContainerInput = {
|
|
|
8713
8797
|
};
|
|
8714
8798
|
/** A container type to create as part of a seed. */
|
|
8715
8799
|
export type SeedContainerTypeInput = {
|
|
8800
|
+
/** Who may CREATE a container of this type under a client-supplied bindingKey (gameModelEnsureContainer). Same JSON shape as a function invokePolicyJson — an AuthorityRule tree — except that owner_of_self, is_current_turn and condition are refused, because a bind creates the container and there is no acting container to resolve them against. Omit it (the default) and binding is governed by the type's instantiableBy alone, which is the behaviour before this field existed. Resolving an EXISTING key is unaffected: it is a read. For a shared world object, {"type":"is_host"} or instantiableBy: admin stops one player from squatting the key and becoming its owner. */
|
|
8801
|
+
bindPolicyJson?: InputMaybe<Scalars['String']['input']>;
|
|
8716
8802
|
/** public | owner | hidden default for this type's properties. */
|
|
8717
8803
|
defaultPropertyVisibility?: InputMaybe<Scalars['String']['input']>;
|
|
8718
8804
|
/** Optional description of the type. */
|
|
@@ -8871,6 +8957,18 @@ export type SendAgentMessageInput = {
|
|
|
8871
8957
|
/** Owner/app active session UUID. */
|
|
8872
8958
|
sessionId: Scalars['String']['input'];
|
|
8873
8959
|
};
|
|
8960
|
+
/** Result of an operator test send. */
|
|
8961
|
+
export type SendTestEmailResult = {
|
|
8962
|
+
__typename?: 'SendTestEmailResult';
|
|
8963
|
+
/** The SES message id when a message was actually handed to SES. Null when sending is disabled on this instance, which is reported as sent=true by the same rule the product flows use, so READ THIS FIELD to tell a real send from a simulated one. */
|
|
8964
|
+
messageId: Maybe<Scalars['String']['output']>;
|
|
8965
|
+
/** Why a send was refused, when it was. */
|
|
8966
|
+
refusedReason: Maybe<Scalars['String']['output']>;
|
|
8967
|
+
/** Whether the send was attempted AND accepted. False means refused (suppressed domain, or a prior permanent bounce) or that SES rejected it. */
|
|
8968
|
+
sent: Scalars['Boolean']['output'];
|
|
8969
|
+
/** True when SEND_EMAILS is off and the message was logged rather than sent. sent=true with simulated=true means nothing left the building. */
|
|
8970
|
+
simulated: Scalars['Boolean']['output'];
|
|
8971
|
+
};
|
|
8874
8972
|
/** Notification received when the server sends a custom event. Received via the udpNotifications subscription. */
|
|
8875
8973
|
export type ServerEventNotification = {
|
|
8876
8974
|
__typename?: 'ServerEventNotification';
|
|
@@ -9889,6 +9987,8 @@ export type UpsertComputeTriggerInput = {
|
|
|
9889
9987
|
export type UpsertContainerTypeInput = {
|
|
9890
9988
|
/** The app (tenant) that owns the type. */
|
|
9891
9989
|
appId: Scalars['BigInt']['input'];
|
|
9990
|
+
/** Who may CREATE a container of this type under a client-supplied bindingKey (gameModelEnsureContainer). Same JSON shape as a function invokePolicyJson — an AuthorityRule tree — except that owner_of_self, is_current_turn and condition are refused, because a bind creates the container and there is no acting container to resolve them against. Omit it (the default) and binding is governed by the type's instantiableBy alone, which is the behaviour before this field existed. Resolving an EXISTING key is unaffected: it is a read. For a shared world object, {"type":"is_host"} or instantiableBy: admin stops one player from squatting the key and becoming its owner. */
|
|
9991
|
+
bindPolicyJson?: InputMaybe<Scalars['String']['input']>;
|
|
9892
9992
|
/** public | owner | hidden default for this type's properties. */
|
|
9893
9993
|
defaultPropertyVisibility?: InputMaybe<Scalars['String']['input']>;
|
|
9894
9994
|
/** Optional description of the type. */
|
|
@@ -10148,7 +10248,7 @@ export type UserEdge = {
|
|
|
10148
10248
|
/** The node at the end of this edge. */
|
|
10149
10249
|
node: User;
|
|
10150
10250
|
};
|
|
10151
|
-
/** A
|
|
10251
|
+
/** A sign-in identity linked to a user account: a social provider, an emailed magic link, or a password. */
|
|
10152
10252
|
export type UserIdentity = {
|
|
10153
10253
|
__typename?: 'UserIdentity';
|
|
10154
10254
|
createdAt: Scalars['DateTime']['output'];
|
|
@@ -10156,7 +10256,7 @@ export type UserIdentity = {
|
|
|
10156
10256
|
emailVerified: Scalars['Boolean']['output'];
|
|
10157
10257
|
identityId: Scalars['ID']['output'];
|
|
10158
10258
|
lastLoginAt: Maybe<Scalars['DateTime']['output']>;
|
|
10159
|
-
/** The identity provider: 'google' | 'apple' | 'discord' | 'email' (magic link) | 'dev'
|
|
10259
|
+
/** The identity provider: 'google' | 'apple' | 'discord' | 'email' (magic link) | 'password'. 'dev' is a RETIRED value that appears on identities created before the dev sign-in bypass was removed; it cannot be created and cannot be signed in with. */
|
|
10160
10260
|
provider: Scalars['String']['output'];
|
|
10161
10261
|
/** The provider's stable subject id ('sub'). For 'email'/'dev' this is the lowercased email. */
|
|
10162
10262
|
subject: Scalars['String']['output'];
|