crowdypy 0.16.0.dev1__tar.gz → 0.17.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.16.0.dev1 → crowdypy-0.17.0.dev1}/MIGRATION.md +21 -3
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/PKG-INFO +4 -2
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/README.md +3 -1
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/docs/compatibility.md +1 -1
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/docs/parity-matrix.md +7 -4
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/managedPlayers/OrgManagedPlayerSettings.graphql +7 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/pyproject.toml +9 -9
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/schema.gql +83 -26
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/__init__.py +8 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_generated/enums.py +1 -1
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_generated/inputs.py +1 -1
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_generated/operations.py +3 -3
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/admin.py +1 -1
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/managed_players.py +17 -6
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/organizations.py +2 -2
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/portal.py +11 -5
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_version.py +1 -1
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/admin.py +1 -1
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/managed_players.py +17 -6
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/organizations.py +2 -2
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/portal.py +11 -5
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/errors.py +16 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/player_host/schemas.v1.json +2 -2
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/fixtures/player-host.v1.json +2 -2
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/domains/test_managed_players.py +35 -1
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_sdk_audience.py +1 -1
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tools/parity/classifications.toml +1 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/uv.lock +1 -1
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/CMakeLists.txt +1 -1
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/PROVENANCE.md +1 -1
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/admin.hpp +16 -6
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/portal.hpp +7 -4
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/generated/enums.hpp +2 -2
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/generated/operations.hpp +16 -2
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/errors.hpp +14 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/package.json +6 -6
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/tools/parity/fixtures/crowdy-studio-diagnostics.v1.json +2 -2
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/tools/parity/fixtures/crowdyjs-studio-layout.v1.json +2 -2
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/.gitattributes +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/.gitignore +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/.gitleaks.toml +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/AGENTS.md +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/CMakeLists.txt +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/LICENSE +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/SECURITY.md +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/benchmarks/README.md +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/benchmarks/bench_replication.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/docs/e2e-coverage.md +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/licenses/OpenSSL-LICENSE.txt +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/native/common.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/native/module.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/native/replication.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/native/replication_binding.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/native/session_binding.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/native/voice_binding.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/native/wire_binding.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/actors/Actor.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/actors/Actors.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/actors/BatchLookupActors.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/actors/CreateActor.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/actors/DeleteActor.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/actors/UpdateActor.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/actors/UpdateActorState.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/AppAccessTiers.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/AppFeatures.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/AppGrantMemberCandidates.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/AppUserAccessByApp.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/ArchiveAccessTier.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/ClaimFreeAppAccess.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/CreateAccessTier.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/DefineAppFeature.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/GrantAppAccess.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/GrantMyAppAccess.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/GrantTierFeature.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/MyAppAccess.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/RevokeAppAccess.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/RevokeTierFeature.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/RuntimePermissions.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/SuspendAppAccess.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/TierFeatures.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/UpdateAccessTier.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/apps/App.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/apps/AppBySlug.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/apps/AppDiscovery.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/apps/AppsForOrg.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/apps/ArchiveApp.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/apps/CodeAdmissions.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/apps/CreateApp.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/apps/MarketplaceApps.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/apps/MyApps.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/apps/PlaceableDatacenters.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/apps/UpdateApp.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/auth/Logout.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/auth/LogoutAllDevices.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/avatars/Avatars.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/billing/AppBudget.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/billing/AppBudgets.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/billing/SetAppBudget.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/billing/WalletBalance.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/billing/WalletTransactions.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/AddChannelMember.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/BanChannelMember.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/Channel.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/ChannelMembers.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/ChannelPolicy.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/ChannelRoles.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/Channels.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/CreateChannel.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/CreateChannelRole.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/DeleteChannel.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/DeleteChannelRole.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/JoinChannel.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/LeaveChannel.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/MyChannels.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/RemoveChannelMember.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/RequestToJoinChannel.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/SetChannelMemberRoles.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/SetChannelPolicy.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/UnbanChannelMember.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/UpdateChannel.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/UpdateChannelRole.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/chunks/GetChunk.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/chunks/GetChunkLods.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/chunks/GetChunksByDistance.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/chunks/GetVoxelList.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/chunks/UpdateChunk.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/chunks/UpdateChunkLods.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/chunks/UpdateChunkState.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/crowdyStudio/CrowdyStudio.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/exec/Exec.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/gameApps/GameApps.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/grids/CreateGridChannel.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/grids/GridChannels.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/grids/MintGridToken.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/host/Host.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/inputLog/InputLogMessages.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/inputLog/InputLogSessions.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/managedPlayers/AppManagedPlayerMods.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/managedPlayers/DeleteManagedPlayer.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/managedPlayers/EndManagedPlayerSessions.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/managedPlayers/ManagedPlayer.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/managedPlayers/ManagedPlayerFields.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/managedPlayers/ManagedPlayers.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/managedPlayers/OrgSigningKeyFields.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/managedPlayers/OrgSigningKeys.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/managedPlayers/ProvisionManagedPlayers.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/managedPlayers/RegisterOrgSigningKey.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/managedPlayers/RevokeOrgSigningKey.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/managedPlayers/SetAppManagedPlayerMods.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/managedPlayers/UpdateManagedPlayer.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/marketplace/Marketplace.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/CreateOrgRole.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/CreateOrgToken.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/CreateOrganization.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/DeleteOrgRole.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/InviteOrgMember.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/MemberRoles.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/MyOrganizations.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/OrgMembers.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/OrgPermissions.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/OrgRoles.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/OrgTokens.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/Organization.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/OrganizationBySlug.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/RemoveOrgMember.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/RevokeOrgToken.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/UpdateOrgMemberRoles.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/UpdateOrgRole.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/UpdateOrgToken.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/payments/CapturePaypalCheckout.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/payments/CreateCheckout.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/payments/MyCheckouts.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/platform/PlatformConfig.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/playerWallet/PlayerWallet.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/quotas/DeleteQuota.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/quotas/EffectiveQuota.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/quotas/QuotasForApp.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/quotas/QuotasForOrg.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/quotas/SetQuota.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/serverStatus/ActiveGraphQLServers.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/serverStatus/GameClientBootstrap.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/serverStatus/GraphqlServers.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/serverStatus/ServerWithLeastClients.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/serverStatus/VersionInfo.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/sharedEnvironment/SharedEnvironment.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/state/DeleteUserAppState.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/state/UpdateUserAppState.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/state/UserAppState.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/state/UserAppStates.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/AddTeamMember.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/BanTeamMember.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/CreateTeam.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/CreateTeamRole.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/DeleteTeam.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/DeleteTeamRole.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/JoinTeam.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/LeaveTeam.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/MyTeams.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/RemoveTeamMember.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/RequestToJoinTeam.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/SetTeamMemberRoles.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/SetTeamPolicy.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/Team.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/TeamMembers.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/TeamPolicy.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/TeamRoles.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/Teams.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/UnbanTeamMember.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/UpdateTeam.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/UpdateTeamRole.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teleport/TeleportRequest.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/usage/AppGraphqlOperations.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/usage/AppUsageSummary.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/usage/PlayerPulse.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/users/DeleteMyAccount.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/users/FreePlayWindow.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/users/Me.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/users/PlayerProfile.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/users/UpdateGamertag.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/users/UpdateUserState.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/users/User.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/voxels/ListVoxelUpdatesByDistance.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/voxels/ListVoxels.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/voxels/RollbackVoxelUpdates.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/voxels/UpdateVoxel.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/voxels/VoxelUpdateHistory.graphql +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/scripts/_pins.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/scripts/ci/assert_default_origin.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/scripts/ci/build_openssl.sh +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/scripts/ci/check_content_policy.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/scripts/ci/check_pin_tiers.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/scripts/ci/cibw_before_all_linux.sh +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/scripts/ci/resolve-release-tier.sh +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/scripts/ci/resolve-release-tier.test.sh +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/scripts/ci/resolve_pypi_version.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/scripts/ci/stamp_version.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/scripts/ci/verify_artifacts.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/scripts/codegen.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/scripts/schema_drift.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/scripts/schema_sync.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/scripts/unasync.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/scripts/vendor_crowdycpp.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_concurrency.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_default_origin.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_generated/__init__.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_grid.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_native.pyi +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_operation.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/__init__.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/client.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/__init__.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/_base.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/actors.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/app_access.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/apps.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/auth.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/avatars.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/billing.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/channels.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/chunks.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/crowdy_studio.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/crowdy_studio_agent.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/crowdy_studio_github.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/discovery.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/exec.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/game_apps.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/grids.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/host.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/input_log.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/marketplace.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/payments.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/platform.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/player_wallet.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/quotas.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/server_status.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/shared_environment.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/state.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/teams.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/teleport.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/udp.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/usage.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/users.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/voxels.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/graphql.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/grid_scope.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/__init__.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/actions.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/kit.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/mirror.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/__init__.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/arenas.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/encounters.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/instances.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/leaderboards.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/market.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/matchmaking.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/minigames.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/npcs.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/player.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/presence.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/racing.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/sessions.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/tables.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/tactics.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/territory.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/world.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/protocol.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/realtime.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/runtime.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/social.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/store.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/topology.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/wire.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/rediscover.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/stores.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/world.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/auth_state.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/client.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/codecs.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/datacenter_redirect.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/__init__.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/_base.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/actors.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/app_access.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/apps.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/auth.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/avatars.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/billing.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/channels.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/chunks.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/crowdy_studio.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/crowdy_studio_agent.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/crowdy_studio_github.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/discovery.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/exec.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/game_apps.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/grids.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/host.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/input_log.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/marketplace.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/payments.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/platform.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/player_wallet.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/quotas.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/server_status.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/shared_environment.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/state.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/teams.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/teleport.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/udp.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/usage.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/users.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/voxels.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/enums.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/estate.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/exec_gateway.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/graphql.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/grid_scope.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/inputs.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/__init__.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/actions.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/kit.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/mirror.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/__init__.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/arenas.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/encounters.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/instances.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/leaderboards.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/market.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/matchmaking.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/minigames.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/npcs.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/player.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/presence.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/racing.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/sessions.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/tables.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/tactics.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/territory.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/world.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/protocol.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/realtime.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/runtime.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/social.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/store.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/topology.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/wire.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/lb_cookie.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/media.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/pkce.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/player_host/__init__.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/player_host/agent_errors.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/player_host/agent_types.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/player_host/json_schema.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/player_host/schemas.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/player_host/types.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/py.typed +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/rediscover.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/replication.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/session.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/stores.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/studio/__init__.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/studio/client_tick_interval.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/studio/controller.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/studio/diagnostics.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/studio/github_new_repo.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/studio/layout.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/studio/models.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/studio/starter_projects.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/subscriptions.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/sync.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/utils.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/wire.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/world.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/conftest.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/e2e/__init__.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/e2e/conftest.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/e2e/test_e2e_identity.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/e2e/test_e2e_input_log.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/e2e/test_e2e_open_grid_exec_gateway.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/e2e/test_e2e_ranged_channel.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/e2e/test_e2e_replication.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/e2e/test_e2e_studio.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/e2e/test_e2e_world.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/e2e/test_e2e_world_data.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/fixtures/README.md +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/fixtures/binary-wire-fixtures.json +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/fixtures/exec-client-frames.json +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/fixtures/kit-protocol.json +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/fixtures/voice-frames.json +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/__init__.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/domains/__init__.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/domains/test_crowdycpp_roots.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/domains/test_input_log_reads.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/domains/test_org_domains.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/domains/test_social_domains.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/domains/test_studio_exec_domains.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/domains/test_world_domains.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_check_pin_tiers.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_core.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_durable_stores.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_estate_moves.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_exec_gateway.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_fixture_provenance.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_grid_scope.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_kit.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_kit_protocol.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_lazy_exports.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_player_host.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_refusals.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_release_versions.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_replication.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_studio_controller.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_studio_diagnostics.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_studio_layout.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_subscriptions.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_transport.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_udp_api.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_voice_frames.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_wire.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_world_session.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tools/e2e/provision.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tools/fixtures/player_host.mjs +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tools/parity/parity.py +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/LICENSE +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/cmake/CheckPublicHeaders.cmake +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/cmake/CrowdyCPPConfig.cmake.in +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/cmake/CrowdyFindOpus.cmake +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/cmake/studio_layout_fixture.hpp.in +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/client.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/core/base64.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/core/bytes.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/core/clock.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/core/crypto.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/core/logger.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/core/result.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/core/spsc.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/core/uuid.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/crowdy.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/default_origin.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/auth.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/crowdy_studio.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/crowdy_studio_agent.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/crowdy_studio_github.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/discovery.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/domain_base.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/exec.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/game_apps.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/grids.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/groups.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/marketplace.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/player_wallet.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/realtime_control.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/server_status.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/types.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/users.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/world_data.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/async_scope.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/auth_state.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/cancel.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/datacenter_redirect.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/dispatcher.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/estate.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/graphql_client.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/http.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/json.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/rediscover.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/subscription_client.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/websocket.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/actions.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/economy.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/genres.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/kit.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/mirror.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/modules.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/protocol.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/realtime.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/runtime.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/social.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/topology.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/wire.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/media/opus.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/media/video_frames.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/media/voice_frames.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/player_host/adapter.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/player_host/player_host.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/player_host/schemas.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/player_host/types.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/replication/connection.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/replication/session_provider.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/replication/types.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/replication/udp_socket.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/session/chunk_store.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/session/codec.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/session/durable.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/session/keys.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/session/stores.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/session/world_session.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/controller.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/diagnostics.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/editor.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/github.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/github_layout.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/integration.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/layout.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/models.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/runtime.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/wire/codec.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/wire/protocol.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/world.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/client.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/core/base64.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/core/clock.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/core/crypto_default_unavailable.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/core/crypto_openssl.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/core/crypto_unavailable.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/core/logger.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/core/uuid.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/domains/exec.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/graphql/async_transport.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/graphql/auth_state.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/graphql/error_extensions.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/graphql/errors.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/graphql/graphql_client.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/graphql/http_curl.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/graphql/http_none.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/graphql/json.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/graphql/subscription_client.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/graphql/websocket_curl.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/graphql/websocket_none.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/kit/economy.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/kit/genres.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/kit/mirror.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/kit/modules.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/kit/protocol.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/kit/runtime.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/kit/topology.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/media/opus.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/player_host/schemas.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/player_host/types.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/replication/connection.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/replication/socket_errors.hpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/replication/udp_socket.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/session/world_session.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/studio/diagnostics.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/studio/editor.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/studio/integration.cpp +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/third_party/yyjson/LICENSE +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/third_party/yyjson/yyjson.c +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/third_party/yyjson/yyjson.h +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/tools/parity/fixtures/exec-client-frames.json +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/tools/parity/fixtures/exec-gateway-cases.json +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/tools/parity/fixtures/kit-protocol.json +0 -0
- {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/tools/parity/fixtures/voice-frames.json +0 -0
|
@@ -3,11 +3,29 @@
|
|
|
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.17.0
|
|
7
|
+
|
|
8
|
+
CrowdyJS 18.17.0 and CrowdyCPP 0.69.0. Additive. ck-api v2.53.0 serves org-managed players on
|
|
9
|
+
dev, test and prod, and refuses an organization's managed sign-ins (both ways), refreshes and
|
|
10
|
+
provisioning with `ORG_LEGAL_ACCEPTANCE_REQUIRED` until an admin of the organization accepts
|
|
11
|
+
the Org-Managed Players Addendum in Studio.
|
|
12
|
+
|
|
13
|
+
- **`crowdypy.errors.org_legal_acceptance_required_of`** reads that refusal
|
|
14
|
+
(`ORG_LEGAL_ACCEPTANCE_REQUIRED_CODE`). Neither the player nor the organization's server can
|
|
15
|
+
fix it, so do not retry.
|
|
16
|
+
- **`client.managed_players.settings(org_id)`** also returns `termsVersion`, `termsUrl`,
|
|
17
|
+
`termsAccepted`, `termsAcceptedVersion`, `termsAcceptedAt`, `termsAcceptedByUserId` and
|
|
18
|
+
`viewerMayAcceptTerms`.
|
|
19
|
+
- **Fix:** `crowdypy.domains.portal.is_legal_acceptance_required_error` no longer matches the
|
|
20
|
+
organization's code by its message: a managed player has no clickwrap to show.
|
|
21
|
+
- No wrapper for `acceptManagedPlayerTerms`, as in CrowdyJS and CrowdyCPP: it binds the
|
|
22
|
+
organization, so a person accepts it in Studio.
|
|
23
|
+
|
|
6
24
|
## 0.16.0
|
|
7
25
|
|
|
8
|
-
CrowdyJS 18.16.0 and CrowdyCPP 0.68.0. Additive, and served on the dev tier only
|
|
9
|
-
tier
|
|
10
|
-
signs in itself.
|
|
26
|
+
CrowdyJS 18.16.0 and CrowdyCPP 0.68.0. Additive, and served on the dev tier only at the time
|
|
27
|
+
(every other tier answered `FEATURE_DISABLED` until ck-api v2.53.0): org-managed players, an
|
|
28
|
+
organization's own players that it signs in itself.
|
|
11
29
|
|
|
12
30
|
- **`client.portal.adopt_app_token(response)`** holds the app token the organization's server
|
|
13
31
|
minted with its org token (`mintManagedPlayerToken`) and returns it as an
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: crowdypy
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.17.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,7 +51,9 @@ 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.
|
|
54
|
+
**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
|
+
|
|
56
|
+
**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).
|
|
55
57
|
|
|
56
58
|
**v0.15.0: a voxel edit that waits for the server, and opcode 140 from `client.udp`.** `chunks.set_voxel(..., optimistic=False)` changes nothing locally until the server's echo of the edit arrives; `client.udp.send_generic_spatial` sends an app-defined spatial message. CrowdyJS 18.15.0 and CrowdyCPP 0.67.4. See [MIGRATION.md](MIGRATION.md).
|
|
57
59
|
|
|
@@ -11,7 +11,9 @@ 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.
|
|
14
|
+
**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
|
+
|
|
16
|
+
**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).
|
|
15
17
|
|
|
16
18
|
**v0.15.0: a voxel edit that waits for the server, and opcode 140 from `client.udp`.** `chunks.set_voxel(..., optimistic=False)` changes nothing locally until the server's echo of the edit arrives; `client.udp.send_generic_spatial` sends an app-defined spatial message. CrowdyJS 18.15.0 and CrowdyCPP 0.67.4. See [MIGRATION.md](MIGRATION.md).
|
|
17
19
|
|
|
@@ -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.17.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,17 +4,17 @@ 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.17.0` at `05c2f28b72ebde4c487c7bb52e07d11466bc64cc`
|
|
8
|
+
- CrowdyCPP (native core): `0.69.0` at `96c859cdf7972686f3325489c01b8a49161dd664`
|
|
9
9
|
- schema.gql identical to CrowdyJS's: yes
|
|
10
10
|
- Gate mode: strict portable parity (every portable gap is release-blocking)
|
|
11
11
|
|
|
12
12
|
## Summary
|
|
13
13
|
|
|
14
|
-
- Covered:
|
|
14
|
+
- Covered: 1386
|
|
15
15
|
- Portable gap: 0
|
|
16
16
|
- Native equivalent: 46
|
|
17
|
-
- Browser exclusion:
|
|
17
|
+
- Browser exclusion: 116
|
|
18
18
|
- Deprecated roots: 2
|
|
19
19
|
- Unclassified: 0
|
|
20
20
|
|
|
@@ -23,6 +23,7 @@ Generated by `tools/parity/parity.py`; do not edit by hand. Classifications live
|
|
|
23
23
|
| Field | Status |
|
|
24
24
|
|---|---|
|
|
25
25
|
| `mutation.abandonGamePublish` | browser exclusion — publishes and administers browser game bundles on the Crowdy Games web host; a Python client has no bundle to publish |
|
|
26
|
+
| `mutation.acceptManagedPlayerTerms` | browser exclusion — an organization admin's acceptance of the Org-Managed Players Addendum, a clickwrap made in Studio; no SDK wraps it |
|
|
26
27
|
| `mutation.actorHeartbeat` | covered |
|
|
27
28
|
| `mutation.addChannelMember` | covered |
|
|
28
29
|
| `mutation.addTeamMember` | covered |
|
|
@@ -1477,6 +1478,7 @@ Generated by `tools/parity/parity.py`; do not edit by hand. Classifications live
|
|
|
1477
1478
|
| `MAX_VIDEO_FRAGMENTS` | covered |
|
|
1478
1479
|
| `MAX_VIDEO_FRAGMENT_BODY_BYTES` | covered |
|
|
1479
1480
|
| `MAX_VOICE_FRAME_BYTES` | covered |
|
|
1481
|
+
| `ORG_LEGAL_ACCEPTANCE_REQUIRED_CODE` | covered |
|
|
1480
1482
|
| `PLAYER_CODE_INVOKE_MAX_BYTES` | browser exclusion — page-side broker for player WASM in the browser glue Web Worker (worker lifecycle, host-call allowlists, rate caps, watchdogs) |
|
|
1481
1483
|
| `PLAYER_CODE_LOG_LINES_PER_SECOND` | browser exclusion — page-side broker for player WASM in the browser glue Web Worker (worker lifecycle, host-call allowlists, rate caps, watchdogs) |
|
|
1482
1484
|
| `PLAYER_CODE_LOG_MAX_CHARS` | browser exclusion — page-side broker for player WASM in the browser glue Web Worker (worker lifecycle, host-call allowlists, rate caps, watchdogs) |
|
|
@@ -1555,6 +1557,7 @@ Generated by `tools/parity/parity.py`; do not edit by hand. Classifications live
|
|
|
1555
1557
|
| `managedPlayerNotAllowedOf` | covered |
|
|
1556
1558
|
| `moveFromError` | covered |
|
|
1557
1559
|
| `moveFromErrors` | covered |
|
|
1560
|
+
| `orgLegalAcceptanceRequiredOf` | covered |
|
|
1558
1561
|
| `packMessageBundle` | native equivalent — the same codec, CrowdyCPP's, through crowdypy.wire: crowdypy.wire.bundle |
|
|
1559
1562
|
| `parseFuelBudget` | browser exclusion — glue that instantiates player WASM inside the browser Web Worker (CLIENT ABI imports, ck_fuel, watchdog) |
|
|
1560
1563
|
| `parseRelayFrame` | native equivalent — the same codec, CrowdyCPP's, through crowdypy.wire: crowdypy.wire.parse_datagram (a relay frame is one datagram) |
|
|
@@ -7,5 +7,12 @@ query OrgManagedPlayerSettings($orgId: BigInt!) {
|
|
|
7
7
|
mintsPerMinute
|
|
8
8
|
defaultSessionTtlSeconds
|
|
9
9
|
maxSessionTtlSeconds
|
|
10
|
+
termsVersion
|
|
11
|
+
termsUrl
|
|
12
|
+
termsAccepted
|
|
13
|
+
termsAcceptedVersion
|
|
14
|
+
termsAcceptedAt
|
|
15
|
+
termsAcceptedByUserId
|
|
16
|
+
viewerMayAcceptTerms
|
|
10
17
|
}
|
|
11
18
|
}
|
|
@@ -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.17.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,20 +119,20 @@ 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.17.0"
|
|
123
|
+
commit = "05c2f28b72ebde4c487c7bb52e07d11466bc64cc"
|
|
124
124
|
|
|
125
125
|
[tool.crowdypy.crowdycpp]
|
|
126
|
-
version = "0.
|
|
127
|
-
tag = "dev/v0.
|
|
128
|
-
commit = "
|
|
129
|
-
tree-sha256 = "
|
|
126
|
+
version = "0.69.0"
|
|
127
|
+
tag = "dev/v0.69.0"
|
|
128
|
+
commit = "96c859cdf7972686f3325489c01b8a49161dd664"
|
|
129
|
+
tree-sha256 = "b2e302e5d2e8967d7325dda2fb14a46c162fa1d69ce2b3c149f85fa8c5eeca82"
|
|
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 = "
|
|
135
|
-
operations-sha256 = "
|
|
134
|
+
schema-sha256 = "261902653e100cc5701c32580d07b5ae401e28fa547a0712fa71429fb24df188"
|
|
135
|
+
operations-sha256 = "32e2c43ac1bd00ec9c05902d524e82727cf560a88330f207704059a7a8a96189"
|
|
136
136
|
|
|
137
137
|
# The SDL the docs site publishes. scripts/schema_drift.py compares the snapshot against it
|
|
138
138
|
# on a schedule; nothing on the per-commit path reads the network.
|
|
@@ -1087,7 +1087,7 @@ type OrgToken {
|
|
|
1087
1087
|
"""Optional human-readable label."""
|
|
1088
1088
|
label: String
|
|
1089
1089
|
"""
|
|
1090
|
-
What the token may do: 'players:mint' (sign the org's managed players in, mintManagedPlayerToken) and 'players:manage' (provision, list, rename, disable, sign out and delete them). A token with no scope can do nothing.
|
|
1090
|
+
What the token may do: 'players:mint' (sign the org's managed players in, mintManagedPlayerToken) and 'players:manage' (provision, list, rename, disable, sign out and delete them). A token with no scope can do nothing.
|
|
1091
1091
|
"""
|
|
1092
1092
|
scopes: [String!]!
|
|
1093
1093
|
"""
|
|
@@ -1349,7 +1349,7 @@ type App {
|
|
|
1349
1349
|
"""
|
|
1350
1350
|
org: Organization
|
|
1351
1351
|
"""
|
|
1352
|
-
Whether the organization lets its org-managed players build and run mods (and use the Studio agent) in this app, paying for their mod compute, egress, storage and model tokens itself. False by default, and false
|
|
1352
|
+
Whether the organization lets its org-managed players build and run mods (and use the Studio agent) in this app, paying for their mod compute, egress, storage and model tokens itself. False by default, and false on a tier that does not serve org-managed players. Set with setAppManagedPlayerMods (manage_billing). Players with a Crowded Kingdoms account are unaffected.
|
|
1353
1353
|
"""
|
|
1354
1354
|
managedPlayerModsEnabled: Boolean!
|
|
1355
1355
|
}
|
|
@@ -1600,7 +1600,7 @@ type ServerVersionInfo {
|
|
|
1600
1600
|
}
|
|
1601
1601
|
|
|
1602
1602
|
"""
|
|
1603
|
-
A player an organization signs in itself (an org-managed player): a Crowded Kingdoms user with no email, password or wallet, known to the org by its own id.
|
|
1603
|
+
A player an organization signs in itself (an org-managed player): a Crowded Kingdoms user with no email, password or wallet, known to the org by its own id.
|
|
1604
1604
|
"""
|
|
1605
1605
|
type ManagedPlayer {
|
|
1606
1606
|
"""
|
|
@@ -1644,7 +1644,7 @@ type ProvisionManagedPlayersResult {
|
|
|
1644
1644
|
}
|
|
1645
1645
|
|
|
1646
1646
|
"""
|
|
1647
|
-
An organization's org-managed player settings
|
|
1647
|
+
An organization's org-managed player settings, and where it stands on the Org-Managed Players Addendum. A Crowded Kingdoms operator sets the settings; an admin of the organization accepts the addendum.
|
|
1648
1648
|
"""
|
|
1649
1649
|
type OrgManagedPlayerSettings {
|
|
1650
1650
|
orgId: BigInt!
|
|
@@ -1664,10 +1664,32 @@ type OrgManagedPlayerSettings {
|
|
|
1664
1664
|
defaultSessionTtlSeconds: Int!
|
|
1665
1665
|
"""The longest sign-in the org may ask for (seconds)."""
|
|
1666
1666
|
maxSessionTtlSeconds: Int!
|
|
1667
|
+
"""
|
|
1668
|
+
The current version of the Org-Managed Players Addendum, which an admin of the organization accepts (acceptManagedPlayerTerms) before its players are created or signed in.
|
|
1669
|
+
"""
|
|
1670
|
+
termsVersion: String!
|
|
1671
|
+
"""Where the current addendum is published."""
|
|
1672
|
+
termsUrl: String!
|
|
1673
|
+
"""
|
|
1674
|
+
Whether the organization has accepted the current version. Until it has, its managed players are neither created nor signed in and their app tokens do not refresh (ORG_LEGAL_ACCEPTANCE_REQUIRED).
|
|
1675
|
+
"""
|
|
1676
|
+
termsAccepted: Boolean!
|
|
1677
|
+
"""
|
|
1678
|
+
The version the organization accepted most recently, or null if it never accepted one.
|
|
1679
|
+
"""
|
|
1680
|
+
termsAcceptedVersion: String
|
|
1681
|
+
"""When it accepted that version."""
|
|
1682
|
+
termsAcceptedAt: DateTime
|
|
1683
|
+
"""The user id of the admin who accepted that version."""
|
|
1684
|
+
termsAcceptedByUserId: BigInt
|
|
1685
|
+
"""
|
|
1686
|
+
Whether the signed-in user may accept the addendum for this organization: an admin of it, by the organization's own grant (a super admin's or an operator's access does not count).
|
|
1687
|
+
"""
|
|
1688
|
+
viewerMayAcceptTerms: Boolean!
|
|
1667
1689
|
}
|
|
1668
1690
|
|
|
1669
1691
|
"""
|
|
1670
|
-
The public half of a key an organization signs its players' sign-in assertions with (exchangeManagedPlayerAssertion). Only public keys are stored.
|
|
1692
|
+
The public half of a key an organization signs its players' sign-in assertions with (exchangeManagedPlayerAssertion). Only public keys are stored.
|
|
1671
1693
|
"""
|
|
1672
1694
|
type OrgSigningKey {
|
|
1673
1695
|
"""The key’s id here."""
|
|
@@ -7122,13 +7144,16 @@ type Query {
|
|
|
7122
7144
|
"""
|
|
7123
7145
|
versionInfo: ServerVersionInfo!
|
|
7124
7146
|
"""
|
|
7125
|
-
|
|
7147
|
+
The organization's managed players, by user id. `search` matches the start of the external id (exactly) or of the gamertag (any case). An org token with players:manage, or an org admin with manage_players.
|
|
7126
7148
|
"""
|
|
7127
7149
|
managedPlayers(
|
|
7128
7150
|
"""
|
|
7129
7151
|
The organization (BigInt as a decimal string). With an org token, the token's own.
|
|
7130
7152
|
"""
|
|
7131
7153
|
orgId: BigInt!
|
|
7154
|
+
"""
|
|
7155
|
+
Matches the start of an externalId (exactly) or of a gamertag (any case).
|
|
7156
|
+
"""
|
|
7132
7157
|
search: String
|
|
7133
7158
|
"""Page size, 1-200 (default 50)."""
|
|
7134
7159
|
first: Int
|
|
@@ -7136,23 +7161,30 @@ type Query {
|
|
|
7136
7161
|
after: String
|
|
7137
7162
|
): ManagedPlayersPage!
|
|
7138
7163
|
"""
|
|
7139
|
-
|
|
7164
|
+
One managed player by the id your organization knows it by, or null. An org token with players:manage, or an org admin with manage_players.
|
|
7140
7165
|
"""
|
|
7141
7166
|
managedPlayer(
|
|
7142
7167
|
"""
|
|
7143
7168
|
The organization (BigInt as a decimal string). With an org token, the token's own.
|
|
7144
7169
|
"""
|
|
7145
7170
|
orgId: BigInt!
|
|
7171
|
+
"""The id your organization knows the player by."""
|
|
7146
7172
|
externalId: String!
|
|
7147
7173
|
): ManagedPlayer
|
|
7148
7174
|
"""
|
|
7149
|
-
|
|
7175
|
+
The organization's org-managed player settings: whether it may sign its own players in, its cap, sign-in rate and sign-in lifetimes, how many players it holds, and whether it has accepted the current Org-Managed Players Addendum. Requires manage_players on the org (super-admins and operators bypass).
|
|
7150
7176
|
"""
|
|
7151
|
-
orgManagedPlayerSettings(
|
|
7177
|
+
orgManagedPlayerSettings(
|
|
7178
|
+
"""The organization (BigInt as a decimal string)."""
|
|
7179
|
+
orgId: BigInt!
|
|
7180
|
+
): OrgManagedPlayerSettings!
|
|
7152
7181
|
"""
|
|
7153
|
-
|
|
7182
|
+
The organization's signing keys for player assertions, newest first, revoked ones included. Requires manage_players on the org.
|
|
7154
7183
|
"""
|
|
7155
|
-
orgSigningKeys(
|
|
7184
|
+
orgSigningKeys(
|
|
7185
|
+
"""The organization (BigInt as a decimal string)."""
|
|
7186
|
+
orgId: BigInt!
|
|
7187
|
+
): [OrgSigningKey!]!
|
|
7156
7188
|
"""
|
|
7157
7189
|
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.
|
|
7158
7190
|
"""
|
|
@@ -8969,7 +9001,7 @@ type Mutation {
|
|
|
8969
9001
|
input: ReinstateOrganizationInput!
|
|
8970
9002
|
): OrgRetirementType! @requiresPermission(scope: "operator", permission: "is_operator")
|
|
8971
9003
|
"""
|
|
8972
|
-
Mints a new org token (it starts with `cko_`) and returns the plaintext exactly once - save it, since subsequent queries only show metadata. An org token is the organization's SERVER credential for its org-managed players
|
|
9004
|
+
Mints a new org token (it starts with `cko_`) and returns the plaintext exactly once - save it, since subsequent queries only show metadata. An org token is the organization's SERVER credential for its org-managed players: with scope 'players:mint' its server signs the org's own players in (mintManagedPlayerToken), with 'players:manage' it manages them; `appIds` limits it to some of the org's apps. Never put one in a game client or a web page: a request with an Origin header is refused. Requires the 'manage_tokens' permission on the target org (super admins bypass).
|
|
8973
9005
|
"""
|
|
8974
9006
|
createOrgToken(input: CreateOrgTokenInput!): OrgTokenWithSecret! @requiresPermission(scope: "org", permission: "manage_tokens", scopeArg: "input.orgId")
|
|
8975
9007
|
"""
|
|
@@ -9152,57 +9184,82 @@ type Mutation {
|
|
|
9152
9184
|
"""
|
|
9153
9185
|
setAppClientSettings(input: SetAppClientSettingsInput!): PortalConsentState!
|
|
9154
9186
|
"""
|
|
9155
|
-
ORG TOKEN ONLY
|
|
9187
|
+
ORG TOKEN ONLY. Sign one of your organization's own players in and get its app-scoped gameplay token, the same token mintAppToken returns: hand `token` (and the URLs) to the player's device, which plays with it exactly as with any app token and refreshes it with refreshAppToken. Call from your server with `Authorization: Bearer cko_...` (scope players:mint); a request with an Origin header is refused. The player is created on its first sign-in (no email, password or wallet), and each sign-in lasts `sessionTtlSeconds` (default and maximum: the org's settings): after it the device comes back to you. The app must be one of your organization's apps (and in the token's app list, if it has one). Free tiers grant access automatically; a paid tier needs grantAppAccess. Refused with ORG_LEGAL_ACCEPTANCE_REQUIRED until an admin of the organization has accepted the current Org-Managed Players Addendum.
|
|
9156
9188
|
"""
|
|
9157
9189
|
mintManagedPlayerToken(input: MintManagedPlayerTokenInput!): AppTokenResponse!
|
|
9158
9190
|
"""
|
|
9159
|
-
|
|
9191
|
+
Create managed players ahead of their first sign-in, up to 500 a call in one write (creating a player is a cluster-wide commit, so a large import goes in batches). A player that exists is left as it is. Refused with ORG_LEGAL_ACCEPTANCE_REQUIRED until the organization has accepted the current Org-Managed Players Addendum. An org token with players:manage, or an org admin with manage_players.
|
|
9160
9192
|
"""
|
|
9161
9193
|
provisionManagedPlayers(input: ProvisionManagedPlayersInput!): ProvisionManagedPlayersResult!
|
|
9162
9194
|
"""
|
|
9163
|
-
|
|
9195
|
+
Rename a managed player, or disable or enable it. Disabling ends every session it has now (realtime and ck-exec included) and refuses its sign-ins; enabling lifts only a disable the org set. An org token with players:manage, or an org admin with manage_players.
|
|
9164
9196
|
"""
|
|
9165
9197
|
updateManagedPlayer(input: UpdateManagedPlayerInput!): ManagedPlayer!
|
|
9166
9198
|
"""
|
|
9167
|
-
|
|
9199
|
+
Sign a managed player out everywhere: its sessions and app tokens end, and so do its realtime and ck-exec connections. It can sign in again (use updateManagedPlayer to stop that). False when it held no session. An org token with players:manage, or an org admin with manage_players.
|
|
9168
9200
|
"""
|
|
9169
9201
|
endManagedPlayerSessions(
|
|
9170
9202
|
"""
|
|
9171
9203
|
The organization (BigInt as a decimal string). With an org token, the token's own.
|
|
9172
9204
|
"""
|
|
9173
9205
|
orgId: BigInt!
|
|
9206
|
+
"""The id your organization knows the player by."""
|
|
9174
9207
|
externalId: String!
|
|
9175
9208
|
): Boolean!
|
|
9176
9209
|
"""
|
|
9177
|
-
|
|
9210
|
+
Delete a managed player: its sessions end and its row is anonymized, as an account deletion is. 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.
|
|
9178
9211
|
"""
|
|
9179
9212
|
deleteManagedPlayer(
|
|
9180
9213
|
"""
|
|
9181
9214
|
The organization (BigInt as a decimal string). With an org token, the token's own.
|
|
9182
9215
|
"""
|
|
9183
9216
|
orgId: BigInt!
|
|
9217
|
+
"""The id your organization knows the player by."""
|
|
9184
9218
|
externalId: String!
|
|
9185
9219
|
): Boolean!
|
|
9186
9220
|
"""
|
|
9187
|
-
OPERATOR ONLY
|
|
9221
|
+
OPERATOR ONLY. Enable or disable an organization's org-managed players and set its limits. Disabling refuses new sign-ins; sessions already running last until they lapse (end them with endManagedPlayerSessions). Enabling does not accept the addendum: an admin of the organization does that (acceptManagedPlayerTerms).
|
|
9188
9222
|
"""
|
|
9189
9223
|
setOrgManagedPlayerSettings(input: SetOrgManagedPlayerSettingsInput!): OrgManagedPlayerSettings! @requiresPermission(scope: "operator", permission: "is_operator")
|
|
9190
9224
|
"""
|
|
9191
|
-
|
|
9225
|
+
SESSION ONLY, an admin of the organization (its own admin grant: a super admin's or an operator's access does not stand in). Accept the Org-Managed Players Addendum on the organization's behalf, the version orgManagedPlayerSettings names as termsVersion (read it at termsUrl). Until the organization has accepted the current version, its managed players are neither created nor signed in (ORG_LEGAL_ACCEPTANCE_REQUIRED). A version that is not the current one is refused with CONFLICT; accepting the current one again changes nothing. Studio asks for it on the organization's Players tab.
|
|
9226
|
+
"""
|
|
9227
|
+
acceptManagedPlayerTerms(
|
|
9228
|
+
"""The organization (BigInt as a decimal string)."""
|
|
9229
|
+
orgId: BigInt!
|
|
9230
|
+
"""
|
|
9231
|
+
The addendum version the admin read and accepts: termsVersion from orgManagedPlayerSettings.
|
|
9232
|
+
"""
|
|
9233
|
+
version: String!
|
|
9234
|
+
): OrgManagedPlayerSettings! @requiresPermission(scope: "org", permission: "admin", scopeArg: "orgId")
|
|
9235
|
+
"""
|
|
9236
|
+
Register the PUBLIC half of a key your organization signs its players' sign-in assertions with (exchangeManagedPlayerAssertion): its kid, algorithm (EdDSA, ES256 or RS256), the JWK, the iss your assertions carry and, if your identity provider sets its own, their aud. The private key never leaves your systems. Requires manage_players on the org.
|
|
9192
9237
|
"""
|
|
9193
9238
|
registerOrgSigningKey(input: RegisterOrgSigningKeyInput!): OrgSigningKey!
|
|
9194
9239
|
"""
|
|
9195
|
-
|
|
9240
|
+
Revoke a signing key: assertions it signed are refused from now on (sessions already signed in run until they lapse; end them with endManagedPlayerSessions). False when there was no such active key. Requires manage_players on the org.
|
|
9196
9241
|
"""
|
|
9197
|
-
revokeOrgSigningKey(
|
|
9242
|
+
revokeOrgSigningKey(
|
|
9243
|
+
"""The organization (BigInt as a decimal string)."""
|
|
9244
|
+
orgId: BigInt!
|
|
9245
|
+
"""The key to revoke (OrgSigningKey.keyId)."""
|
|
9246
|
+
keyId: BigInt!
|
|
9247
|
+
): Boolean!
|
|
9198
9248
|
"""
|
|
9199
|
-
|
|
9249
|
+
Exchange an assertion your organization signed for one of its players for that player's app-scoped gameplay token (the same token mintManagedPlayerToken returns). Public: the signature is the credential, so a game client calls it directly, from a browser on your registered origin or natively. The assertion must name a registered, active key (header kid) and carry iss and aud as registered (aud defaults to ck:app:<appId>), sub (your id for the player), iat, exp at most 300 seconds after iat, and a jti never used before for this app; optionally gamertag. The player is created on its first sign-in. Refusals are ASSERTION_REJECTED with extensions.reason; a valid assertion is refused with ORG_LEGAL_ACCEPTANCE_REQUIRED until an admin of the organization has accepted the current Org-Managed Players Addendum.
|
|
9200
9250
|
"""
|
|
9201
9251
|
exchangeManagedPlayerAssertion(input: ExchangeManagedPlayerAssertionInput!): AppTokenResponse!
|
|
9202
9252
|
"""
|
|
9203
|
-
|
|
9253
|
+
Let the organization's org-managed players build and run mods (and use the Studio agent) in this app, or stop them. The organization pays for what they use: their mod compute and egress as its own compute, their project storage as the app's, their model tokens from the org wallet. Turning it off pauses their mods within a minute and refuses new builds. Requires manage_billing on the app's organization. Returns the new setting.
|
|
9204
9254
|
"""
|
|
9205
|
-
setAppManagedPlayerMods(
|
|
9255
|
+
setAppManagedPlayerMods(
|
|
9256
|
+
"""An app of your organization (BigInt as a decimal string)."""
|
|
9257
|
+
appId: BigInt!
|
|
9258
|
+
"""
|
|
9259
|
+
True: the organization pays for its managed players' mods in this app. False: their mods are refused and switched off.
|
|
9260
|
+
"""
|
|
9261
|
+
enabled: Boolean!
|
|
9262
|
+
): Boolean! @requiresPermission(scope: "app", permission: "manage_billing", scopeArg: "appId")
|
|
9206
9263
|
"""
|
|
9207
9264
|
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.
|
|
9208
9265
|
"""
|
|
@@ -10927,11 +10984,11 @@ input CreateOrgTokenInput {
|
|
|
10927
10984
|
"""Optional expiry timestamp; omit for a non-expiring token."""
|
|
10928
10985
|
expiresAt: DateTime
|
|
10929
10986
|
"""
|
|
10930
|
-
What the token may do: 'players:mint' and/or 'players:manage' (org-managed players
|
|
10987
|
+
What the token may do: 'players:mint' and/or 'players:manage' (org-managed players). Omit for a token with no scope, which can do nothing.
|
|
10931
10988
|
"""
|
|
10932
10989
|
scopes: [String!]
|
|
10933
10990
|
"""
|
|
10934
|
-
Limit the token to these apps of the organization; omit for every app (org-managed players
|
|
10991
|
+
Limit the token to these apps of the organization; omit for every app (org-managed players).
|
|
10935
10992
|
"""
|
|
10936
10993
|
appIds: [BigInt!]
|
|
10937
10994
|
}
|
|
@@ -60,6 +60,7 @@ _LAZY: dict[str, str] = {
|
|
|
60
60
|
"ASSERTION_REJECTED_CODE": "crowdypy.errors",
|
|
61
61
|
"GROUP_MEMBER_BANNED_CODE": "crowdypy.errors",
|
|
62
62
|
"MANAGED_PLAYER_NOT_ALLOWED_CODE": "crowdypy.errors",
|
|
63
|
+
"ORG_LEGAL_ACCEPTANCE_REQUIRED_CODE": "crowdypy.errors",
|
|
63
64
|
"WRONG_DATACENTER_CODE": "crowdypy.errors",
|
|
64
65
|
"CrowdyAccessRefusal": "crowdypy.errors",
|
|
65
66
|
"CrowdyAccountBlocked": "crowdypy.errors",
|
|
@@ -85,6 +86,7 @@ _LAZY: dict[str, str] = {
|
|
|
85
86
|
"app_paused_of": "crowdypy.errors",
|
|
86
87
|
"group_member_banned_of": "crowdypy.errors",
|
|
87
88
|
"managed_player_not_allowed_of": "crowdypy.errors",
|
|
89
|
+
"org_legal_acceptance_required_of": "crowdypy.errors",
|
|
88
90
|
"is_app_paused": "crowdypy.errors",
|
|
89
91
|
"player_fault_of": "crowdypy.errors",
|
|
90
92
|
# sessions, tokens, routing
|
|
@@ -432,6 +434,9 @@ if TYPE_CHECKING:
|
|
|
432
434
|
from crowdypy.errors import (
|
|
433
435
|
MANAGED_PLAYER_NOT_ALLOWED_CODE as MANAGED_PLAYER_NOT_ALLOWED_CODE,
|
|
434
436
|
)
|
|
437
|
+
from crowdypy.errors import (
|
|
438
|
+
ORG_LEGAL_ACCEPTANCE_REQUIRED_CODE as ORG_LEGAL_ACCEPTANCE_REQUIRED_CODE,
|
|
439
|
+
)
|
|
435
440
|
from crowdypy.errors import (
|
|
436
441
|
WRONG_DATACENTER_CODE as WRONG_DATACENTER_CODE,
|
|
437
442
|
)
|
|
@@ -510,6 +515,9 @@ if TYPE_CHECKING:
|
|
|
510
515
|
from crowdypy.errors import (
|
|
511
516
|
managed_player_not_allowed_of as managed_player_not_allowed_of,
|
|
512
517
|
)
|
|
518
|
+
from crowdypy.errors import (
|
|
519
|
+
org_legal_acceptance_required_of as org_legal_acceptance_required_of,
|
|
520
|
+
)
|
|
513
521
|
from crowdypy.errors import (
|
|
514
522
|
player_fault_of as player_fault_of,
|
|
515
523
|
)
|
|
@@ -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: 261902653e100cc5701c32580d07b5ae401e28fa547a0712fa71429fb24df188
|
|
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: 261902653e100cc5701c32580d07b5ae401e28fa547a0712fa71429fb24df188
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
10
|
from __future__ import annotations
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""GENERATED by scripts/codegen.py from schema.gql and operations/. Do not edit.
|
|
2
2
|
|
|
3
|
-
schema.gql sha256:
|
|
4
|
-
operations/ sha256:
|
|
3
|
+
schema.gql sha256: 261902653e100cc5701c32580d07b5ae401e28fa547a0712fa71429fb24df188
|
|
4
|
+
operations/ sha256: 32e2c43ac1bd00ec9c05902d524e82727cf560a88330f207704059a7a8a96189
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
7
|
from crowdypy._operation import Operation
|
|
@@ -1500,7 +1500,7 @@ ORG_MANAGED_PLAYER_SETTINGS = Operation(
|
|
|
1500
1500
|
name='OrgManagedPlayerSettings',
|
|
1501
1501
|
kind='query',
|
|
1502
1502
|
root_fields=('orgManagedPlayerSettings',),
|
|
1503
|
-
document='query OrgManagedPlayerSettings($orgId: BigInt!) {\n orgManagedPlayerSettings(orgId: $orgId) {\n orgId\n enabled\n maxPlayers\n playerCount\n mintsPerMinute\n defaultSessionTtlSeconds\n maxSessionTtlSeconds\n }\n}',
|
|
1503
|
+
document='query OrgManagedPlayerSettings($orgId: BigInt!) {\n orgManagedPlayerSettings(orgId: $orgId) {\n orgId\n enabled\n maxPlayers\n playerCount\n mintsPerMinute\n defaultSessionTtlSeconds\n maxSessionTtlSeconds\n termsVersion\n termsUrl\n termsAccepted\n termsAcceptedVersion\n termsAcceptedAt\n termsAcceptedByUserId\n viewerMayAcceptTerms\n }\n}',
|
|
1504
1504
|
)
|
|
1505
1505
|
|
|
1506
1506
|
# organizations/OrgMembers.graphql
|
|
@@ -30,7 +30,7 @@ class AdminAPI:
|
|
|
30
30
|
|
|
31
31
|
#: Organizations, members, RBAC roles and org API tokens.
|
|
32
32
|
organizations: OrganizationsAPI
|
|
33
|
-
#: Org-managed players
|
|
33
|
+
#: Org-managed players: the organization's own players and signing keys.
|
|
34
34
|
managed_players: ManagedPlayersAPI
|
|
35
35
|
#: The app registry, routing and player-code admission policy.
|
|
36
36
|
apps: AppsAPI
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# GENERATED by scripts/unasync.py from src/crowdypy/domains/managed_players.py. Do not edit.
|
|
2
|
-
"""Org-managed players
|
|
3
|
-
|
|
2
|
+
"""Org-managed players: an organization's own players, signed in by the organization instead
|
|
3
|
+
of with a Crowded Kingdoms password.
|
|
4
4
|
|
|
5
5
|
The organization vouches for a player in one of two ways, and either ends in the player's own
|
|
6
6
|
app token: its server mints it with an org token (the ``mintManagedPlayerToken`` mutation,
|
|
@@ -12,8 +12,15 @@ it stays on the organization's server.
|
|
|
12
12
|
|
|
13
13
|
The methods here are the organization's administration: an org admin's session with
|
|
14
14
|
``manage_players`` (from the organization's server, an org token with ``players:manage`` also
|
|
15
|
-
works for the six player operations).
|
|
16
|
-
|
|
15
|
+
works for the six player operations).
|
|
16
|
+
|
|
17
|
+
The Org-Managed Players Addendum (ck-api v2.53.0): before any of the organization's players is
|
|
18
|
+
created or signed in, an admin of the organization accepts it in Studio. Until then sign-ins
|
|
19
|
+
(both ways), refreshes and :meth:`ManagedPlayersAPI.provision` answer
|
|
20
|
+
``ORG_LEGAL_ACCEPTANCE_REQUIRED`` (:func:`crowdypy.errors.org_legal_acceptance_required_of`);
|
|
21
|
+
:meth:`ManagedPlayersAPI.settings` says where the organization stands. This SDK has no wrapper
|
|
22
|
+
for the acceptance, on purpose: it binds the organization, so a person makes it, in Studio. A
|
|
23
|
+
tier that does not serve org-managed players answers ``FEATURE_DISABLED`` to every field.
|
|
17
24
|
"""
|
|
18
25
|
|
|
19
26
|
from __future__ import annotations
|
|
@@ -79,7 +86,8 @@ class ManagedPlayersAPI(Domain):
|
|
|
79
86
|
) -> dict[str, Any]:
|
|
80
87
|
"""Create players ahead of their first sign-in, up to 500 a call (much faster than first
|
|
81
88
|
sign-ins one at a time: pre-provision before a launch). A player that already exists is
|
|
82
|
-
left as it is and counted in ``existing``.
|
|
89
|
+
left as it is and counted in ``existing``. Refused with ``ORG_LEGAL_ACCEPTANCE_REQUIRED``
|
|
90
|
+
until the organization has accepted the current Org-Managed Players Addendum."""
|
|
83
91
|
result: dict[str, Any] = self._request(
|
|
84
92
|
ops.PROVISION_MANAGED_PLAYERS, {"input": input}
|
|
85
93
|
)
|
|
@@ -114,7 +122,10 @@ class ManagedPlayersAPI(Domain):
|
|
|
114
122
|
|
|
115
123
|
def settings(self, org_id: str | int) -> dict[str, Any]:
|
|
116
124
|
"""Whether an operator turned managed players on for the organization, and its limits:
|
|
117
|
-
the player cap, sign-ins per minute and the session lengths.
|
|
125
|
+
the player cap, sign-ins per minute and the session lengths. Also where it stands on
|
|
126
|
+
the Org-Managed Players Addendum: ``termsVersion``, ``termsUrl``, ``termsAccepted``,
|
|
127
|
+
the latest acceptance, and ``viewerMayAcceptTerms`` (whether the signed-in user is an
|
|
128
|
+
admin of the organization who may accept it, in Studio). Read-only here."""
|
|
118
129
|
result: dict[str, Any] = self._request(
|
|
119
130
|
ops.ORG_MANAGED_PLAYER_SETTINGS, {"orgId": bigint(org_id)}
|
|
120
131
|
)
|
|
@@ -110,8 +110,8 @@ class OrganizationsAPI(Domain):
|
|
|
110
110
|
"""Permanently deactivate an org token. Needs ``manage_tokens``.
|
|
111
111
|
|
|
112
112
|
Irreversible. ``False`` when there is no such token. ``end_sessions`` also ends every
|
|
113
|
-
session the token signed org-managed players in with
|
|
114
|
-
|
|
113
|
+
session the token signed org-managed players in with, so their devices stop now rather
|
|
114
|
+
than at their sessions' end.
|
|
115
115
|
"""
|
|
116
116
|
variables: dict[str, Any] = {"orgTokenId": bigint(org_token_id)}
|
|
117
117
|
if end_sessions:
|