crowdypy 0.17.0.dev1__tar.gz → 0.18.0.dev1__tar.gz
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.
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/MIGRATION.md +25 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/PKG-INFO +3 -1
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/README.md +2 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/docs/compatibility.md +1 -1
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/docs/parity-matrix.md +8 -3
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/pyproject.toml +8 -8
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/schema.gql +141 -10
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_generated/enums.py +1 -1
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_generated/inputs.py +15 -4
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_generated/operations.py +1 -1
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/app_access.py +7 -2
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/apps.py +2 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/managed_players.py +4 -1
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/udp.py +12 -4
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/world.py +4 -1
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_version.py +1 -1
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/app_access.py +7 -2
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/apps.py +2 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/managed_players.py +4 -1
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/udp.py +12 -4
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/player_host/schemas.v1.json +2 -2
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/replication.py +9 -2
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/world.py +4 -1
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/fixtures/player-host.v1.json +2 -2
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/unit/test_sdk_audience.py +7 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tools/parity/classifications.toml +5 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/uv.lock +1 -1
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/CMakeLists.txt +1 -1
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/PROVENANCE.md +1 -1
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/admin.hpp +4 -1
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/generated/enums.hpp +1 -1
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/generated/operations.hpp +1 -1
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/replication/connection.hpp +8 -3
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/world.hpp +2 -2
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/package.json +6 -6
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/tools/parity/fixtures/crowdy-studio-diagnostics.v1.json +2 -2
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/tools/parity/fixtures/crowdyjs-studio-layout.v1.json +2 -2
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/.gitattributes +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/.gitignore +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/.gitleaks.toml +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/AGENTS.md +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/CMakeLists.txt +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/LICENSE +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/SECURITY.md +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/benchmarks/README.md +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/benchmarks/bench_replication.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/docs/e2e-coverage.md +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/licenses/OpenSSL-LICENSE.txt +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/native/common.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/native/module.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/native/replication.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/native/replication_binding.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/native/session_binding.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/native/voice_binding.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/native/wire_binding.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/actors/Actor.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/actors/Actors.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/actors/BatchLookupActors.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/actors/CreateActor.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/actors/DeleteActor.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/actors/UpdateActor.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/actors/UpdateActorState.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/appAccess/AppAccessTiers.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/appAccess/AppFeatures.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/appAccess/AppGrantMemberCandidates.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/appAccess/AppUserAccessByApp.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/appAccess/ArchiveAccessTier.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/appAccess/ClaimFreeAppAccess.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/appAccess/CreateAccessTier.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/appAccess/DefineAppFeature.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/appAccess/GrantAppAccess.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/appAccess/GrantMyAppAccess.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/appAccess/GrantTierFeature.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/appAccess/MyAppAccess.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/appAccess/RevokeAppAccess.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/appAccess/RevokeTierFeature.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/appAccess/RuntimePermissions.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/appAccess/SuspendAppAccess.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/appAccess/TierFeatures.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/appAccess/UpdateAccessTier.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/apps/App.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/apps/AppBySlug.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/apps/AppDiscovery.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/apps/AppsForOrg.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/apps/ArchiveApp.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/apps/CodeAdmissions.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/apps/CreateApp.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/apps/MarketplaceApps.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/apps/MyApps.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/apps/PlaceableDatacenters.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/apps/UpdateApp.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/auth/Logout.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/auth/LogoutAllDevices.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/avatars/Avatars.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/billing/AppBudget.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/billing/AppBudgets.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/billing/SetAppBudget.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/billing/WalletBalance.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/billing/WalletTransactions.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/channels/AddChannelMember.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/channels/BanChannelMember.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/channels/Channel.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/channels/ChannelMembers.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/channels/ChannelPolicy.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/channels/ChannelRoles.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/channels/Channels.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/channels/CreateChannel.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/channels/CreateChannelRole.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/channels/DeleteChannel.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/channels/DeleteChannelRole.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/channels/JoinChannel.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/channels/LeaveChannel.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/channels/MyChannels.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/channels/RemoveChannelMember.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/channels/RequestToJoinChannel.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/channels/SetChannelMemberRoles.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/channels/SetChannelPolicy.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/channels/UnbanChannelMember.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/channels/UpdateChannel.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/channels/UpdateChannelRole.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/chunks/GetChunk.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/chunks/GetChunkLods.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/chunks/GetChunksByDistance.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/chunks/GetVoxelList.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/chunks/UpdateChunk.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/chunks/UpdateChunkLods.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/chunks/UpdateChunkState.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/crowdyStudio/CrowdyStudio.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/exec/Exec.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/gameApps/GameApps.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/grids/CreateGridChannel.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/grids/GridChannels.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/grids/MintGridToken.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/host/Host.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/inputLog/InputLogMessages.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/inputLog/InputLogSessions.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/managedPlayers/AppManagedPlayerMods.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/managedPlayers/DeleteManagedPlayer.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/managedPlayers/EndManagedPlayerSessions.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/managedPlayers/ManagedPlayer.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/managedPlayers/ManagedPlayerFields.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/managedPlayers/ManagedPlayers.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/managedPlayers/OrgManagedPlayerSettings.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/managedPlayers/OrgSigningKeyFields.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/managedPlayers/OrgSigningKeys.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/managedPlayers/ProvisionManagedPlayers.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/managedPlayers/RegisterOrgSigningKey.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/managedPlayers/RevokeOrgSigningKey.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/managedPlayers/SetAppManagedPlayerMods.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/managedPlayers/UpdateManagedPlayer.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/marketplace/Marketplace.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/organizations/CreateOrgRole.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/organizations/CreateOrgToken.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/organizations/CreateOrganization.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/organizations/DeleteOrgRole.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/organizations/InviteOrgMember.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/organizations/MemberRoles.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/organizations/MyOrganizations.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/organizations/OrgMembers.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/organizations/OrgPermissions.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/organizations/OrgRoles.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/organizations/OrgTokens.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/organizations/Organization.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/organizations/OrganizationBySlug.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/organizations/RemoveOrgMember.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/organizations/RevokeOrgToken.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/organizations/UpdateOrgMemberRoles.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/organizations/UpdateOrgRole.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/organizations/UpdateOrgToken.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/payments/CapturePaypalCheckout.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/payments/CreateCheckout.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/payments/MyCheckouts.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/platform/PlatformConfig.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/playerWallet/PlayerWallet.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/quotas/DeleteQuota.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/quotas/EffectiveQuota.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/quotas/QuotasForApp.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/quotas/QuotasForOrg.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/quotas/SetQuota.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/serverStatus/ActiveGraphQLServers.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/serverStatus/GameClientBootstrap.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/serverStatus/GraphqlServers.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/serverStatus/ServerWithLeastClients.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/serverStatus/VersionInfo.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/sharedEnvironment/SharedEnvironment.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/state/DeleteUserAppState.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/state/UpdateUserAppState.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/state/UserAppState.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/state/UserAppStates.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/teams/AddTeamMember.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/teams/BanTeamMember.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/teams/CreateTeam.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/teams/CreateTeamRole.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/teams/DeleteTeam.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/teams/DeleteTeamRole.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/teams/JoinTeam.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/teams/LeaveTeam.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/teams/MyTeams.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/teams/RemoveTeamMember.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/teams/RequestToJoinTeam.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/teams/SetTeamMemberRoles.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/teams/SetTeamPolicy.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/teams/Team.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/teams/TeamMembers.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/teams/TeamPolicy.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/teams/TeamRoles.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/teams/Teams.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/teams/UnbanTeamMember.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/teams/UpdateTeam.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/teams/UpdateTeamRole.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/teleport/TeleportRequest.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/usage/AppGraphqlOperations.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/usage/AppUsageSummary.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/usage/PlayerPulse.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/users/DeleteMyAccount.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/users/FreePlayWindow.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/users/Me.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/users/PlayerProfile.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/users/UpdateGamertag.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/users/UpdateUserState.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/users/User.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/voxels/ListVoxelUpdatesByDistance.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/voxels/ListVoxels.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/voxels/RollbackVoxelUpdates.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/voxels/UpdateVoxel.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/operations/voxels/VoxelUpdateHistory.graphql +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/scripts/_pins.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/scripts/ci/assert_default_origin.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/scripts/ci/build_openssl.sh +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/scripts/ci/check_content_policy.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/scripts/ci/check_pin_tiers.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/scripts/ci/cibw_before_all_linux.sh +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/scripts/ci/resolve-release-tier.sh +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/scripts/ci/resolve-release-tier.test.sh +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/scripts/ci/resolve_pypi_version.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/scripts/ci/stamp_version.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/scripts/ci/verify_artifacts.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/scripts/codegen.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/scripts/schema_drift.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/scripts/schema_sync.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/scripts/unasync.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/scripts/vendor_crowdycpp.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/__init__.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_concurrency.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_default_origin.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_generated/__init__.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_grid.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_native.pyi +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_operation.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/__init__.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/client.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/__init__.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/_base.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/actors.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/admin.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/auth.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/avatars.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/billing.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/channels.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/chunks.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/crowdy_studio.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/crowdy_studio_agent.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/crowdy_studio_github.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/discovery.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/exec.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/game_apps.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/grids.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/host.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/input_log.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/marketplace.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/organizations.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/payments.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/platform.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/player_wallet.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/portal.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/quotas.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/server_status.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/shared_environment.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/state.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/teams.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/teleport.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/usage.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/users.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/domains/voxels.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/graphql.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/grid_scope.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/kit/__init__.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/kit/actions.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/kit/kit.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/kit/mirror.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/kit/modules/__init__.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/kit/modules/arenas.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/kit/modules/encounters.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/kit/modules/instances.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/kit/modules/leaderboards.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/kit/modules/market.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/kit/modules/matchmaking.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/kit/modules/minigames.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/kit/modules/npcs.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/kit/modules/player.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/kit/modules/presence.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/kit/modules/racing.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/kit/modules/sessions.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/kit/modules/tables.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/kit/modules/tactics.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/kit/modules/territory.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/kit/modules/world.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/kit/protocol.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/kit/realtime.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/kit/runtime.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/kit/social.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/kit/store.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/kit/topology.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/kit/wire.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/rediscover.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/_sync/stores.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/auth_state.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/client.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/codecs.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/datacenter_redirect.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/__init__.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/_base.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/actors.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/admin.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/auth.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/avatars.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/billing.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/channels.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/chunks.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/crowdy_studio.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/crowdy_studio_agent.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/crowdy_studio_github.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/discovery.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/exec.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/game_apps.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/grids.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/host.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/input_log.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/marketplace.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/organizations.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/payments.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/platform.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/player_wallet.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/portal.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/quotas.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/server_status.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/shared_environment.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/state.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/teams.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/teleport.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/usage.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/users.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/domains/voxels.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/enums.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/errors.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/estate.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/exec_gateway.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/graphql.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/grid_scope.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/inputs.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/kit/__init__.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/kit/actions.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/kit/kit.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/kit/mirror.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/kit/modules/__init__.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/kit/modules/arenas.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/kit/modules/encounters.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/kit/modules/instances.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/kit/modules/leaderboards.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/kit/modules/market.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/kit/modules/matchmaking.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/kit/modules/minigames.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/kit/modules/npcs.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/kit/modules/player.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/kit/modules/presence.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/kit/modules/racing.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/kit/modules/sessions.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/kit/modules/tables.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/kit/modules/tactics.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/kit/modules/territory.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/kit/modules/world.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/kit/protocol.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/kit/realtime.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/kit/runtime.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/kit/social.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/kit/store.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/kit/topology.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/kit/wire.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/lb_cookie.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/media.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/pkce.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/player_host/__init__.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/player_host/agent_errors.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/player_host/agent_types.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/player_host/json_schema.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/player_host/schemas.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/player_host/types.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/py.typed +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/rediscover.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/session.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/stores.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/studio/__init__.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/studio/client_tick_interval.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/studio/controller.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/studio/diagnostics.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/studio/github_new_repo.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/studio/layout.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/studio/models.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/studio/starter_projects.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/subscriptions.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/sync.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/utils.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/src/crowdypy/wire.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/conftest.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/e2e/__init__.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/e2e/conftest.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/e2e/test_e2e_identity.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/e2e/test_e2e_input_log.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/e2e/test_e2e_open_grid_exec_gateway.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/e2e/test_e2e_ranged_channel.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/e2e/test_e2e_replication.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/e2e/test_e2e_studio.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/e2e/test_e2e_world.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/e2e/test_e2e_world_data.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/fixtures/README.md +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/fixtures/binary-wire-fixtures.json +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/fixtures/exec-client-frames.json +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/fixtures/kit-protocol.json +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/fixtures/voice-frames.json +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/unit/__init__.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/unit/domains/__init__.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/unit/domains/test_crowdycpp_roots.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/unit/domains/test_input_log_reads.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/unit/domains/test_managed_players.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/unit/domains/test_org_domains.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/unit/domains/test_social_domains.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/unit/domains/test_studio_exec_domains.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/unit/domains/test_world_domains.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/unit/test_check_pin_tiers.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/unit/test_core.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/unit/test_durable_stores.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/unit/test_estate_moves.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/unit/test_exec_gateway.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/unit/test_fixture_provenance.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/unit/test_grid_scope.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/unit/test_kit.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/unit/test_kit_protocol.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/unit/test_lazy_exports.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/unit/test_player_host.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/unit/test_refusals.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/unit/test_release_versions.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/unit/test_replication.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/unit/test_studio_controller.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/unit/test_studio_diagnostics.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/unit/test_studio_layout.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/unit/test_subscriptions.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/unit/test_transport.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/unit/test_udp_api.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/unit/test_voice_frames.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/unit/test_wire.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tests/unit/test_world_session.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tools/e2e/provision.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tools/fixtures/player_host.mjs +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/tools/parity/parity.py +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/LICENSE +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/cmake/CheckPublicHeaders.cmake +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/cmake/CrowdyCPPConfig.cmake.in +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/cmake/CrowdyFindOpus.cmake +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/cmake/studio_layout_fixture.hpp.in +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/client.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/core/base64.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/core/bytes.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/core/clock.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/core/crypto.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/core/logger.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/core/result.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/core/spsc.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/core/uuid.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/crowdy.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/default_origin.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/auth.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/crowdy_studio.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/crowdy_studio_agent.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/crowdy_studio_github.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/discovery.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/domain_base.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/exec.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/game_apps.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/grids.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/groups.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/marketplace.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/player_wallet.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/portal.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/realtime_control.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/server_status.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/types.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/users.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/world_data.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/async_scope.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/auth_state.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/cancel.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/datacenter_redirect.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/dispatcher.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/errors.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/estate.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/graphql_client.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/http.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/json.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/rediscover.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/subscription_client.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/websocket.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/actions.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/economy.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/genres.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/kit.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/mirror.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/modules.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/protocol.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/realtime.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/runtime.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/social.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/topology.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/wire.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/media/opus.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/media/video_frames.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/media/voice_frames.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/player_host/adapter.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/player_host/player_host.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/player_host/schemas.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/player_host/types.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/replication/session_provider.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/replication/types.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/replication/udp_socket.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/session/chunk_store.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/session/codec.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/session/durable.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/session/keys.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/session/stores.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/session/world_session.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/controller.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/diagnostics.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/editor.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/github.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/github_layout.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/integration.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/layout.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/models.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/runtime.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/wire/codec.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/include/crowdy/wire/protocol.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/client.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/core/base64.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/core/clock.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/core/crypto_default_unavailable.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/core/crypto_openssl.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/core/crypto_unavailable.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/core/logger.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/core/uuid.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/domains/exec.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/graphql/async_transport.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/graphql/auth_state.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/graphql/error_extensions.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/graphql/errors.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/graphql/graphql_client.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/graphql/http_curl.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/graphql/http_none.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/graphql/json.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/graphql/subscription_client.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/graphql/websocket_curl.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/graphql/websocket_none.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/kit/economy.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/kit/genres.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/kit/mirror.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/kit/modules.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/kit/protocol.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/kit/runtime.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/kit/topology.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/media/opus.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/player_host/schemas.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/player_host/types.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/replication/connection.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/replication/socket_errors.hpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/replication/udp_socket.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/session/world_session.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/studio/diagnostics.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/studio/editor.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/src/studio/integration.cpp +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/third_party/yyjson/LICENSE +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/third_party/yyjson/yyjson.c +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/third_party/yyjson/yyjson.h +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/tools/parity/fixtures/exec-client-frames.json +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/tools/parity/fixtures/exec-gateway-cases.json +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/tools/parity/fixtures/kit-protocol.json +0 -0
- {crowdypy-0.17.0.dev1 → crowdypy-0.18.0.dev1}/vendor/CrowdyCPP/tools/parity/fixtures/voice-frames.json +0 -0
|
@@ -3,6 +3,31 @@
|
|
|
3
3
|
CrowdyPy is pre-1.0. Within a minor line, patch releases keep source compatibility; each
|
|
4
4
|
new minor may change the API. Read the section for every minor you skip.
|
|
5
5
|
|
|
6
|
+
## 0.18.0
|
|
7
|
+
|
|
8
|
+
CrowdyJS 18.18.0 and CrowdyCPP 0.70.0. No API change. ck-api v2.55.0 adds two app-level
|
|
9
|
+
permission keys, and the realtime servers enforce them:
|
|
10
|
+
|
|
11
|
+
- **`use_text_chat`** for proximity text (`client.udp.send_text_packet`, `World.send_text`,
|
|
12
|
+
the replication connection's `send_text_packet`) and for text on a channel
|
|
13
|
+
(`send_channel_message`, `send_ranged_channel_message`).
|
|
14
|
+
- **`use_direct_messages`** for `send_single_actor_message` and `World.send_to_actor`.
|
|
15
|
+
|
|
16
|
+
Without the key the server answers `UNAUTHORIZED` for the send's sequence number. Every
|
|
17
|
+
access tier that grants `access` has both: ck-api adds them when a tier is created or updated
|
|
18
|
+
(`client.app_access.create_tier` / `update_tier`) unless `applyCommunicationDefaults` is false,
|
|
19
|
+
and an operator backfilled the existing tiers. An app that wants some players without chat
|
|
20
|
+
removes a key from their tier.
|
|
21
|
+
|
|
22
|
+
Also from ck-api v2.54.0 and v2.55.0:
|
|
23
|
+
|
|
24
|
+
- `client.managed_players.delete` now erases the player's content within minutes; a legal hold
|
|
25
|
+
on the player or its organization refuses it with `LEGAL_HOLD`.
|
|
26
|
+
- `client.apps.update(app_id, {"replayLoggingRecordsMedia": False})` leaves voice and video out
|
|
27
|
+
of the app's recording (default true).
|
|
28
|
+
- The operator fields for account erasure and legal holds are not wrapped, as in CrowdyJS and
|
|
29
|
+
CrowdyCPP: the SDK is for players, developers and org-admins.
|
|
30
|
+
|
|
6
31
|
## 0.17.0
|
|
7
32
|
|
|
8
33
|
CrowdyJS 18.17.0 and CrowdyCPP 0.69.0. Additive. ck-api v2.53.0 serves org-managed players on
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: crowdypy
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.18.0.dev1
|
|
4
4
|
Summary: Official Python SDK for Crowded Kingdoms: typed GraphQL clients and a native UDP replication core
|
|
5
5
|
Keywords: crowded-kingdoms,multiplayer,replication,graphql,sdk,udp
|
|
6
6
|
Author: Crowded Kingdoms
|
|
@@ -51,6 +51,8 @@ CrowdyPy follows the [CrowdyJS](https://github.com/CrowdedKingdoms/CrowdyJS) API
|
|
|
51
51
|
client, bound with [nanobind](https://github.com/wjakob/nanobind) and shipped inside the
|
|
52
52
|
wheel. Python never touches a datagram.
|
|
53
53
|
|
|
54
|
+
**v0.18.0: text chat and direct-message keys, and the recording switch.** Game API v2.55.0 adds the app-level `use_text_chat` and `use_direct_messages` keys: without them the realtime servers refuse a player's text, channel text and direct messages with `UNAUTHORIZED`. A tier that grants `access` gets both unless `applyCommunicationDefaults` is false, and `replayLoggingRecordsMedia` leaves voice and video out of an app's recording. Deleting a managed player now erases its content, and a legal hold refuses it with `LEGAL_HOLD`. See [MIGRATION.md](MIGRATION.md).
|
|
55
|
+
|
|
54
56
|
**v0.17.0: the Org-Managed Players Addendum.** ck-api v2.53.0 serves org-managed players on every tier, once an admin of the organization has accepted the addendum in Studio; until then its sign-ins and refreshes answer `ORG_LEGAL_ACCEPTANCE_REQUIRED`, which `crowdypy.errors.org_legal_acceptance_required_of` reads, and `client.managed_players.settings(org_id)` says where the organization stands. CrowdyJS 18.17.0 and CrowdyCPP 0.69.0. See [MIGRATION.md](MIGRATION.md).
|
|
55
57
|
|
|
56
58
|
**v0.16.0: org-managed players.** An organization that runs its own accounts signs its players in itself: its server mints a player's app token with an org token, or its sign-in service signs an assertion. A device holds the first with `client.portal.adopt_app_token(response)` (it refuses an org token, which stays on the organization's server; there is no org-token mint wrapper) or trades the second with `client.portal.exchange_managed_player_assertion(app_id, assertion)`, and gives the result to `client.set_app_token`. `client.managed_players` is the organization's administration. CrowdyJS 18.16.0 and CrowdyCPP 0.68.0. See [MIGRATION.md](MIGRATION.md).
|
|
@@ -11,6 +11,8 @@ CrowdyPy follows the [CrowdyJS](https://github.com/CrowdedKingdoms/CrowdyJS) API
|
|
|
11
11
|
client, bound with [nanobind](https://github.com/wjakob/nanobind) and shipped inside the
|
|
12
12
|
wheel. Python never touches a datagram.
|
|
13
13
|
|
|
14
|
+
**v0.18.0: text chat and direct-message keys, and the recording switch.** Game API v2.55.0 adds the app-level `use_text_chat` and `use_direct_messages` keys: without them the realtime servers refuse a player's text, channel text and direct messages with `UNAUTHORIZED`. A tier that grants `access` gets both unless `applyCommunicationDefaults` is false, and `replayLoggingRecordsMedia` leaves voice and video out of an app's recording. Deleting a managed player now erases its content, and a legal hold refuses it with `LEGAL_HOLD`. See [MIGRATION.md](MIGRATION.md).
|
|
15
|
+
|
|
14
16
|
**v0.17.0: the Org-Managed Players Addendum.** ck-api v2.53.0 serves org-managed players on every tier, once an admin of the organization has accepted the addendum in Studio; until then its sign-ins and refreshes answer `ORG_LEGAL_ACCEPTANCE_REQUIRED`, which `crowdypy.errors.org_legal_acceptance_required_of` reads, and `client.managed_players.settings(org_id)` says where the organization stands. CrowdyJS 18.17.0 and CrowdyCPP 0.69.0. See [MIGRATION.md](MIGRATION.md).
|
|
15
17
|
|
|
16
18
|
**v0.16.0: org-managed players.** An organization that runs its own accounts signs its players in itself: its server mints a player's app token with an org token, or its sign-in service signs an assertion. A device holds the first with `client.portal.adopt_app_token(response)` (it refuses an org token, which stays on the organization's server; there is no org-token mint wrapper) or trades the second with `client.portal.exchange_managed_player_assertion(app_id, assertion)`, and gives the result to `client.set_app_token`. `client.managed_players` is the organization's administration. CrowdyJS 18.16.0 and CrowdyCPP 0.68.0. See [MIGRATION.md](MIGRATION.md).
|
|
@@ -5,7 +5,7 @@ are in `pyproject.toml` (`[project].version`, `[tool.crowdypy.crowdyjs]`,
|
|
|
5
5
|
`[tool.crowdypy.crowdycpp]`); `tests/unit/test_release_versions.py` refuses this page when
|
|
6
6
|
its version disagrees.
|
|
7
7
|
|
|
8
|
-
- CrowdyPy `0.
|
|
8
|
+
- CrowdyPy `0.18.0`
|
|
9
9
|
- API surface: CrowdyJS (the pinned version and commit in `pyproject.toml`); the generated
|
|
10
10
|
`docs/parity-matrix.md` lists every covered method, every native equivalent and every
|
|
11
11
|
browser exclusion with its reason. The gate is strict: there are no portable gaps, and a
|
|
@@ -4,8 +4,8 @@ Generated by `tools/parity/parity.py`; do not edit by hand. Classifications live
|
|
|
4
4
|
|
|
5
5
|
## Target
|
|
6
6
|
|
|
7
|
-
- CrowdyJS: `18.
|
|
8
|
-
- CrowdyCPP (native core): `0.
|
|
7
|
+
- CrowdyJS: `18.18.0` at `e21a05d521249e402733f80eaa668fece4b45906`
|
|
8
|
+
- CrowdyCPP (native core): `0.70.0` at `2b67e3f976934224c4d45ded101655a38ed3eabc`
|
|
9
9
|
- schema.gql identical to CrowdyJS's: yes
|
|
10
10
|
- Gate mode: strict portable parity (every portable gap is release-blocking)
|
|
11
11
|
|
|
@@ -14,7 +14,7 @@ Generated by `tools/parity/parity.py`; do not edit by hand. Classifications live
|
|
|
14
14
|
- Covered: 1386
|
|
15
15
|
- Portable gap: 0
|
|
16
16
|
- Native equivalent: 46
|
|
17
|
-
- Browser exclusion:
|
|
17
|
+
- Browser exclusion: 121
|
|
18
18
|
- Deprecated roots: 2
|
|
19
19
|
- Unclassified: 0
|
|
20
20
|
|
|
@@ -157,10 +157,12 @@ Generated by `tools/parity/parity.py`; do not edit by hand. Classifications live
|
|
|
157
157
|
| `mutation.registerOrgSigningKey` | covered |
|
|
158
158
|
| `mutation.reinstateOrganization` | browser exclusion — operator-only organization lifecycle; not a game-client surface |
|
|
159
159
|
| `mutation.releaseClaimedGrid` | covered |
|
|
160
|
+
| `mutation.releaseLegalHold` | browser exclusion — super-admin or operator only; the SDK wraps nothing for platform roles (tooling calls it directly) |
|
|
160
161
|
| `mutation.removeChannelMember` | covered |
|
|
161
162
|
| `mutation.removeOrgMember` | covered |
|
|
162
163
|
| `mutation.removeSharedPaymentMethod` | covered |
|
|
163
164
|
| `mutation.removeTeamMember` | covered |
|
|
165
|
+
| `mutation.requestAccountErasure` | browser exclusion — super-admin or operator only; the SDK wraps nothing for platform roles (tooling calls it directly) |
|
|
164
166
|
| `mutation.requestLoginLink` | covered |
|
|
165
167
|
| `mutation.requestPasswordReset` | covered |
|
|
166
168
|
| `mutation.requestToJoinChannel` | covered |
|
|
@@ -211,6 +213,7 @@ Generated by `tools/parity/parity.py`; do not edit by hand. Classifications live
|
|
|
211
213
|
| `mutation.setHostedGameEnabled` | browser exclusion — publishes and administers browser game bundles on the Crowdy Games web host; a Python client has no bundle to publish |
|
|
212
214
|
| `mutation.setHostedGameListing` | browser exclusion — publishes and administers browser game bundles on the Crowdy Games web host; a Python client has no bundle to publish |
|
|
213
215
|
| `mutation.setInitialPassword` | covered |
|
|
216
|
+
| `mutation.setLegalHold` | browser exclusion — super-admin or operator only; the SDK wraps nothing for platform roles (tooling calls it directly) |
|
|
214
217
|
| `mutation.setOperator` | browser exclusion — super-admin or operator only; the SDK wraps nothing for platform roles (tooling calls it directly) |
|
|
215
218
|
| `mutation.setOrgBillingExempt` | browser exclusion — operator-only billing control; not a game-client surface |
|
|
216
219
|
| `mutation.setOrgManagedPlayerSettings` | browser exclusion — super-admin or operator only; the SDK wraps nothing for platform roles (tooling calls it directly) |
|
|
@@ -262,6 +265,7 @@ Generated by `tools/parity/parity.py`; do not edit by hand. Classifications live
|
|
|
262
265
|
| `mutation.updateUserType` | browser exclusion — super-admin or operator only; the SDK wraps nothing for platform roles (tooling calls it directly) |
|
|
263
266
|
| `mutation.updateVoxel` | covered |
|
|
264
267
|
| `query.accountBlock` | browser exclusion — super-admin or operator only; the SDK wraps nothing for platform roles (tooling calls it directly) |
|
|
268
|
+
| `query.accountErasure` | browser exclusion — super-admin or operator only; the SDK wraps nothing for platform roles (tooling calls it directly) |
|
|
265
269
|
| `query.activeGraphQLServers` | covered |
|
|
266
270
|
| `query.actor` | covered |
|
|
267
271
|
| `query.actors` | covered |
|
|
@@ -375,6 +379,7 @@ Generated by `tools/parity/parity.py`; do not edit by hand. Classifications live
|
|
|
375
379
|
| `query.hostedGames` | browser exclusion — catalog of browser games hosted on Crowdy Games; a Python client is not one of them |
|
|
376
380
|
| `query.inputLogMessages` | covered |
|
|
377
381
|
| `query.inputLogSessions` | covered |
|
|
382
|
+
| `query.legalHolds` | browser exclusion — super-admin or operator only; the SDK wraps nothing for platform roles (tooling calls it directly) |
|
|
378
383
|
| `query.listVoxelUpdatesByDistance` | covered |
|
|
379
384
|
| `query.listVoxels` | covered |
|
|
380
385
|
| `query.managedPlayer` | covered |
|
|
@@ -4,7 +4,7 @@ build-backend = "scikit_build_core.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "crowdypy"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.18.0.dev1"
|
|
8
8
|
description = "Official Python SDK for Crowded Kingdoms: typed GraphQL clients and a native UDP replication core"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT AND Apache-2.0"
|
|
@@ -119,19 +119,19 @@ environment = { OPENSSL_ROOT_DIR = "C:/vcpkg/installed/x64-windows-static-md" }
|
|
|
119
119
|
# --------------------------------------------------------------------------------------
|
|
120
120
|
|
|
121
121
|
[tool.crowdypy.crowdyjs]
|
|
122
|
-
version = "18.
|
|
123
|
-
commit = "
|
|
122
|
+
version = "18.18.0"
|
|
123
|
+
commit = "e21a05d521249e402733f80eaa668fece4b45906"
|
|
124
124
|
|
|
125
125
|
[tool.crowdypy.crowdycpp]
|
|
126
|
-
version = "0.
|
|
127
|
-
tag = "dev/v0.
|
|
128
|
-
commit = "
|
|
129
|
-
tree-sha256 = "
|
|
126
|
+
version = "0.70.0"
|
|
127
|
+
tag = "dev/v0.70.0"
|
|
128
|
+
commit = "2b67e3f976934224c4d45ded101655a38ed3eabc"
|
|
129
|
+
tree-sha256 = "ac181281169221b6de4c1073976c15f87493459ea0227a5229071be88dff1b32"
|
|
130
130
|
|
|
131
131
|
# schema.gql and operations/ are CrowdyJS's, copied from the commit pinned above by
|
|
132
132
|
# scripts/schema_sync.py, which records these hashes and re-derives them in CI.
|
|
133
133
|
[tool.crowdypy.graphql]
|
|
134
|
-
schema-sha256 = "
|
|
134
|
+
schema-sha256 = "aa15686351b9ce9a99a1127678a86e4c2c7e92b0d06b55655c99a1407b1a681d"
|
|
135
135
|
operations-sha256 = "32e2c43ac1bd00ec9c05902d524e82727cf560a88330f207704059a7a8a96189"
|
|
136
136
|
|
|
137
137
|
# The SDL the docs site publishes. scripts/schema_drift.py compares the snapshot against it
|
|
@@ -1337,6 +1337,10 @@ type App {
|
|
|
1337
1337
|
"""
|
|
1338
1338
|
replayLoggingEnabled: Boolean!
|
|
1339
1339
|
"""
|
|
1340
|
+
Whether replay logging records the app's voice, webcam video and channel audio messages too. True (the default) records them with every other message; false leaves them out of the input log while everything else is still recorded. Applies only while replayLoggingEnabled is on. Set with updateApp (manage_apps).
|
|
1341
|
+
"""
|
|
1342
|
+
replayLoggingRecordsMedia: Boolean!
|
|
1343
|
+
"""
|
|
1340
1344
|
Grid permission keys a player's claim grants its owner on the claimed grid (claimGridOwnership), beside the player-code keys the owner's tier carries; for example update_voxel_data makes a claim buildable without a hub granting it. Never a player-code key; the grid's permission limits still cap them. Empty by default. Set with updateApp (manage_apps).
|
|
1341
1345
|
"""
|
|
1342
1346
|
claimOwnerKeys: [String!]!
|
|
@@ -6646,6 +6650,68 @@ type CrowdyStudioModelUsage {
|
|
|
6646
6650
|
recent: [CrowdyStudioModelUsageEntry!]!
|
|
6647
6651
|
}
|
|
6648
6652
|
|
|
6653
|
+
"""
|
|
6654
|
+
A legal hold an operator set on an organization or on one account. While it applies, deleting a managed player it covers is refused with LEGAL_HOLD, a player’s own account deletion closes the account but keeps its content (and preserves its identity) until the hold is released, and no erasure runs. An organization’s hold covers its managed players. A released hold stays readable as the record.
|
|
6655
|
+
"""
|
|
6656
|
+
type LegalHold {
|
|
6657
|
+
"""The hold."""
|
|
6658
|
+
holdId: BigInt!
|
|
6659
|
+
"""
|
|
6660
|
+
The organization held (its public id), or null for a hold on one account.
|
|
6661
|
+
"""
|
|
6662
|
+
orgId: BigInt
|
|
6663
|
+
"""The account held, or null for a hold on an organization."""
|
|
6664
|
+
userId: BigInt
|
|
6665
|
+
"""Why, as the operator wrote it."""
|
|
6666
|
+
reason: String!
|
|
6667
|
+
"""The operator who set it."""
|
|
6668
|
+
setBy: BigInt!
|
|
6669
|
+
"""When it was set."""
|
|
6670
|
+
setAt: DateTime!
|
|
6671
|
+
"""The operator who released it, or null while it applies."""
|
|
6672
|
+
releasedBy: BigInt
|
|
6673
|
+
"""When it was released, or null while it applies."""
|
|
6674
|
+
releasedAt: DateTime
|
|
6675
|
+
"""Whether it applies now."""
|
|
6676
|
+
active: Boolean!
|
|
6677
|
+
}
|
|
6678
|
+
|
|
6679
|
+
"""
|
|
6680
|
+
An account erasure: what deleting an account erases (its player-side content) and where that stands. Usage, billing, audit and legal records stay, and so does everything the account owns as a developer.
|
|
6681
|
+
"""
|
|
6682
|
+
type AccountErasure {
|
|
6683
|
+
"""The deleted account."""
|
|
6684
|
+
userId: BigInt!
|
|
6685
|
+
"""
|
|
6686
|
+
PENDING (apps still to do), RUNNING (finishing), DONE, FAILED (the finish threw; it is retried) or DEFERRED_HOLD (a legal hold applies; nothing is erased until it is released).
|
|
6687
|
+
"""
|
|
6688
|
+
status: String!
|
|
6689
|
+
"""
|
|
6690
|
+
Why it was asked for: SELF_DELETE (the player deleted its own account), MANAGED_DELETE (its organization deleted it) or OPERATOR.
|
|
6691
|
+
"""
|
|
6692
|
+
reason: String!
|
|
6693
|
+
"""Who asked: user:<id>, org_token:<id> or operator:<id>."""
|
|
6694
|
+
requestedBy: String
|
|
6695
|
+
"""When it was asked for."""
|
|
6696
|
+
requestedAt: DateTime!
|
|
6697
|
+
"""When it finished, or null."""
|
|
6698
|
+
completedAt: DateTime
|
|
6699
|
+
"""Apps the account had content in."""
|
|
6700
|
+
apps: Int!
|
|
6701
|
+
"""Of those, the apps already erased."""
|
|
6702
|
+
appsDone: Int!
|
|
6703
|
+
"""The last error, from the finish or from an app, or null."""
|
|
6704
|
+
lastError: String
|
|
6705
|
+
"""
|
|
6706
|
+
What was erased, as JSON: rows removed per table, summed over the apps, and the account-wide rows.
|
|
6707
|
+
"""
|
|
6708
|
+
summary: String
|
|
6709
|
+
"""
|
|
6710
|
+
OPERATOR ONLY. While a legal hold defers the erasure, what the account row said before it was blanked (email, gamertag, external id, organization), as JSON; null otherwise.
|
|
6711
|
+
"""
|
|
6712
|
+
preservedIdentity: String
|
|
6713
|
+
}
|
|
6714
|
+
|
|
6649
6715
|
"""
|
|
6650
6716
|
Arbitrary-precision signed integer (used for 64-bit ids and chunk coordinates such as appId, userId and chunk x/y/z). ALWAYS transmitted as a base-10 decimal STRING in BOTH directions — send it quoted (e.g. "1024", "-5") and read it back as a string; never use a raw JSON number, because large values overflow IEEE-754 doubles. The server rejects any value that is not a valid integer string.
|
|
6651
6717
|
"""
|
|
@@ -7186,6 +7252,24 @@ type Query {
|
|
|
7186
7252
|
orgId: BigInt!
|
|
7187
7253
|
): [OrgSigningKey!]!
|
|
7188
7254
|
"""
|
|
7255
|
+
OPERATOR: where the erasure of a deleted account stands (what deleting it erases, app by app), or null if none was asked for. While a legal hold defers it, preservedIdentity carries what the account row said before it was blanked.
|
|
7256
|
+
"""
|
|
7257
|
+
accountErasure(
|
|
7258
|
+
"""The deleted account."""
|
|
7259
|
+
userId: BigInt!
|
|
7260
|
+
): AccountErasure @requiresPermission(scope: "operator", permission: "is_operator")
|
|
7261
|
+
"""
|
|
7262
|
+
OPERATOR: legal holds, newest first (at most 500), on one organization or account if given; only the ones that apply now unless includeReleased.
|
|
7263
|
+
"""
|
|
7264
|
+
legalHolds(
|
|
7265
|
+
"""Only holds on this organization (its public id)."""
|
|
7266
|
+
orgId: BigInt
|
|
7267
|
+
"""Only holds on this account."""
|
|
7268
|
+
userId: BigInt
|
|
7269
|
+
"""Also list released holds."""
|
|
7270
|
+
includeReleased: Boolean = false
|
|
7271
|
+
): [LegalHold!]! @requiresPermission(scope: "operator", permission: "is_operator")
|
|
7272
|
+
"""
|
|
7189
7273
|
A hosted third-party game by slug, or null when the slug is unclaimed. PUBLIC: the first-party shell at https://<games host>/<slug>/ calls this before sign-in to learn the contentOrigin it frames. Returns DISABLED and TAKEN_DOWN games too (with their status) so the shell can say why. Null when the tier does not host third-party games.
|
|
7190
7274
|
"""
|
|
7191
7275
|
hostedGame(
|
|
@@ -8612,7 +8696,7 @@ type Mutation {
|
|
|
8612
8696
|
userId: BigInt!
|
|
8613
8697
|
): AccountBlock! @requiresPermission(scope: "super_admin", permission: "is_super_admin")
|
|
8614
8698
|
"""
|
|
8615
|
-
DESTRUCTIVE self-service:
|
|
8699
|
+
DESTRUCTIVE self-service: deletes the authenticated caller's OWN account. Every session, app token, realtime connection and ck-exec socket ends; the email, password, gamertag and profile state are removed from the account; and its player-side content is erased within minutes: Crowdy Studio projects, libraries and agent sessions, mods, actors, avatars and saved state, access grants, grid claims, and team and channel memberships. Wallet, billing, usage, audit and legal records stay, and so does everything the account owns as a developer (organizations, apps, published games); world edits stay, under the account's now anonymous id; recorded inputs age out with the input log's retention. Acts only on the caller (no target argument). Requires a valid token.
|
|
8616
8700
|
"""
|
|
8617
8701
|
deleteMyAccount: Boolean!
|
|
8618
8702
|
"""
|
|
@@ -9092,7 +9176,7 @@ type Mutation {
|
|
|
9092
9176
|
input: CreateAppInput!
|
|
9093
9177
|
): App! @requiresPermission(scope: "org", permission: "manage_apps", scopeArg: "input.orgId")
|
|
9094
9178
|
"""
|
|
9095
|
-
Update mutable fields of an existing app (name, description, visibility, status, metadata, wildernessWritesOpen, replayLoggingEnabled); only fields present in the input are changed. Turning replayLoggingEnabled on is refused with INPUT_LOG_FUNDS_NEEDED unless the org's wallet can spend at least the projected cost of keeping one retention period of the app's recent traffic (extensions.requiredMicrousd and spendableMicrousd say how much), or the org is billing-exempt; recordings already kept go on billing after it is turned off, until they age out. Requires the 'manage_apps' permission on the app (resolved via its org); super admins bypass. Use this to publish (status=LIVE), change visibility, or restore an archived app (status back to DRAFT/LIVE). Throws if the app id does not exist.
|
|
9179
|
+
Update mutable fields of an existing app (name, description, visibility, status, metadata, wildernessWritesOpen, claimOwnerKeys, replayLoggingEnabled, replayLoggingRecordsMedia); only fields present in the input are changed. Turning replayLoggingEnabled on is refused with INPUT_LOG_FUNDS_NEEDED unless the org's wallet can spend at least the projected cost of keeping one retention period of the app's recent traffic (extensions.requiredMicrousd and spendableMicrousd say how much), or the org is billing-exempt; recordings already kept go on billing after it is turned off, until they age out. Requires the 'manage_apps' permission on the app (resolved via its org); super admins bypass. Use this to publish (status=LIVE), change visibility, or restore an archived app (status back to DRAFT/LIVE). Throws if the app id does not exist.
|
|
9096
9180
|
"""
|
|
9097
9181
|
updateApp(
|
|
9098
9182
|
"""Numeric id of the app to update."""
|
|
@@ -9207,7 +9291,7 @@ type Mutation {
|
|
|
9207
9291
|
externalId: String!
|
|
9208
9292
|
): Boolean!
|
|
9209
9293
|
"""
|
|
9210
|
-
Delete a managed player: its sessions end and its
|
|
9294
|
+
Delete a managed player, as an account deletion is: its sessions end, its externalId and gamertag are removed, and its player-side content is erased within minutes (Crowdy Studio projects, libraries and agent sessions, mods, actors, avatars and saved state, access grants, grid claims, team and channel memberships). Usage and billing records stay; world edits stay, under the account’s now anonymous id; recorded inputs age out with the input log’s retention. Refused with LEGAL_HOLD while a legal hold covers the player or the organization: disable it instead (updateManagedPlayer), which keeps everything. Signing the same external id in again creates a new player. False when there was no such player. An org token with players:manage, or an org admin with manage_players.
|
|
9211
9295
|
"""
|
|
9212
9296
|
deleteManagedPlayer(
|
|
9213
9297
|
"""
|
|
@@ -9261,6 +9345,27 @@ type Mutation {
|
|
|
9261
9345
|
enabled: Boolean!
|
|
9262
9346
|
): Boolean! @requiresPermission(scope: "app", permission: "manage_billing", scopeArg: "appId")
|
|
9263
9347
|
"""
|
|
9348
|
+
OPERATOR: erase the player-side content of a deleted account, as a deletion does: one deleted before account erasure existed (2026-10-23), or one whose erasure stopped after its retries (its attempts start again). Refused for an account that is not deleted. A legal hold defers it.
|
|
9349
|
+
"""
|
|
9350
|
+
requestAccountErasure(
|
|
9351
|
+
"""The deleted account to erase."""
|
|
9352
|
+
userId: BigInt!
|
|
9353
|
+
): AccountErasure! @requiresPermission(scope: "operator", permission: "is_operator")
|
|
9354
|
+
"""
|
|
9355
|
+
OPERATOR: put an organization (and its managed players) or one account under a legal hold. While it applies, deleting a managed player it covers is refused with LEGAL_HOLD, a player’s own deletion closes the account but keeps its content and preserves its identity, and no erasure runs.
|
|
9356
|
+
"""
|
|
9357
|
+
setLegalHold(
|
|
9358
|
+
"""What to hold, and why."""
|
|
9359
|
+
input: SetLegalHoldInput!
|
|
9360
|
+
): LegalHold! @requiresPermission(scope: "operator", permission: "is_operator")
|
|
9361
|
+
"""
|
|
9362
|
+
OPERATOR: release a legal hold. The hold stays as the record. Erasures it deferred resume once no other hold covers their accounts.
|
|
9363
|
+
"""
|
|
9364
|
+
releaseLegalHold(
|
|
9365
|
+
"""The hold to release."""
|
|
9366
|
+
holdId: BigInt!
|
|
9367
|
+
): LegalHold! @requiresPermission(scope: "operator", permission: "is_operator")
|
|
9368
|
+
"""
|
|
9264
9369
|
Claim the hosting slug for an app (idempotent; the same app re-claiming its slug is a no-op, a different slug MOVES the game). Registers https://<games host>/<slug>/ and https://<slug>.<content host> as the app's redirect URIs and sets launch_url to the former. Requires manage_apps on the app and a SESSION token. Refuses a slug that is not a DNS label, is reserved, or belongs to another app (HOSTED_SLUG_UNAVAILABLE), and answers CONTENT_HOSTING_DISABLED on a tier without a content CDN.
|
|
9265
9370
|
"""
|
|
9266
9371
|
claimGameHosting(input: ClaimGameHostingInput!): HostedGame!
|
|
@@ -10552,14 +10657,14 @@ type Mutation {
|
|
|
10552
10657
|
input: ClientVideoPacketInput!
|
|
10553
10658
|
): Boolean! @requiresPermission(scope: "runtime", permission: "use_video_chat", scopeArg: "input.appId")
|
|
10554
10659
|
"""
|
|
10555
|
-
Send a spatial text/chat packet, fanned out to nearby actors as a ClientTextNotification. Requires a bearer game token;
|
|
10660
|
+
Send a spatial text/chat packet, fanned out to nearby actors as a ClientTextNotification. Requires a bearer game token and the use_text_chat runtime permission on the app (a tier that grants access grants it unless the app took it away); without it the game server answers asynchronously with a GenericErrorResponse (errorCode UNAUTHORIZED). 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).
|
|
10556
10661
|
"""
|
|
10557
10662
|
sendTextPacket(
|
|
10558
10663
|
"""
|
|
10559
10664
|
The text/chat packet to send: target appId, chunk coordinates, 32-byte source uuid, UTF-8 text, and optional distance/decayRate/sequenceNumber. See ClientTextPacketInput.
|
|
10560
10665
|
"""
|
|
10561
10666
|
input: ClientTextPacketInput!
|
|
10562
|
-
): Boolean!
|
|
10667
|
+
): Boolean! @requiresPermission(scope: "runtime", permission: "use_text_chat", scopeArg: "input.appId")
|
|
10563
10668
|
"""
|
|
10564
10669
|
Send a custom, app-defined client event (identified by eventType, a uint16) for spatial replication to nearby chunks; nearby actors receive it as a ClientEventNotification. 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 — NOT that the world processed it. Failures arrive ASYNCHRONOUSLY as GenericErrorResponse on udpNotifications, correlated by the request sequenceNumber (correlation only — not an idempotency key; the server does not dedupe replays).
|
|
10565
10670
|
"""
|
|
@@ -10570,16 +10675,16 @@ type Mutation {
|
|
|
10570
10675
|
input: ClientEventNotificationInput!
|
|
10571
10676
|
): Boolean!
|
|
10572
10677
|
"""
|
|
10573
|
-
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;
|
|
10678
|
+
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 and the use_direct_messages runtime permission on the app (a tier that grants access grants it unless the app took it away); without it the game server answers asynchronously with a GenericErrorResponse (errorCode UNAUTHORIZED). 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).
|
|
10574
10679
|
"""
|
|
10575
10680
|
sendSingleActorMessage(
|
|
10576
10681
|
"""
|
|
10577
10682
|
The direct message to send: target appId, the DESTINATION actor’s chunk coordinates, the 32-byte targetUuid, base64 payload, and optional sequenceNumber. See SingleActorMessageInput.
|
|
10578
10683
|
"""
|
|
10579
10684
|
input: SingleActorMessageInput!
|
|
10580
|
-
): Boolean!
|
|
10685
|
+
): Boolean! @requiresPermission(scope: "runtime", permission: "use_direct_messages", scopeArg: "input.appId")
|
|
10581
10686
|
"""
|
|
10582
|
-
Publish a message to a channel, delivered to every active member of the channel (not chunk-routed) as a ChannelMessageNotification on udpNotifications. Requires a bearer game token
|
|
10687
|
+
Publish a message to a channel, delivered to every active member of the channel (not chunk-routed) as a ChannelMessageNotification on udpNotifications. Requires a bearer game token, the channel send_messages permission and the use_text_chat runtime permission on the channel’s app; lacking either the game server answers asynchronously with a GenericErrorResponse (errorCode UNAUTHORIZED). Opens a UDP proxy session automatically if none exists. 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).
|
|
10583
10688
|
"""
|
|
10584
10689
|
sendChannelMessage(
|
|
10585
10690
|
"""
|
|
@@ -10597,14 +10702,14 @@ type Mutation {
|
|
|
10597
10702
|
input: ChannelMessageInput!
|
|
10598
10703
|
): Boolean!
|
|
10599
10704
|
"""
|
|
10600
|
-
Publish a message to a channel that only reaches members near an origin chunk: a member receives it, as an ordinary ChannelMessageNotification on udpNotifications, when one of its live actors is in the same app within maxDistance chunks of input.chunk (straight-line distance between chunk coordinates, boundary included). A member with no live actor does not receive it. Requires a bearer game token
|
|
10705
|
+
Publish a message to a channel that only reaches members near an origin chunk: a member receives it, as an ordinary ChannelMessageNotification on udpNotifications, when one of its live actors is in the same app within maxDistance chunks of input.chunk (straight-line distance between chunk coordinates, boundary included). A member with no live actor does not receive it. Requires a bearer game token, the channel send_messages permission and use_text_chat, as for sendChannelMessage; the origin app must be the token’s app. Opens a UDP proxy session automatically if none exists. 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 (UNAUTHORIZED without the send right or use_text_chat, INVALID_APP_ID for another app), correlated by the request sequenceNumber (correlation only — not an idempotency key; the server does not dedupe replays).
|
|
10601
10706
|
"""
|
|
10602
10707
|
sendRangedChannelMessage(
|
|
10603
10708
|
"""
|
|
10604
10709
|
The channel message to publish: channelId (groups.group_id), the sender’s 32-byte actor uuid, base64 payload (max 1024 bytes), the origin appId and chunk, maxDistance in chunks, and optional sequenceNumber. See RangedChannelMessageInput.
|
|
10605
10710
|
"""
|
|
10606
10711
|
input: RangedChannelMessageInput!
|
|
10607
|
-
): Boolean!
|
|
10712
|
+
): Boolean! @requiresPermission(scope: "runtime", permission: "use_text_chat", scopeArg: "input.appId")
|
|
10608
10713
|
}
|
|
10609
10714
|
|
|
10610
10715
|
input UpdateGamertagInput {
|
|
@@ -10786,6 +10891,10 @@ input CreateAccessTierInput {
|
|
|
10786
10891
|
Optional runtime permission keys to grant on this tier (must be valid runtimePermissions). Defaults to ["access"] when omitted.
|
|
10787
10892
|
"""
|
|
10788
10893
|
permissionKeys: [String!]
|
|
10894
|
+
"""
|
|
10895
|
+
When true (the default) and the tier grants access, it also grants use_text_chat and use_direct_messages, whether or not permissionKeys names them: without them the realtime servers refuse the tier’s text chat and direct messages. Pass false to grant exactly permissionKeys, for example a tier without text chat.
|
|
10896
|
+
"""
|
|
10897
|
+
applyCommunicationDefaults: Boolean
|
|
10789
10898
|
}
|
|
10790
10899
|
|
|
10791
10900
|
"""
|
|
@@ -10816,6 +10925,10 @@ input UpdateAccessTierInput {
|
|
|
10816
10925
|
Replacement set of runtime permission keys for the tier (must be valid runtimePermissions). When provided, replaces the existing set entirely.
|
|
10817
10926
|
"""
|
|
10818
10927
|
permissionKeys: [String!]
|
|
10928
|
+
"""
|
|
10929
|
+
With permissionKeys: when true (the default) and the new set grants access, it also grants use_text_chat and use_direct_messages, whether or not permissionKeys names them. Pass false to set exactly permissionKeys, for example to take text chat away. Ignored without permissionKeys.
|
|
10930
|
+
"""
|
|
10931
|
+
applyCommunicationDefaults: Boolean
|
|
10819
10932
|
}
|
|
10820
10933
|
|
|
10821
10934
|
"""
|
|
@@ -11098,6 +11211,10 @@ input UpdateAppInput {
|
|
|
11098
11211
|
"""
|
|
11099
11212
|
replayLoggingEnabled: Boolean
|
|
11100
11213
|
"""
|
|
11214
|
+
With replay logging on, record the app's voice (sendAudioPacket), webcam video (sendVideoPacket) and channel audio (sendChannelAudio) too (true, the default) or leave them out of the input log (false); every other message is recorded either way. Takes effect within about 15 seconds; what was already recorded stays until it ages out. Omit to leave unchanged.
|
|
11215
|
+
"""
|
|
11216
|
+
replayLoggingRecordsMedia: Boolean
|
|
11217
|
+
"""
|
|
11101
11218
|
Grid permission keys a player's claim grants its owner on the claimed grid (at most 8; active grid keys; never a player-code key). An empty list grants none. Applies to claims made from now on. Omit to leave unchanged.
|
|
11102
11219
|
"""
|
|
11103
11220
|
claimOwnerKeys: [String!]
|
|
@@ -11284,6 +11401,20 @@ input ExchangeManagedPlayerAssertionInput {
|
|
|
11284
11401
|
assertion: String!
|
|
11285
11402
|
}
|
|
11286
11403
|
|
|
11404
|
+
"""
|
|
11405
|
+
A legal hold to set: exactly one of orgId (an organization and its managed players) and userId (one account), and why.
|
|
11406
|
+
"""
|
|
11407
|
+
input SetLegalHoldInput {
|
|
11408
|
+
"""The organization to hold (its public id). Covers its managed players."""
|
|
11409
|
+
orgId: BigInt
|
|
11410
|
+
"""The account to hold."""
|
|
11411
|
+
userId: BigInt
|
|
11412
|
+
"""
|
|
11413
|
+
Why the hold is set (the matter it preserves for), at most 500 characters.
|
|
11414
|
+
"""
|
|
11415
|
+
reason: String!
|
|
11416
|
+
}
|
|
11417
|
+
|
|
11287
11418
|
"""Claim (or re-assert) the hosting slug for an app."""
|
|
11288
11419
|
input ClaimGameHostingInput {
|
|
11289
11420
|
"""The app to host. Requires manage_apps on it."""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""GENERATED by scripts/codegen.py from schema.gql. Do not edit.
|
|
2
2
|
|
|
3
|
-
schema.gql sha256:
|
|
3
|
+
schema.gql sha256: aa15686351b9ce9a99a1127678a86e4c2c7e92b0d06b55655c99a1407b1a681d
|
|
4
4
|
"""
|
|
5
5
|
|
|
6
6
|
from enum import StrEnum
|
|
@@ -4,7 +4,7 @@ Every GraphQL input object as a msgspec Struct. Attributes are snake_case and en
|
|
|
4
4
|
under their GraphQL names; an attribute left at UNSET is omitted from the request,
|
|
5
5
|
which is how the API tells 'not provided' from an explicit null.
|
|
6
6
|
|
|
7
|
-
schema.gql sha256:
|
|
7
|
+
schema.gql sha256: aa15686351b9ce9a99a1127678a86e4c2c7e92b0d06b55655c99a1407b1a681d
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
10
|
from __future__ import annotations
|
|
@@ -191,7 +191,7 @@ class CompleteLoginLinkInput(msgspec.Struct, kw_only=True, omit_defaults=True):
|
|
|
191
191
|
token: str
|
|
192
192
|
|
|
193
193
|
|
|
194
|
-
class CreateAccessTierInput(msgspec.Struct, kw_only=True, omit_defaults=True, rename={'app_id': 'appId', 'tier_order': 'tierOrder', 'is_free': 'isFree', 'is_default': 'isDefault', 'permission_keys': 'permissionKeys'}):
|
|
194
|
+
class CreateAccessTierInput(msgspec.Struct, kw_only=True, omit_defaults=True, rename={'app_id': 'appId', 'tier_order': 'tierOrder', 'is_free': 'isFree', 'is_default': 'isDefault', 'permission_keys': 'permissionKeys', 'apply_communication_defaults': 'applyCommunicationDefaults'}):
|
|
195
195
|
'Input for creating a new app access tier.'
|
|
196
196
|
app_id: str
|
|
197
197
|
name: str
|
|
@@ -200,6 +200,7 @@ class CreateAccessTierInput(msgspec.Struct, kw_only=True, omit_defaults=True, re
|
|
|
200
200
|
is_default: bool | None | UnsetType = UNSET
|
|
201
201
|
description: str | None | UnsetType = UNSET
|
|
202
202
|
permission_keys: list[str] | None | UnsetType = UNSET
|
|
203
|
+
apply_communication_defaults: bool | None | UnsetType = UNSET
|
|
203
204
|
|
|
204
205
|
|
|
205
206
|
class CreateActorInput(msgspec.Struct, kw_only=True, omit_defaults=True, rename={'app_id': 'appId', 'avatar_id': 'avatarId', 'private_state': 'privateState', 'public_state': 'publicState'}):
|
|
@@ -970,6 +971,13 @@ class SetHostedGameListingInput(msgspec.Struct, kw_only=True, omit_defaults=True
|
|
|
970
971
|
listed: bool
|
|
971
972
|
|
|
972
973
|
|
|
974
|
+
class SetLegalHoldInput(msgspec.Struct, kw_only=True, omit_defaults=True, rename={'org_id': 'orgId', 'user_id': 'userId'}):
|
|
975
|
+
'A legal hold to set: exactly one of orgId (an organization and its managed players) and userId (one account), and why.'
|
|
976
|
+
org_id: str | None | UnsetType = UNSET
|
|
977
|
+
user_id: str | None | UnsetType = UNSET
|
|
978
|
+
reason: str
|
|
979
|
+
|
|
980
|
+
|
|
973
981
|
class SetMemberRolesInput(msgspec.Struct, kw_only=True, omit_defaults=True, rename={'group_id': 'groupId', 'user_id': 'userId', 'role_ids': 'roleIds'}):
|
|
974
982
|
"Replace a member's roles in a group (the listed roles become their full set)."
|
|
975
983
|
group_id: str
|
|
@@ -1066,7 +1074,7 @@ class TransferPlayerCodeListingInput(msgspec.Struct, kw_only=True, omit_defaults
|
|
|
1066
1074
|
to_owner_ref: str
|
|
1067
1075
|
|
|
1068
1076
|
|
|
1069
|
-
class UpdateAccessTierInput(msgspec.Struct, kw_only=True, omit_defaults=True, rename={'tier_order': 'tierOrder', 'is_free': 'isFree', 'is_default': 'isDefault', 'price_cents': 'priceCents', 'billing_period': 'billingPeriod', 'stripe_price_id': 'stripePriceId', 'paypal_plan_id': 'paypalPlanId', 'permission_keys': 'permissionKeys'}):
|
|
1077
|
+
class UpdateAccessTierInput(msgspec.Struct, kw_only=True, omit_defaults=True, rename={'tier_order': 'tierOrder', 'is_free': 'isFree', 'is_default': 'isDefault', 'price_cents': 'priceCents', 'billing_period': 'billingPeriod', 'stripe_price_id': 'stripePriceId', 'paypal_plan_id': 'paypalPlanId', 'permission_keys': 'permissionKeys', 'apply_communication_defaults': 'applyCommunicationDefaults'}):
|
|
1070
1078
|
'Fields to update on an access tier. All fields are optional; omitted fields are left unchanged.'
|
|
1071
1079
|
name: str | None | UnsetType = UNSET
|
|
1072
1080
|
tier_order: int | None | UnsetType = UNSET
|
|
@@ -1079,6 +1087,7 @@ class UpdateAccessTierInput(msgspec.Struct, kw_only=True, omit_defaults=True, re
|
|
|
1079
1087
|
stripe_price_id: str | None | UnsetType = UNSET
|
|
1080
1088
|
paypal_plan_id: str | None | UnsetType = UNSET
|
|
1081
1089
|
permission_keys: list[str] | None | UnsetType = UNSET
|
|
1090
|
+
apply_communication_defaults: bool | None | UnsetType = UNSET
|
|
1082
1091
|
|
|
1083
1092
|
|
|
1084
1093
|
class UpdateActorInput(msgspec.Struct, kw_only=True, omit_defaults=True, rename={'app_id': 'appId', 'avatar_id': 'avatarId', 'private_state': 'privateState', 'public_state': 'publicState'}):
|
|
@@ -1094,7 +1103,7 @@ class UpdateActorStateInput(msgspec.Struct, kw_only=True, omit_defaults=True, re
|
|
|
1094
1103
|
public_state: str | None | UnsetType = UNSET
|
|
1095
1104
|
|
|
1096
1105
|
|
|
1097
|
-
class UpdateAppInput(msgspec.Struct, kw_only=True, omit_defaults=True, rename={'wilderness_writes_open': 'wildernessWritesOpen', 'replay_logging_enabled': 'replayLoggingEnabled', 'claim_owner_keys': 'claimOwnerKeys'}):
|
|
1106
|
+
class UpdateAppInput(msgspec.Struct, kw_only=True, omit_defaults=True, rename={'wilderness_writes_open': 'wildernessWritesOpen', 'replay_logging_enabled': 'replayLoggingEnabled', 'replay_logging_records_media': 'replayLoggingRecordsMedia', 'claim_owner_keys': 'claimOwnerKeys'}):
|
|
1098
1107
|
'Input payload for updating an app. All fields are optional; only fields that are provided are changed.'
|
|
1099
1108
|
name: str | None | UnsetType = UNSET
|
|
1100
1109
|
description: str | None | UnsetType = UNSET
|
|
@@ -1103,6 +1112,7 @@ class UpdateAppInput(msgspec.Struct, kw_only=True, omit_defaults=True, rename={'
|
|
|
1103
1112
|
metadata: str | None | UnsetType = UNSET
|
|
1104
1113
|
wilderness_writes_open: bool | None | UnsetType = UNSET
|
|
1105
1114
|
replay_logging_enabled: bool | None | UnsetType = UNSET
|
|
1115
|
+
replay_logging_records_media: bool | None | UnsetType = UNSET
|
|
1106
1116
|
claim_owner_keys: list[str] | None | UnsetType = UNSET
|
|
1107
1117
|
|
|
1108
1118
|
|
|
@@ -1342,6 +1352,7 @@ __all__ = [
|
|
|
1342
1352
|
'SetGridPermissionLimitsInput',
|
|
1343
1353
|
'SetHostedGameEnabledInput',
|
|
1344
1354
|
'SetHostedGameListingInput',
|
|
1355
|
+
'SetLegalHoldInput',
|
|
1345
1356
|
'SetMemberRolesInput',
|
|
1346
1357
|
'SetOrgManagedPlayerSettingsInput',
|
|
1347
1358
|
'SetQuotaInput',
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""GENERATED by scripts/codegen.py from schema.gql and operations/. Do not edit.
|
|
2
2
|
|
|
3
|
-
schema.gql sha256:
|
|
3
|
+
schema.gql sha256: aa15686351b9ce9a99a1127678a86e4c2c7e92b0d06b55655c99a1407b1a681d
|
|
4
4
|
operations/ sha256: 32e2c43ac1bd00ec9c05902d524e82727cf560a88330f207704059a7a8a96189
|
|
5
5
|
"""
|
|
6
6
|
|
|
@@ -130,7 +130,10 @@ class AppAccessAPI(Domain):
|
|
|
130
130
|
"""Create an access tier for an app. Needs ``manage_access_tiers``.
|
|
131
131
|
|
|
132
132
|
Its permission keys must be :meth:`runtime_permissions`. Creating a tier grants it
|
|
133
|
-
to nobody.
|
|
133
|
+
to nobody. A tier that grants ``access`` also gets ``use_text_chat`` and
|
|
134
|
+
``use_direct_messages`` unless ``applyCommunicationDefaults`` is false (Game API
|
|
135
|
+
v2.55.0); without them the realtime servers refuse its players' text and direct
|
|
136
|
+
messages.
|
|
134
137
|
"""
|
|
135
138
|
result: dict[str, Any] = self._request(ops.CREATE_ACCESS_TIER, {"input": input})
|
|
136
139
|
return result
|
|
@@ -140,7 +143,9 @@ class AppAccessAPI(Domain):
|
|
|
140
143
|
) -> dict[str, Any]:
|
|
141
144
|
"""Change an access tier; fields left out stay as they are.
|
|
142
145
|
|
|
143
|
-
Needs ``manage_access_tiers``.
|
|
146
|
+
Needs ``manage_access_tiers``. ``permissionKeys`` that include ``access`` keep or gain
|
|
147
|
+
``use_text_chat`` and ``use_direct_messages`` unless ``applyCommunicationDefaults`` is
|
|
148
|
+
false; send false to take them away.
|
|
144
149
|
"""
|
|
145
150
|
result: dict[str, Any] = self._request(
|
|
146
151
|
ops.UPDATE_ACCESS_TIER, {"tierId": bigint(tier_id), "input": input}
|
|
@@ -246,6 +246,8 @@ class AppsAPI(Domain):
|
|
|
246
246
|
``replayLoggingEnabled`` true raises ``INPUT_LOG_FUNDS_NEEDED`` unless the org wallet
|
|
247
247
|
can spend the projected cost of keeping one retention period of the app's recent
|
|
248
248
|
traffic; ``extensions["requiredMicrousd"]`` and ``["spendableMicrousd"]`` say how much.
|
|
249
|
+
``replayLoggingRecordsMedia`` false leaves voice and video out of the app's recording
|
|
250
|
+
and keeps everything else (default true; Game API v2.55.0).
|
|
249
251
|
"""
|
|
250
252
|
result: dict[str, Any] = self._request(
|
|
251
253
|
ops.UPDATE_APP, {"appId": bigint(app_id), "input": input}
|
|
@@ -113,7 +113,10 @@ class ManagedPlayersAPI(Domain):
|
|
|
113
113
|
|
|
114
114
|
def delete(self, org_id: str | int, external_id: str) -> bool:
|
|
115
115
|
"""Delete a player: its sessions end and its account is scrubbed. The external id is
|
|
116
|
-
free again, so a later sign-in with it creates a new player.
|
|
116
|
+
free again, so a later sign-in with it creates a new player. Since Game API v2.54.0
|
|
117
|
+
its player-side content is erased within minutes (usage and billing records and world
|
|
118
|
+
edits stay), and a legal hold on the player or its organization refuses the delete
|
|
119
|
+
with ``LEGAL_HOLD``; the player stays as it was."""
|
|
117
120
|
return bool(
|
|
118
121
|
self._request(
|
|
119
122
|
ops.DELETE_MANAGED_PLAYER, {"orgId": bigint(org_id), "externalId": external_id}
|