wavvon-sdk 0.1.0__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.
- wavvon_sdk-0.1.0/.gitattributes +1 -0
- wavvon_sdk-0.1.0/.github/workflows/ci.yml +33 -0
- wavvon_sdk-0.1.0/.github/workflows/release.yml +87 -0
- wavvon_sdk-0.1.0/.gitignore +8 -0
- wavvon_sdk-0.1.0/CLAUDE.md +113 -0
- wavvon_sdk-0.1.0/CONTRIBUTING.md +15 -0
- wavvon_sdk-0.1.0/LICENSE +202 -0
- wavvon_sdk-0.1.0/NOTICE +5 -0
- wavvon_sdk-0.1.0/PKG-INFO +158 -0
- wavvon_sdk-0.1.0/README.md +138 -0
- wavvon_sdk-0.1.0/examples/echo_bot.py +73 -0
- wavvon_sdk-0.1.0/pyproject.toml +68 -0
- wavvon_sdk-0.1.0/scripts/check +17 -0
- wavvon_sdk-0.1.0/scripts/generate.py +86 -0
- wavvon_sdk-0.1.0/scripts/smoke_local.py +127 -0
- wavvon_sdk-0.1.0/src/wavvon/__init__.py +160 -0
- wavvon_sdk-0.1.0/src/wavvon/auth.py +124 -0
- wavvon_sdk-0.1.0/src/wavvon/client.py +308 -0
- wavvon_sdk-0.1.0/src/wavvon/errors.py +40 -0
- wavvon_sdk-0.1.0/src/wavvon/events.py +400 -0
- wavvon_sdk-0.1.0/src/wavvon/pager.py +42 -0
- wavvon_sdk-0.1.0/src/wavvon/py.typed +0 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/SPEC_COMMIT +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/__init__.py +8 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/alliances/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/alliances/accept_pending_alliance_invite.py +119 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/alliances/create_alliance.py +160 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/alliances/create_alliance_channel.py +142 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/alliances/create_alliance_channel_message.py +192 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/alliances/create_alliance_channel_post.py +206 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/alliances/create_alliance_channel_post_reaction.py +135 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/alliances/create_alliance_channel_post_reply.py +210 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/alliances/create_alliance_push_invite.py +117 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/alliances/create_alliance_voice_grant.py +234 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/alliances/decline_pending_alliance_invite.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/alliances/delete_alliance_channel.py +110 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/alliances/delete_alliance_channel_post.py +127 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/alliances/delete_alliance_channel_post_reply.py +129 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/alliances/delete_alliance_manager.py +110 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/alliances/federation_join_alliance.py +194 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/alliances/get_alliance.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/alliances/get_alliance_channel_post.py +183 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/alliances/invite_to_alliance.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/alliances/join_alliance_with_invite.py +107 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/alliances/leave_alliance.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/alliances/list_alliance_channel_messages.py +174 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/alliances/list_alliance_channel_posts.py +215 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/alliances/list_alliance_channels.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/alliances/list_alliance_managers.py +184 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/alliances/list_alliance_people.py +342 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/alliances/list_alliances.py +133 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/alliances/list_pending_alliance_invites.py +85 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/alliances/set_alliance_manager.py +124 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/alliances/set_alliance_people_visibility.py +128 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/apps/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/apps/ack_me_events.py +107 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/apps/get_me_app.py +132 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/apps/leave_voice.py +115 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/apps/list_apps.py +147 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/apps/list_me_events.py +180 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/apps/set_me_app_commands.py +110 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/apps/set_me_app_profile.py +164 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/apps/set_me_app_subscriptions.py +182 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/apps/start_screenshare.py +196 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/apps/stop_screenshare.py +115 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/auth/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/auth/begin_webauthn_assertion.py +166 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/auth/begin_webauthn_registration.py +170 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/auth/create_auth_challenge.py +176 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/auth/create_auth_device_token.py +170 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/auth/finish_webauthn_assertion.py +166 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/auth/finish_webauthn_registration.py +166 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/auth/redeem_auth_device_token.py +174 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/auth/verify_auth.py +216 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/badges/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/badges/accept_pending_badge.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/badges/create_federation_badge_offer.py +114 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/badges/decline_pending_badge.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/badges/delete_badge.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/badges/issue_admin_badge.py +176 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/badges/list_admin_issued_badges.py +85 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/badges/list_badges.py +135 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/badges/list_federation_badge_revocations.py +169 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/badges/list_pending_badges.py +137 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/badges/revoke_admin_issued_badge.py +106 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/certifications/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/certifications/create_admin_cert_badge.py +192 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/certifications/issue_admin_cert.py +159 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/certifications/list_admin_certs.py +135 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/certifications/list_admin_settings_certs.py +130 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/certifications/list_certs_revocations.py +169 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/certifications/list_identity_certs.py +172 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/certifications/revoke_admin_cert.py +108 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/certifications/update_admin_settings_certs.py +115 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/challenge/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/challenge/get_new_challenge.py +148 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/challenge/verify_challenge.py +111 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/channels/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/channels/create_channel.py +160 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/channels/delete_channel.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/channels/delete_channel_permission.py +110 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/channels/get_channel_my_permissions.py +169 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/channels/list_channel_permissions.py +157 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/channels/list_channels.py +133 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/channels/list_unread_channels.py +137 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/channels/mark_channel_read.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/channels/reorder_channels.py +107 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/channels/set_channel_permission.py +134 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/channels/update_channel.py +117 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/d_ms/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/d_ms/create_conversation.py +165 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/d_ms/create_conversation_member.py +117 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/d_ms/create_conversation_message.py +176 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/d_ms/delete_conversation_member.py +132 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/d_ms/get_conversation.py +171 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/d_ms/list_conversation_messages.py +212 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/d_ms/list_conversation_sender_keys.py +164 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/d_ms/list_conversations.py +188 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/d_ms/set_conversation_sender_keys.py +117 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/emojis/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/emojis/create_admin_emoji.py +107 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/emojis/delete_admin_emoji.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/emojis/get_emoji_image.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/emojis/list_emojis.py +135 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/events/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/events/create_event.py +111 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/events/create_event_slot.py +176 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/events/create_event_squad_room.py +201 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/events/delete_event.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/events/delete_event_slot.py +117 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/events/get_event.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/events/list_event_assignments.py +184 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/events/list_event_rsvps.py +162 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/events/list_events.py +197 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/events/rsvp_event.py +117 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/events/set_event.py +117 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/events/update_event_slot.py +202 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/federation/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/federation/create_admin_banlist_override.py +162 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/federation/create_admin_banlist_source.py +162 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/federation/create_federation_alliance_invite.py +109 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/federation/create_federation_alliance_member.py +121 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/federation/create_federation_dm.py +117 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/federation/create_federation_dm_member_change.py +130 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/federation/create_federation_forum_channel_post.py +202 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/federation/create_federation_forum_channel_post_reaction.py +130 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/federation/create_federation_forum_channel_post_reply.py +208 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/federation/create_federation_peer.py +107 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/federation/delete_admin_banlist_override.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/federation/delete_admin_banlist_sources.py +107 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/federation/delete_federation_alliance_member.py +117 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/federation/delete_federation_forum_channel_post.py +136 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/federation/delete_federation_forum_channel_post_reply.py +138 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/federation/get_admin_settings_banlist.py +130 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/federation/get_federation_banlist.py +146 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/federation/get_federation_listing.py +138 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/federation/get_key_rotation.py +94 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/federation/get_moderation_history.py +173 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/federation/list_admin_banlist_entries.py +169 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/federation/list_admin_banlist_overrides.py +137 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/federation/list_admin_banlist_sources.py +137 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/federation/list_federation_peers.py +85 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/federation/sign_admin_directory_listing.py +107 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/federation/update_admin_banlist_sources.py +110 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/federation/update_admin_settings_banlist.py +107 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/forum/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/forum/create_channel_post.py +176 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/forum/create_channel_post_reaction.py +125 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/forum/create_channel_post_reply.py +190 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/forum/create_channel_post_reply_reaction.py +135 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/forum/create_channel_tag.py +180 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/forum/delete_channel_post.py +110 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/forum/delete_channel_post_reaction.py +118 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/forum/delete_channel_post_reply.py +118 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/forum/delete_channel_post_reply_reaction.py +126 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/forum/delete_tag.py +106 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/forum/get_channel_post.py +205 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/forum/list_channel_posts.py +191 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/forum/list_channel_tags.py +176 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/forum/lock_channel_post.py +110 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/forum/mark_channel_post_read.py +110 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/forum/pin_channel_post.py +110 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/forum/search_channel_posts.py +176 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/forum/unlock_channel_post.py +110 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/forum/unpin_channel_post.py +110 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/forum/update_channel_post.py +190 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/forum/update_channel_post_reply.py +204 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/forum/update_tag.py +196 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/friends/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/friends/accept_friend.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/friends/create_friend.py +107 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/friends/delete_friend.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/friends/list_friends.py +85 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/friends/list_pending_friends.py +85 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/health/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/health/get_health.py +128 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/health/get_info.py +136 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/health/get_metrics.py +85 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/hub/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/hub/approve_hub_pending.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/hub/create_hub_icon.py +107 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/hub/delete_hub_icon.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/hub/get_admin_settings_pow.py +128 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/hub/get_admin_settings_tags.py +130 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/hub/get_hub_settings.py +85 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/hub/list_hub_icons.py +85 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/hub/list_hub_members.py +133 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/hub/list_hub_pending.py +124 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/hub/set_hub_settings_challenge.py +107 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/hub/set_hub_settings_lobby.py +107 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/hub/update_admin_settings_listing.py +107 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/hub/update_admin_settings_moderation.py +109 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/hub/update_admin_settings_pow.py +107 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/hub/update_admin_settings_tags.py +113 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/hub/update_hub.py +107 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/hub/update_hub_icon.py +117 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/identity/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/identity/claim_identity_pairing.py +107 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/identity/complete_identity_pairing.py +107 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/identity/create_identity_designation.py +135 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/identity/create_identity_device.py +117 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/identity/create_identity_pairing_offer.py +107 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/identity/create_identity_revocation.py +117 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/identity/get_identity_designation.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/identity/get_identity_dh_key.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/identity/get_identity_pairing_status.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/identity/get_identity_prefs.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/identity/list_identity_devices.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/identity/list_identity_dm_blocks.py +130 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/identity/list_identity_revocations.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/identity/set_identity_dh_key.py +117 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/identity/set_identity_dm_blocks.py +107 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/identity/set_identity_prefs.py +117 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/invites/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/invites/create_invite.py +196 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/invites/delete_invite.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/invites/get_join_invite.py +163 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/invites/list_invites.py +211 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/invites/redeem_join_invite.py +109 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/lobby/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/lobby/get_lobby_status.py +136 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/lobby/get_lobby_welcome.py +85 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/lobby/submit_lobby_pow.py +115 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/me/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/me/delete_me.py +120 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/me/delete_me_credential.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/me/delete_me_device.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/me/get_me.py +128 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/me/list_me_credentials.py +137 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/me/list_me_devices.py +135 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/me/update_me.py +160 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/me/update_me_credential.py +117 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/messages/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/messages/create_channel_message.py +181 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/messages/create_channel_message_reaction.py +127 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/messages/delete_channel_message.py +110 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/messages/delete_channel_message_reaction.py +118 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/messages/get_preview.py +180 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/messages/list_channel_messages.py +196 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/messages/list_channel_pins.py +206 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/messages/pin_channel_message.py +110 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/messages/unpin_channel_message.py +110 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/messages/update_channel_message.py +190 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/moderation/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/moderation/create_channel_ban.py +125 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/moderation/create_channel_voice_mute.py +117 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/moderation/create_moderation_ban.py +196 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/moderation/create_moderation_mute.py +107 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/moderation/create_moderation_voice_mute.py +107 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/moderation/delete_channel_ban.py +110 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/moderation/delete_channel_voice_mute.py +110 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/moderation/delete_moderation_ban.py +108 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/moderation/delete_moderation_mute.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/moderation/delete_moderation_voice_mute.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/moderation/get_channel_talk_power.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/moderation/grant_channel_talk.py +124 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/moderation/kick_user.py +107 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/moderation/list_admin_audit_log.py +220 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/moderation/list_admin_reports.py +204 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/moderation/list_channel_bans.py +162 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/moderation/list_channel_raise_hands.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/moderation/list_channel_voice_mutes.py +164 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/moderation/list_moderation_bans.py +128 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/moderation/list_moderation_mutes.py +120 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/moderation/list_moderation_voice_mutes.py +85 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/moderation/lower_channel_hand.py +110 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/moderation/raise_channel_hand.py +155 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/moderation/reindex_admin_search.py +148 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/moderation/report_message.py +120 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/moderation/review_admin_report.py +117 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/moderation/set_channel_talk_power.py +117 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/moderation/timeout_user.py +107 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/outgoing_webhooks/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/outgoing_webhooks/create_admin_outgoing_webhook.py +174 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/outgoing_webhooks/delete_admin_outgoing_webhook.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/outgoing_webhooks/enable_admin_outgoing_webhook.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/outgoing_webhooks/list_admin_outgoing_webhook_deliveries.py +232 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/outgoing_webhooks/list_admin_outgoing_webhook_subscriptions.py +159 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/outgoing_webhooks/list_admin_outgoing_webhooks.py +137 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/outgoing_webhooks/rotate_admin_outgoing_webhook_secret.py +159 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/outgoing_webhooks/set_admin_outgoing_webhook_subscriptions.py +190 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/outgoing_webhooks/update_admin_outgoing_webhook.py +117 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/polls/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/polls/create_channel_poll.py +121 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/polls/delete_poll.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/polls/get_poll.py +155 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/polls/list_channel_polls.py +208 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/polls/vote_poll.py +120 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/profile/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/profile/get_profile.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/profile/set_profile.py +117 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/recovery/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/recovery/approve_admin_recovery.py +108 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/recovery/attest_recovery_rotation_request.py +138 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/recovery/delete_recovery_contact.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/recovery/deny_admin_recovery.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/recovery/get_recovery_rotation_request.py +169 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/recovery/list_admin_recovery_pending.py +137 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/recovery/list_recovery_contacts.py +130 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/recovery/list_recovery_requests.py +137 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/recovery/rotate_recovery_key.py +176 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/recovery/set_recovery_contacts.py +113 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/roles/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/roles/create_role.py +160 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/roles/create_role_category.py +160 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/roles/delete_role.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/roles/delete_role_category.py +106 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/roles/delete_user_role.py +110 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/roles/explain_user_permissions.py +229 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/roles/list_permissions.py +156 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/roles/list_role_categories.py +133 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/roles/list_role_members.py +154 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/roles/list_roles.py +133 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/roles/list_user_roles.py +160 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/roles/set_user_role.py +110 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/roles/update_role.py +176 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/roles/update_role_category.py +176 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/search/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/search/search.py +192 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/soundboard/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/soundboard/create_soundboard_sound.py +179 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/soundboard/delete_soundboard_sound.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/soundboard/get_soundboard_sound_audio.py +106 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/soundboard/list_soundboard_sounds.py +145 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/soundboard/mark_soundboard_sound_played.py +123 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/survey/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/survey/get_admin_survey.py +85 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/survey/get_admin_survey_response.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/survey/get_survey_current.py +85 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/survey/list_admin_survey_responses.py +85 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/survey/set_admin_survey.py +107 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/survey/submit_survey.py +113 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/uploads/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/uploads/get_upload.py +109 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/uploads/upload_channel_file.py +205 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/users/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/users/get_user_profile.py +155 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/users/list_users.py +211 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/voice/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/voice/list_voice_active_users.py +127 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/voice/list_voice_participants.py +85 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/voice/list_voice_populations.py +85 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/web_socket/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/web_socket/connect_web_socket.py +130 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/webhooks/__init__.py +1 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/webhooks/create_admin_webhook.py +168 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/webhooks/delete_admin_webhook.py +102 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/api/webhooks/execute_webhook.py +206 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/client.py +280 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/errors.py +16 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/__init__.py +845 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/accept_pending_alliance_invite_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/ack_me_events_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/alliance_info.py +88 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/alliance_voice_grant.py +75 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/alliance_voice_grant_payload.py +141 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/app_command_def.py +115 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/app_command_def_scope.py +9 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/app_registration.py +131 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/app_registration_commands_item.py +107 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/app_subscription.py +74 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/attachment.py +77 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/attest_recovery_rotation_request_body.py +69 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/attestation_input.py +69 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/badge_payload.py +118 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/begin_webauthn_assertion_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/begin_webauthn_assertion_response_200.py +87 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/begin_webauthn_assertion_response_200_options.py +47 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/begin_webauthn_registration_body.py +72 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/begin_webauthn_registration_response_200.py +87 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/begin_webauthn_registration_response_200_options.py +47 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/cert_payload.py +191 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/cert_payload_standing.py +9 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/certification.py +76 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/challenge_prompt.py +107 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/challenge_prompt_mode.py +10 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/channel.py +300 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/claim_identity_pairing_body.py +85 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/complete_identity_pairing_body.py +94 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/conversation.py +99 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_admin_banlist_override_body.py +85 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_admin_banlist_override_body_override_type.py +9 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_admin_banlist_override_response_201.py +99 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_admin_banlist_source_body.py +84 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_admin_banlist_source_body_policy.py +9 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_admin_banlist_source_response_201.py +99 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_admin_cert_badge_body.py +81 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_admin_emoji_body.py +77 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_admin_outgoing_webhook_body.py +72 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_admin_outgoing_webhook_response_201.py +99 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_admin_webhook_body.py +89 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_admin_webhook_response_201.py +79 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_alliance_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_alliance_channel_body.py +118 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_alliance_channel_body_forum_remote_write.py +10 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_alliance_channel_body_voice_remote_join.py +9 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_alliance_channel_message_body.py +117 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_alliance_channel_post_body.py +117 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_alliance_channel_post_body_attachments_item.py +85 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_alliance_channel_post_reaction_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_alliance_channel_post_reply_body.py +109 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_alliance_channel_post_reply_body_attachments_item.py +85 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_alliance_push_invite_body.py +91 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_alliance_voice_grant_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_alliance_voice_grant_response_200.py +105 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_alliance_voice_grant_response_200_grant.py +47 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_auth_challenge_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_auth_challenge_response_200.py +84 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_auth_challenge_response_200_scheme.py +8 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_auth_device_token_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_auth_device_token_response_200.py +79 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_channel_ban_body.py +83 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_channel_body.py +146 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_channel_message_body.py +117 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_channel_message_reaction_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_channel_poll_body.py +114 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_channel_post_body.py +115 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_channel_post_body_attachments_item.py +85 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_channel_post_reaction_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_channel_post_reply_body.py +105 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_channel_post_reply_body_attachments_item.py +85 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_channel_post_reply_reaction_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_channel_tag_body.py +92 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_channel_voice_mute_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_conversation_body.py +113 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_conversation_body_member_hubs.py +45 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_conversation_body_member_masters.py +45 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_conversation_member_body.py +87 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_conversation_message_body.py +154 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_event_body.py +160 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_event_slot_response_201.py +119 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_event_squad_room_body.py +72 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_federation_alliance_invite_body.py +120 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_federation_alliance_member_body.py +85 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_federation_badge_offer_body.py +115 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_federation_dm_body.py +222 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_federation_dm_member_change_body.py +131 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_federation_forum_channel_post_body.py +77 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_federation_forum_channel_post_reaction_body.py +69 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_federation_forum_channel_post_reply_body.py +80 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_federation_peer_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_friend_body.py +81 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_hub_icon_body.py +69 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_identity_designation_body.py +93 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_identity_pairing_offer_body.py +101 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_identity_revocation_body.py +85 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_invite_body.py +138 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_moderation_ban_body.py +83 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_moderation_ban_response_201.py +119 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_moderation_mute_body.py +72 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_moderation_voice_mute_body.py +72 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_role_body.py +115 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_role_category_body.py +90 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_slot_request.py +83 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_soundboard_sound_body.py +97 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/create_soundboard_sound_response_201.py +126 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/delete_admin_banlist_sources_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/delete_federation_alliance_member_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/delete_federation_forum_channel_post_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/delete_federation_forum_channel_post_reply_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/dm_message.py +233 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/dm_message_encrypted_envelope_type_0.py +159 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/dm_message_encrypted_envelope_type_0_signer_cert.py +47 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/dm_message_group_encrypted_envelope_type_0.py +141 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/dm_message_group_encrypted_envelope_type_0_signer_cert.py +47 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/embed.py +151 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/embed_field.py +80 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/embed_footer.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/encrypted_dm_envelope.py +152 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/execute_webhook_body.py +103 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/execute_webhook_body_embeds.py +45 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/execute_webhook_response_200.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/explain_user_permissions_response_200.py +141 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/explain_user_permissions_response_200_sources_item.py +109 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/explain_user_permissions_response_200_sources_item_kind.py +10 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/favorite_hub.py +80 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/federation_join_alliance_body.py +69 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/federation_join_alliance_response_200.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/finish_webauthn_assertion_body.py +82 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/finish_webauthn_assertion_body_credential.py +47 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/finish_webauthn_assertion_response_200.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/finish_webauthn_registration_body.py +93 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/finish_webauthn_registration_body_credential.py +47 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/finish_webauthn_registration_response_200.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/forum_tag.py +117 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/game_launch_card.py +89 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/get_admin_settings_banlist_response_200.py +94 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/get_admin_settings_banlist_response_200_sources_item.py +99 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/get_admin_settings_pow_response_200.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/get_admin_settings_tags_response_200.py +72 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/get_channel_my_permissions_response_200.py +81 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/get_federation_banlist_response_200.py +87 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/get_federation_banlist_response_200_payload.py +105 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/get_federation_banlist_response_200_payload_entries_item.py +90 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/get_federation_listing_response_200.py +128 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/get_health_response_200.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/get_join_invite_response_200.py +79 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/get_moderation_history_response_200.py +85 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/get_moderation_history_response_200_entries_item.py +109 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/get_moderation_history_response_200_entries_item_policy.py +9 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/get_poll_response_200.py +188 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/get_poll_response_200_totals.py +47 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/get_preview_response_200.py +121 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/get_recovery_rotation_request_response_200.py +134 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/get_recovery_rotation_request_response_200_status.py +11 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/get_user_profile_response_200.py +172 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/get_user_profile_response_200_badges_item.py +70 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/get_user_profile_response_200_roles_item.py +90 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/group_encrypted_envelope.py +133 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/hub_info.py +380 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/hub_info_badges_item.py +75 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/hub_info_cert_requirement.py +86 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/hub_info_cert_requirement_require.py +84 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/hub_info_challenge_mode.py +11 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/hub_info_rotation.py +50 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/invite.py +187 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/invite_status.py +10 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/issue_admin_badge_body.py +89 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/issue_admin_badge_response_201.py +139 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/join_alliance_with_invite_body.py +85 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/kick_user_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/leave_voice_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_admin_audit_log_response_200.py +105 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_admin_audit_log_response_200_entries_item.py +165 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_admin_audit_log_response_200_entries_item_payload.py +45 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_admin_banlist_entries_response_200_item.py +108 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_admin_banlist_overrides_response_200_item.py +111 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_admin_banlist_overrides_response_200_item_override_type.py +9 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_admin_banlist_sources_response_200_item.py +109 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_admin_banlist_sources_response_200_item_policy.py +9 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_admin_certs_response_200_item.py +178 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_admin_certs_response_200_item_standing.py +9 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_admin_outgoing_webhook_deliveries_response_200_item.py +166 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_admin_outgoing_webhook_subscriptions_response_200.py +90 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_admin_outgoing_webhook_subscriptions_response_200_subscriptions_item.py +94 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_admin_outgoing_webhooks_response_200_item.py +175 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_admin_recovery_pending_response_200_item.py +126 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_admin_reports_response_200_item.py +135 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_admin_reports_status.py +9 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_admin_settings_certs_response_200.py +141 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_admin_settings_certs_response_200_cert_issuer_urls.py +50 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_admin_settings_certs_response_200_cert_mode.py +10 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_alliance_channel_posts_response_200.py +88 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_alliance_managers_response_200_item.py +97 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_alliance_people_response_200_item.py +111 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_apps_response_200_item.py +141 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_apps_response_200_item_commands_item.py +70 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_apps_response_200_item_game.py +88 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_badges_response_200_item.py +119 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_certs_revocations_response_200_item.py +79 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_channel_bans_response_200_item.py +108 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_channel_permissions_response_200.py +94 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_channel_permissions_response_200_roles_item.py +120 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_channel_permissions_response_200_roles_item_overwrites.py +74 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_channel_pins_response_200_item.py +105 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_channel_pins_response_200_item_message.py +108 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_channel_polls_response_200_item.py +161 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_channel_polls_response_200_item_totals.py +47 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_channel_posts_response_200.py +88 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_channel_voice_mutes_response_200_item.py +88 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_conversation_sender_keys_response_200_item.py +106 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_emojis_response_200_item.py +79 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_event_assignments_response_200_item.py +99 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_event_rsvps_response_200_item.py +70 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_events_response_200_item.py +200 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_events_response_200_item_my_rsvp.py +10 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_events_response_200_item_rsvp_counts.py +79 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_federation_badge_revocations_response_200_item.py +88 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_identity_dm_blocks_response_200.py +63 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_me_credentials_response_200_item.py +130 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_me_devices_response_200_item.py +119 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_me_events_response_200.py +79 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_me_events_response_200_events_item.py +85 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_pending_badges_response_200_item.py +139 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_permissions_response_200.py +85 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_permissions_response_200_permissions_item.py +90 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_permissions_response_200_permissions_item_scope.py +9 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_recovery_contacts_response_200.py +103 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_recovery_contacts_response_200_contacts_item.py +70 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_recovery_requests_response_200_item.py +106 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_soundboard_sounds_response_200_item.py +126 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/list_unread_channels_response_200_item.py +70 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/lobby_status.py +127 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/lobby_status_status.py +10 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/mark_soundboard_sound_played_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/me_info.py +269 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/me_info_approval_status.py +9 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/me_info_favorite_hubs_item.py +83 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/member_admin_info.py +136 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/message.py +281 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/message_embeds_item.py +45 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/message_game.py +47 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/poll_option.py +69 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/post_detail.py +319 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/post_summary.py +267 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/post_summary_attachments_item.py +85 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/post_summary_tags_item.py +80 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/pow_proof.py +69 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/public_hub_entry.py +77 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/raise_channel_hand_response_201.py +88 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/reaction.py +79 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/redeem_auth_device_token_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/redeem_auth_device_token_response_200.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/reindex_admin_search_response_202.py +71 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/reindex_admin_search_response_202_status.py +9 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/reorder_channels_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/reply_context.py +99 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/reply_view.py +183 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/reply_view_attachments_item.py +85 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/report_message_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/review_admin_report_body.py +73 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/review_admin_report_body_action.py +10 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/role.py +168 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/role_category.py +128 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/rotate_admin_outgoing_webhook_secret_response_200.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/rotate_recovery_key_body.py +115 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/rotate_recovery_key_response_201.py +116 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/rotate_recovery_key_response_201_status.py +9 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/rsvp_event_body.py +73 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/rsvp_event_body_status.py +10 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/search_channel_posts_response_200.py +94 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/search_channel_posts_response_200_results_item.py +97 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/search_response_200_item.py +126 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/sender_key_recipient_blob.py +85 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/set_admin_outgoing_webhook_subscriptions_body.py +77 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/set_admin_outgoing_webhook_subscriptions_response_200.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/set_admin_survey_body.py +91 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/set_alliance_people_visibility_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/set_channel_permission_body.py +74 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/set_channel_talk_power_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/set_conversation_sender_keys_body.py +111 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/set_event_body.py +126 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/set_hub_settings_challenge_body.py +75 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/set_hub_settings_challenge_body_challenge_mode.py +11 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/set_hub_settings_lobby_body.py +83 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/set_identity_dh_key_body.py +69 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/set_identity_dm_blocks_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/set_identity_prefs_body.py +85 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/set_me_app_commands_body.py +75 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/set_me_app_profile_body.py +173 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/set_me_app_subscriptions_body.py +75 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/set_me_app_subscriptions_response_200.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/set_profile_body.py +118 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/set_recovery_contacts_body.py +69 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/sign_admin_directory_listing_body.py +96 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/signed_member_change.py +96 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/start_screenshare_body.py +90 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/start_screenshare_response_200.py +70 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/stop_screenshare_body.py +69 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/subkey_cert.py +115 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/submit_lobby_pow_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/submit_survey_body.py +83 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/survey_answer_input.py +81 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/survey_choice_admin.py +85 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/survey_question_admin.py +122 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/timeout_user_body.py +80 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/update_admin_banlist_sources_body.py +73 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/update_admin_banlist_sources_body_policy.py +9 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/update_admin_outgoing_webhook_body.py +79 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/update_admin_settings_banlist_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/update_admin_settings_certs_body.py +232 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/update_admin_settings_certs_body_cert_issuer_urls.py +47 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/update_admin_settings_certs_body_cert_mode.py +10 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/update_admin_settings_certs_body_cert_require.py +70 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/update_admin_settings_listing_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/update_admin_settings_moderation_body.py +70 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/update_admin_settings_pow_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/update_admin_settings_tags_body.py +72 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/update_channel_body.py +215 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/update_channel_message_body.py +90 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/update_channel_post_body.py +81 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/update_channel_post_reply_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/update_event_slot_body.py +81 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/update_event_slot_response_200.py +119 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/update_hub_body.py +205 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/update_hub_icon_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/update_me_body.py +200 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/update_me_credential_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/update_role_body.py +150 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/update_role_category_body.py +110 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/update_tag_body.py +90 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/upload_channel_file_body.py +81 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/upload_channel_file_response_201.py +97 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/user_info.py +160 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/verify_auth_body.py +206 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/verify_auth_response_200.py +87 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/verify_auth_response_200_scope.py +11 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/verify_challenge_body.py +80 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/vote_poll_body.py +61 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/models/webhook_subscription_dto.py +74 -0
- wavvon_sdk-0.1.0/src/wavvon/rest/types.py +54 -0
- wavvon_sdk-0.1.0/src/wavvon/retry.py +94 -0
- wavvon_sdk-0.1.0/src/wavvon/webhooks.py +368 -0
- wavvon_sdk-0.1.0/tests/smoke.py +159 -0
- wavvon_sdk-0.1.0/tests/test_auth.py +116 -0
- wavvon_sdk-0.1.0/tests/test_client.py +92 -0
- wavvon_sdk-0.1.0/tests/test_conformance.py +117 -0
- wavvon_sdk-0.1.0/tests/test_events.py +163 -0
- wavvon_sdk-0.1.0/tests/test_pager.py +68 -0
- wavvon_sdk-0.1.0/tests/test_retry.py +83 -0
- wavvon_sdk-0.1.0/tests/test_webhooks.py +126 -0
- wavvon_sdk-0.1.0/wavvon-server/crates/identity/wire-vectors.json +334 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
* text=auto eol=lf
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main, develop]
|
|
6
|
+
pull_request:
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
check:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
strategy:
|
|
12
|
+
matrix:
|
|
13
|
+
python: ["3.11", "3.12", "3.13", "3.14"]
|
|
14
|
+
steps:
|
|
15
|
+
- uses: actions/checkout@v4
|
|
16
|
+
- uses: actions/checkout@v4
|
|
17
|
+
with:
|
|
18
|
+
repository: Wavvon/Wavvon-server
|
|
19
|
+
ref: eb11d75657ee8362dd42a7982fc5b13a3dcc4e68
|
|
20
|
+
path: wavvon-server
|
|
21
|
+
sparse-checkout: crates/identity/wire-vectors.json
|
|
22
|
+
sparse-checkout-cone-mode: false
|
|
23
|
+
- uses: actions/setup-python@v5
|
|
24
|
+
with:
|
|
25
|
+
python-version: ${{ matrix.python }}
|
|
26
|
+
cache: pip
|
|
27
|
+
cache-dependency-path: pyproject.toml
|
|
28
|
+
- run: python -m pip install --upgrade pip
|
|
29
|
+
- run: python -m pip install -e . --group dev
|
|
30
|
+
- run: python scripts/check
|
|
31
|
+
env:
|
|
32
|
+
CI: "true"
|
|
33
|
+
WAVVON_WIRE_VECTORS: wavvon-server/crates/identity/wire-vectors.json
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: read
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
build:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
outputs:
|
|
14
|
+
version: ${{ steps.ver.outputs.version }}
|
|
15
|
+
release: ${{ steps.tag.outputs.exists == 'false' }}
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v4
|
|
18
|
+
- id: ver
|
|
19
|
+
run: echo "version=$(sed -n 's/^version = "\(.*\)"$/\1/p' pyproject.toml | head -1)" >> "$GITHUB_OUTPUT"
|
|
20
|
+
- run: test -n "${{ steps.ver.outputs.version }}"
|
|
21
|
+
- id: tag
|
|
22
|
+
run: |
|
|
23
|
+
if git ls-remote --exit-code --tags origin "refs/tags/v${{ steps.ver.outputs.version }}" >/dev/null; then
|
|
24
|
+
echo "exists=true" >> "$GITHUB_OUTPUT"
|
|
25
|
+
else
|
|
26
|
+
echo "exists=false" >> "$GITHUB_OUTPUT"
|
|
27
|
+
fi
|
|
28
|
+
- if: steps.tag.outputs.exists == 'false'
|
|
29
|
+
uses: actions/checkout@v4
|
|
30
|
+
with:
|
|
31
|
+
repository: Wavvon/Wavvon-server
|
|
32
|
+
ref: eb11d75657ee8362dd42a7982fc5b13a3dcc4e68
|
|
33
|
+
path: wavvon-server
|
|
34
|
+
sparse-checkout: crates/identity/wire-vectors.json
|
|
35
|
+
sparse-checkout-cone-mode: false
|
|
36
|
+
- if: steps.tag.outputs.exists == 'false'
|
|
37
|
+
uses: actions/setup-python@v5
|
|
38
|
+
with:
|
|
39
|
+
python-version: "3.13"
|
|
40
|
+
- if: steps.tag.outputs.exists == 'false'
|
|
41
|
+
run: |
|
|
42
|
+
python -m pip install --upgrade pip build
|
|
43
|
+
python -m pip install -e . --group dev
|
|
44
|
+
- if: steps.tag.outputs.exists == 'false'
|
|
45
|
+
run: python scripts/check
|
|
46
|
+
env:
|
|
47
|
+
CI: "true"
|
|
48
|
+
WAVVON_WIRE_VECTORS: wavvon-server/crates/identity/wire-vectors.json
|
|
49
|
+
- if: steps.tag.outputs.exists == 'false'
|
|
50
|
+
run: python -m build
|
|
51
|
+
- if: steps.tag.outputs.exists == 'false'
|
|
52
|
+
uses: actions/upload-artifact@v4
|
|
53
|
+
with:
|
|
54
|
+
name: dist
|
|
55
|
+
path: dist/
|
|
56
|
+
|
|
57
|
+
publish:
|
|
58
|
+
needs: build
|
|
59
|
+
if: needs.build.outputs.release == 'true'
|
|
60
|
+
runs-on: ubuntu-latest
|
|
61
|
+
environment:
|
|
62
|
+
name: pypi
|
|
63
|
+
url: https://pypi.org/project/wavvon-sdk/${{ needs.build.outputs.version }}/
|
|
64
|
+
permissions:
|
|
65
|
+
id-token: write
|
|
66
|
+
steps:
|
|
67
|
+
- uses: actions/download-artifact@v4
|
|
68
|
+
with:
|
|
69
|
+
name: dist
|
|
70
|
+
path: dist/
|
|
71
|
+
- uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33
|
|
72
|
+
with:
|
|
73
|
+
skip-existing: true
|
|
74
|
+
|
|
75
|
+
tag:
|
|
76
|
+
needs: [build, publish]
|
|
77
|
+
runs-on: ubuntu-latest
|
|
78
|
+
permissions:
|
|
79
|
+
contents: write
|
|
80
|
+
steps:
|
|
81
|
+
- uses: actions/checkout@v4
|
|
82
|
+
- env:
|
|
83
|
+
GH_TOKEN: ${{ github.token }}
|
|
84
|
+
run: |
|
|
85
|
+
git tag "v${{ needs.build.outputs.version }}"
|
|
86
|
+
git push origin "v${{ needs.build.outputs.version }}"
|
|
87
|
+
gh release create "v${{ needs.build.outputs.version }}" --generate-notes --title "v${{ needs.build.outputs.version }}"
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
Guidance for working in this repo: `wavvon-sdk` (import `wavvon`), the Python
|
|
4
|
+
SDK for programs (bots and apps) that talk to a Wavvon hub. The design is
|
|
5
|
+
[sdk.md](https://github.com/Wavvon/Wavvon-docs/blob/main/docs/sdk.md); this is
|
|
6
|
+
its tier 1. The TypeScript SDK
|
|
7
|
+
([Wavvon-sdk-js](https://github.com/Wavvon/Wavvon-sdk-js)) is the reference
|
|
8
|
+
for surface and behaviour; this one mirrors it idiomatically. Hub code lives in
|
|
9
|
+
[Wavvon-server](https://github.com/Wavvon/Wavvon-server), the REST spec and
|
|
10
|
+
protocol docs in [Wavvon-docs](https://github.com/Wavvon/Wavvon-docs).
|
|
11
|
+
|
|
12
|
+
## Commands
|
|
13
|
+
|
|
14
|
+
```sh
|
|
15
|
+
python -m venv .venv && .venv/bin/pip install -e . --group dev # .venv\Scripts on Windows
|
|
16
|
+
python scripts/check # ruff check + ruff format --check + mypy --strict + pytest. Must pass before a commit.
|
|
17
|
+
python -m pytest -q # tests only
|
|
18
|
+
python scripts/generate.py [<path-to-Wavvon-docs>] [--ref <git-ref>] # regenerate src/wavvon/rest
|
|
19
|
+
python scripts/smoke_local.py # real hub binary, see below
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Code comments in English, only where the why is not obvious. No comments in
|
|
23
|
+
GitHub Actions workflow files: explain choices in the commit message.
|
|
24
|
+
|
|
25
|
+
## Layers
|
|
26
|
+
|
|
27
|
+
1. **Generated REST** - `src/wavvon/rest/`, from Wavvon-docs `openapi.yaml`
|
|
28
|
+
by `scripts/generate.py` (openapi-python-client, pinned in the dev group).
|
|
29
|
+
Committed; never edit by hand. `SPEC_COMMIT` records the docs commit:
|
|
30
|
+
`-dirty` means local edits. Excluded from ruff and from mypy
|
|
31
|
+
errors.
|
|
32
|
+
2. **Hand-written core** - `src/wavvon/`:
|
|
33
|
+
`auth.py` challenge rules and login; `retry.py` backoff; `client.py`
|
|
34
|
+
`WavvonClient` (the generated client over an httpx transport that adds the
|
|
35
|
+
bearer, retries and re-authenticates on 401), capabilities, app
|
|
36
|
+
registration, polling, `ok()`; `pager.py`; `events.py` the WebSocket stream
|
|
37
|
+
and frame TypedDicts; `webhooks.py` dispatch and outgoing-webhook
|
|
38
|
+
verification, reply TypedDicts, the framework-agnostic handler and `to_asgi`.
|
|
39
|
+
3. **Conformance** - `tests/test_conformance.py` reads Wavvon-server
|
|
40
|
+
`crates/identity/wire-vectors.json` (default `../../server/...` relative
|
|
41
|
+
to the working directory, or `WAVVON_WIRE_VECTORS`). Strings starting with
|
|
42
|
+
`@` refer to `fixtures`. Never copied into this repo. Missing file: loud
|
|
43
|
+
skip locally, failure when `CI` is set.
|
|
44
|
+
|
|
45
|
+
## Rules the SDK must keep (sdk.md §5, §6)
|
|
46
|
+
|
|
47
|
+
- **Capabilities, never versions.** Gate features on `GET /info`
|
|
48
|
+
`capabilities` and raise `UnsupportedByHubError`. Never compare `version`.
|
|
49
|
+
- **429 is "not now", never "no".** Retry 429/5xx/timeouts/transport errors
|
|
50
|
+
with capped exponential backoff and jitter. On exhaustion raise
|
|
51
|
+
`HubUnavailableError`; never turn a transient failure into an empty list,
|
|
52
|
+
"not found", or any other definitive answer. A pager page that fails must
|
|
53
|
+
raise, not end the list. Only transport errors and timeouts are retried;
|
|
54
|
+
a programming error propagates.
|
|
55
|
+
- **Unknown is loud.** Unknown socket frames and dispatch types are delivered
|
|
56
|
+
as an `unknown` variant with the raw payload, never dropped. `info()`
|
|
57
|
+
returns the hub's JSON rather than a generated model because generated enums
|
|
58
|
+
raise on a value they do not know.
|
|
59
|
+
- **Re-auth on its own**, with the state observable (`on_state_change`).
|
|
60
|
+
- **Auth challenge**: `scheme: "tagged-v1"` -> sign
|
|
61
|
+
`"wavvon/auth-challenge/v1\0" || challenge`; no scheme -> raw only at exactly
|
|
62
|
+
32 bytes; unknown scheme -> error.
|
|
63
|
+
- **Never send the seed** or any private key anywhere. Never invent a wire
|
|
64
|
+
format: signed bytes come from wire-format.md and the vectors; a new one is
|
|
65
|
+
a server-side change first. Never model a bot as an account or send
|
|
66
|
+
`is_bot`. Tier 1 is community-axis only (no DMs E2E, pairing, home hub).
|
|
67
|
+
|
|
68
|
+
Code is authoritative over docs. When they disagree, follow the hub code and
|
|
69
|
+
report the doc bug to Wavvon-docs.
|
|
70
|
+
|
|
71
|
+
## Facts verified against the hub that the docs get wrong or omit
|
|
72
|
+
|
|
73
|
+
- The challenge is hex. The hub removes a pending challenge when verify reads
|
|
74
|
+
it, so a transient verify failure restarts from a fresh challenge.
|
|
75
|
+
- `resume` and `hub_event` push only work on a socket whose identity had an
|
|
76
|
+
app profile **when it connected** (`is_app` is read at connect). Register
|
|
77
|
+
first, then `connect()`. Replay can re-deliver: drop `seq <= last`.
|
|
78
|
+
- The app side of a mini-app sends `app_announce` / `app_dismiss` and talks to
|
|
79
|
+
players with `mini_app_message` + `to_pubkey`. `app_join` is answered by the
|
|
80
|
+
hub, not the app.
|
|
81
|
+
- Paging: a bare array plus `limit` (default 100, max 500) and `cursor` = key
|
|
82
|
+
of the previous page's last row; the key differs per endpoint (`code`,
|
|
83
|
+
`public_key`, `id`). Channel messages still page with `before`.
|
|
84
|
+
- Outgoing-webhook HKDF input is the **decoded** secret bytes (the admin sees
|
|
85
|
+
base64url without padding); the HMAC key is the 32 HKDF bytes, not hex.
|
|
86
|
+
- `GET /me/events` rows are never written by the hub today
|
|
87
|
+
(Wavvon-server#170); `poll_events` follows the spec and nothing relies on it.
|
|
88
|
+
|
|
89
|
+
## Smoke test
|
|
90
|
+
|
|
91
|
+
`tests/smoke.py` runs against a real hub (`WAVVON_SMOKE_HUB`,
|
|
92
|
+
`WAVVON_SMOKE_INVITE` for an invite whose role grants `apps.register`,
|
|
93
|
+
optional `WAVVON_SMOKE_CHANNEL`). `scripts/smoke_local.py` copies a hub binary
|
|
94
|
+
(`WAVVON_HUB_BIN`, default a sibling Wavvon-server checkout's
|
|
95
|
+
`target/debug/wavvon-hub`) into a temp directory, boots it on a fresh database
|
|
96
|
+
in a PostgreSQL docker container (`WAVVON_PG_CONTAINER`, default `wavvon-pg`),
|
|
97
|
+
sets up a role, invite and channel as owner, runs the smoke, and kills only
|
|
98
|
+
the hub it started. In-process tests have missed every cross-process bug this
|
|
99
|
+
project has had: run it when touching auth, the socket or webhooks.
|
|
100
|
+
|
|
101
|
+
## Git
|
|
102
|
+
|
|
103
|
+
Work on `develop`; `main` is for releases. Commit in logical steps.
|
|
104
|
+
|
|
105
|
+
## Releasing
|
|
106
|
+
|
|
107
|
+
Bump `version` in `pyproject.toml` on `develop`, open a PR from `develop` to
|
|
108
|
+
`main`; a maintainer merges it with a merge commit. `.github/workflows/release.yml`
|
|
109
|
+
then builds and checks on `main`; the `publish` job runs in the GitHub
|
|
110
|
+
environment `pypi`, which only `main` may use and which waits for a
|
|
111
|
+
maintainer's approval in the Actions tab. PyPI trusted publishing is bound to
|
|
112
|
+
that environment, so nothing outside it can publish; there is no token. After
|
|
113
|
+
the upload the workflow tags `v<version>` and creates the GitHub release.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
1. Branch from `develop` and open the pull request against `develop`.
|
|
4
|
+
2. `pip install -e . --group dev && python scripts/check` must pass. If you
|
|
5
|
+
touched auth, the socket or webhooks, also run the smoke test against a
|
|
6
|
+
real hub (`python scripts/smoke_local.py`, see CLAUDE.md).
|
|
7
|
+
3. Do not edit `src/wavvon/rest/` by hand. Run `python scripts/generate.py
|
|
8
|
+
<Wavvon-docs checkout>` and commit the result with the new `SPEC_COMMIT`.
|
|
9
|
+
4. A new signed byte sequence starts as a change in
|
|
10
|
+
[Wavvon-server](https://github.com/Wavvon/Wavvon-server) with a wire
|
|
11
|
+
vector, never here.
|
|
12
|
+
5. A feature that needs a hub capability checks it with `require_capability`
|
|
13
|
+
and lists it in the README table.
|
|
14
|
+
|
|
15
|
+
Contributions are licensed under Apache-2.0 (see LICENSE).
|
wavvon_sdk-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
|
|
2
|
+
Apache License
|
|
3
|
+
Version 2.0, January 2004
|
|
4
|
+
http://www.apache.org/licenses/
|
|
5
|
+
|
|
6
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
7
|
+
|
|
8
|
+
1. Definitions.
|
|
9
|
+
|
|
10
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
11
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
12
|
+
|
|
13
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
14
|
+
the copyright owner that is granting the License.
|
|
15
|
+
|
|
16
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
17
|
+
other entities that control, are controlled by, or are under common
|
|
18
|
+
control with that entity. For the purposes of this definition,
|
|
19
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
20
|
+
direction or management of such entity, whether by contract or
|
|
21
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
22
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
23
|
+
|
|
24
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
25
|
+
exercising permissions granted by this License.
|
|
26
|
+
|
|
27
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
28
|
+
including but not limited to software source code, documentation
|
|
29
|
+
source, and configuration files.
|
|
30
|
+
|
|
31
|
+
"Object" form shall mean any form resulting from mechanical
|
|
32
|
+
transformation or translation of a Source form, including but
|
|
33
|
+
not limited to compiled object code, generated documentation,
|
|
34
|
+
and conversions to other media types.
|
|
35
|
+
|
|
36
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
37
|
+
Object form, made available under the License, as indicated by a
|
|
38
|
+
copyright notice that is included in or attached to the work
|
|
39
|
+
(an example is provided in the Appendix below).
|
|
40
|
+
|
|
41
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
42
|
+
form, that is based on (or derived from) the Work and for which the
|
|
43
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
44
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
45
|
+
of this License, Derivative Works shall not include works that remain
|
|
46
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
47
|
+
the Work and Derivative Works thereof.
|
|
48
|
+
|
|
49
|
+
"Contribution" shall mean any work of authorship, including
|
|
50
|
+
the original version of the Work and any modifications or additions
|
|
51
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
52
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
53
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
54
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
55
|
+
means any form of electronic, verbal, or written communication sent
|
|
56
|
+
to the Licensor or its representatives, including but not limited to
|
|
57
|
+
communication on electronic mailing lists, source code control systems,
|
|
58
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
59
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
60
|
+
excluding communication that is conspicuously marked or otherwise
|
|
61
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
62
|
+
|
|
63
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
64
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
65
|
+
subsequently incorporated within the Work.
|
|
66
|
+
|
|
67
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
68
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
69
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
70
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
71
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
72
|
+
Work and such Derivative Works in Source or Object form.
|
|
73
|
+
|
|
74
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
75
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
76
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
77
|
+
(except as stated in this section) patent license to make, have made,
|
|
78
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
79
|
+
where such license applies only to those patent claims licensable
|
|
80
|
+
by such Contributor that are necessarily infringed by their
|
|
81
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
82
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
83
|
+
institute patent litigation against any entity (including a
|
|
84
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
85
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
86
|
+
or contributory patent infringement, then any patent licenses
|
|
87
|
+
granted to You under this License for that Work shall terminate
|
|
88
|
+
as of the date such litigation is filed.
|
|
89
|
+
|
|
90
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
91
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
92
|
+
modifications, and in Source or Object form, provided that You
|
|
93
|
+
meet the following conditions:
|
|
94
|
+
|
|
95
|
+
(a) You must give any other recipients of the Work or
|
|
96
|
+
Derivative Works a copy of this License; and
|
|
97
|
+
|
|
98
|
+
(b) You must cause any modified files to carry prominent notices
|
|
99
|
+
stating that You changed the files; and
|
|
100
|
+
|
|
101
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
102
|
+
that You distribute, all copyright, patent, trademark, and
|
|
103
|
+
attribution notices from the Source form of the Work,
|
|
104
|
+
excluding those notices that do not pertain to any part of
|
|
105
|
+
the Derivative Works; and
|
|
106
|
+
|
|
107
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
108
|
+
distribution, then any Derivative Works that You distribute must
|
|
109
|
+
include a readable copy of the attribution notices contained
|
|
110
|
+
within such NOTICE file, excluding those notices that do not
|
|
111
|
+
pertain to any part of the Derivative Works, in at least one
|
|
112
|
+
of the following places: within a NOTICE text file distributed
|
|
113
|
+
as part of the Derivative Works; within the Source form or
|
|
114
|
+
documentation, if provided along with the Derivative Works; or,
|
|
115
|
+
within a display generated by the Derivative Works, if and
|
|
116
|
+
wherever such third-party notices normally appear. The contents
|
|
117
|
+
of the NOTICE file are for informational purposes only and
|
|
118
|
+
do not modify the License. You may add Your own attribution
|
|
119
|
+
notices within Derivative Works that You distribute, alongside
|
|
120
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
121
|
+
that such additional attribution notices cannot be construed
|
|
122
|
+
as modifying the License.
|
|
123
|
+
|
|
124
|
+
You may add Your own copyright statement to Your modifications and
|
|
125
|
+
may provide additional or different license terms and conditions
|
|
126
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
127
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
128
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
129
|
+
the conditions stated in this License.
|
|
130
|
+
|
|
131
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
132
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
133
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
134
|
+
this License, without any additional terms or conditions.
|
|
135
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
136
|
+
the terms of any separate license agreement you may have executed
|
|
137
|
+
with Licensor regarding such Contributions.
|
|
138
|
+
|
|
139
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
140
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
141
|
+
except as required for reasonable and customary use in describing the
|
|
142
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
143
|
+
|
|
144
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
145
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
146
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
147
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
148
|
+
implied, including, without limitation, any warranties or conditions
|
|
149
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
150
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
151
|
+
appropriateness of using or redistributing the Work and assume any
|
|
152
|
+
risks associated with Your exercise of permissions under this License.
|
|
153
|
+
|
|
154
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
155
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
156
|
+
unless required by applicable law (such as deliberate and grossly
|
|
157
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
158
|
+
liable to You for damages, including any direct, indirect, special,
|
|
159
|
+
incidental, or consequential damages of any character arising as a
|
|
160
|
+
result of this License or out of the use or inability to use the
|
|
161
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
162
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
163
|
+
other commercial damages or losses), even if such Contributor
|
|
164
|
+
has been advised of the possibility of such damages.
|
|
165
|
+
|
|
166
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
167
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
168
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
169
|
+
or other liability obligations and/or rights consistent with this
|
|
170
|
+
License. However, in accepting such obligations, You may act only
|
|
171
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
172
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
173
|
+
defend, and hold each Contributor harmless for any liability
|
|
174
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
175
|
+
of your accepting any such warranty or additional liability.
|
|
176
|
+
|
|
177
|
+
END OF TERMS AND CONDITIONS
|
|
178
|
+
|
|
179
|
+
APPENDIX: How to apply the Apache License to your work.
|
|
180
|
+
|
|
181
|
+
To apply the Apache License to your work, attach the following
|
|
182
|
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
183
|
+
replaced with your own identifying information. (Don't include
|
|
184
|
+
the brackets!) The text should be enclosed in the appropriate
|
|
185
|
+
comment syntax for the file format. We also recommend that a
|
|
186
|
+
file or class name and description of purpose be included on the
|
|
187
|
+
same "printed page" as the copyright notice for easier
|
|
188
|
+
identification within third-party archives.
|
|
189
|
+
|
|
190
|
+
Copyright [yyyy] [name of copyright owner]
|
|
191
|
+
|
|
192
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
193
|
+
you may not use this file except in compliance with the License.
|
|
194
|
+
You may obtain a copy of the License at
|
|
195
|
+
|
|
196
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
197
|
+
|
|
198
|
+
Unless required by applicable law or agreed to in writing, software
|
|
199
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
200
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
201
|
+
See the License for the specific language governing permissions and
|
|
202
|
+
limitations under the License.
|
wavvon_sdk-0.1.0/NOTICE
ADDED
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: wavvon-sdk
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Write programs (bots and apps) that talk to a Wavvon hub.
|
|
5
|
+
Project-URL: Homepage, https://github.com/Wavvon/Wavvon-docs/blob/main/docs/sdk.md
|
|
6
|
+
Project-URL: Repository, https://github.com/Wavvon/Wavvon-sdk-python
|
|
7
|
+
License-Expression: Apache-2.0
|
|
8
|
+
License-File: LICENSE
|
|
9
|
+
License-File: NOTICE
|
|
10
|
+
Classifier: Framework :: AsyncIO
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: Typing :: Typed
|
|
13
|
+
Requires-Python: >=3.11
|
|
14
|
+
Requires-Dist: attrs>=22.2
|
|
15
|
+
Requires-Dist: cryptography>=42
|
|
16
|
+
Requires-Dist: httpx>=0.27
|
|
17
|
+
Requires-Dist: python-dateutil>=2.8
|
|
18
|
+
Requires-Dist: websockets>=13
|
|
19
|
+
Description-Content-Type: text/markdown
|
|
20
|
+
|
|
21
|
+
# wavvon-sdk
|
|
22
|
+
|
|
23
|
+
Write programs that talk to a [Wavvon](https://github.com/Wavvon) hub: bots,
|
|
24
|
+
apps with slash commands and buttons, event consumers, mini-app hosts, and
|
|
25
|
+
receivers for outgoing webhooks.
|
|
26
|
+
|
|
27
|
+
A program on Wavvon is a client like any other: an Ed25519 keypair, the same
|
|
28
|
+
challenge-response login, the same permissions. There is no bot account. What
|
|
29
|
+
makes a program an *app* is a role carrying `apps.register`. The design this
|
|
30
|
+
package implements is
|
|
31
|
+
[sdk.md](https://github.com/Wavvon/Wavvon-docs/blob/main/docs/sdk.md) (tier 1).
|
|
32
|
+
|
|
33
|
+
- Python 3.11 or later, asyncio, fully typed (`py.typed`, checked with `mypy --strict`).
|
|
34
|
+
- Depends on `httpx`, `websockets` and `cryptography`, plus `attrs`,
|
|
35
|
+
`python-dateutil` and `typing-extensions` for the generated REST models.
|
|
36
|
+
- Apache-2.0, so a closed-source program can use it.
|
|
37
|
+
|
|
38
|
+
## Install
|
|
39
|
+
|
|
40
|
+
```sh
|
|
41
|
+
pip install wavvon-sdk
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
The import package is `wavvon`.
|
|
45
|
+
|
|
46
|
+
## Quick start
|
|
47
|
+
|
|
48
|
+
```python
|
|
49
|
+
import asyncio, os
|
|
50
|
+
import uvicorn # any ASGI server; or call the handler from your own framework
|
|
51
|
+
from wavvon import WavvonClient, create_dispatch_handler, to_asgi
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
async def main() -> None:
|
|
55
|
+
async with WavvonClient(
|
|
56
|
+
"https://hub.example",
|
|
57
|
+
seed=os.environ["WAVVON_SEED"], # 32-byte Ed25519 seed, hex. Never sent anywhere.
|
|
58
|
+
invite_code=os.environ.get("WAVVON_INVITE"), # only needed the first time, on an invite-only hub
|
|
59
|
+
) as client:
|
|
60
|
+
info = await client.info()
|
|
61
|
+
app = to_asgi(
|
|
62
|
+
create_dispatch_handler(
|
|
63
|
+
hub_public_key=info["public_key"],
|
|
64
|
+
on_slash_command=lambda inv: {"reply": {"body": f"you said: {inv['args_raw']}"}},
|
|
65
|
+
)
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
await client.set_app_profile({"name": "Echo", "webhook_url": "https://bot.example/hook"})
|
|
69
|
+
await client.set_app_commands([{"name": "echo", "description": "Repeat after me"}])
|
|
70
|
+
|
|
71
|
+
events = client.connect() # after set_app_profile, see below
|
|
72
|
+
events.on("message", lambda e: print(e["message"].get("sender"), e["message"].get("content")))
|
|
73
|
+
events.on("unknown", lambda e: print("new frame type:", e["raw_type"]))
|
|
74
|
+
|
|
75
|
+
await uvicorn.Server(uvicorn.Config(app, port=8080)).serve()
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
asyncio.run(main())
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
A fuller one is [examples/echo_bot.py](examples/echo_bot.py).
|
|
82
|
+
|
|
83
|
+
Every REST route is a generated function under `wavvon.rest.api`; pass
|
|
84
|
+
`client.rest` and unwrap with `ok()`, which raises `HubError` on a refusal:
|
|
85
|
+
|
|
86
|
+
```python
|
|
87
|
+
from wavvon import ok
|
|
88
|
+
from wavvon.rest.api.channels import list_channels
|
|
89
|
+
|
|
90
|
+
channels = ok(await list_channels.asyncio_detailed(client=client.rest))
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## What is in it
|
|
94
|
+
|
|
95
|
+
| Piece | Entry point |
|
|
96
|
+
|---|---|
|
|
97
|
+
| Login (challenge, sign, verify) that renews itself | `WavvonClient`, `authenticate`, `identity_from_seed` |
|
|
98
|
+
| Every REST route, typed from `openapi.yaml` | `wavvon.rest.api.*` with `client=client.rest`; `ok()` |
|
|
99
|
+
| Retry with backoff on 429, 5xx, timeouts | built into `client.rest`; `fetch_with_retry` |
|
|
100
|
+
| Capability checks | `client.has_capability`, `client.require_capability` |
|
|
101
|
+
| Keyset paging to the end of a list | `paginate` (async iterator) |
|
|
102
|
+
| WebSocket events with resume after reconnect | `client.connect()` -> `EventStream` |
|
|
103
|
+
| HTTP polling instead of a socket | `client.poll_events`, `client.ack_events` |
|
|
104
|
+
| App registration | `set_app_profile`, `set_app_commands`, `set_app_subscriptions` |
|
|
105
|
+
| Slash command and button webhooks | `create_dispatch_handler`, `verify_dispatch`, `to_asgi` |
|
|
106
|
+
| Outgoing webhook receiver | `verify_outgoing_webhook` |
|
|
107
|
+
| Mini-app host | `EventStream.announce_app`, `dismiss_app`, `send_mini_app_message` |
|
|
108
|
+
|
|
109
|
+
`create_dispatch_handler` returns a plain `async (method, headers, body) ->
|
|
110
|
+
WebhookResponse` function, so it fits any framework; `to_asgi` wraps it for
|
|
111
|
+
uvicorn, hypercorn, Starlette or FastAPI.
|
|
112
|
+
|
|
113
|
+
## Capabilities each feature needs
|
|
114
|
+
|
|
115
|
+
Hubs say what they support in `GET /info` `capabilities`. The SDK checks those
|
|
116
|
+
strings and never compares version numbers. A feature the hub does not
|
|
117
|
+
advertise raises `UnsupportedByHubError`.
|
|
118
|
+
|
|
119
|
+
| Feature | Capability |
|
|
120
|
+
|---|---|
|
|
121
|
+
| `set_app_profile`, `set_app_commands`, `set_app_subscriptions`, embeds, game cards | `apps.register` |
|
|
122
|
+
| `verify_dispatch` / `verify_outgoing_webhook` (they require `X-Wavvon-Signature-V1`) | `webhooks.signedtimestamp` |
|
|
123
|
+
| Paging `GET /users`, `/conversations/{id}/messages`, `/admin/reports` | `list.cursor` |
|
|
124
|
+
| Paging bans, mutes, invites, pending, conversations, pins, polls | `list.cursor.lists` |
|
|
125
|
+
| `ping` / `pong` over the socket | `ws.ping` |
|
|
126
|
+
|
|
127
|
+
Login, REST, the socket and polling need no capability.
|
|
128
|
+
|
|
129
|
+
## Behaviour you can rely on
|
|
130
|
+
|
|
131
|
+
- **A transient failure is never an answer.** 429, 5xx, timeouts and dropped
|
|
132
|
+
connections are retried with capped exponential backoff and jitter. If the
|
|
133
|
+
budget runs out you get `HubUnavailableError`, not an empty list or a 404.
|
|
134
|
+
Set `RetryOptions(max_attempts=math.inf)` to wait forever.
|
|
135
|
+
- **Sessions renew themselves.** A 401 triggers one fresh login and a retry.
|
|
136
|
+
`client.on_state_change` and `events.on_state_change` show when it is happening.
|
|
137
|
+
- **Unknown is delivered.** A socket frame or dispatch type this version does
|
|
138
|
+
not model reaches you as `{"type": "unknown", "raw_type": ..., "raw": ...}`.
|
|
139
|
+
- **Missed events are replayed.** The event stream remembers the last
|
|
140
|
+
`hub_event` seq and asks the hub to resume from it after every reconnect.
|
|
141
|
+
If the gap is older than the hub keeps (72 hours) you get
|
|
142
|
+
`replay_unavailable`. Register the app profile before `connect()`: the hub
|
|
143
|
+
only pushes and replays events on a socket opened by a registered app.
|
|
144
|
+
- **The seed stays with you.** No call sends a seed or private key anywhere.
|
|
145
|
+
|
|
146
|
+
## Conformance
|
|
147
|
+
|
|
148
|
+
Every signed byte sequence is checked against the shared wire vectors in
|
|
149
|
+
Wavvon-server (`crates/identity/wire-vectors.json`): the auth challenge, the
|
|
150
|
+
Ed25519 dispatch signature, and the outgoing-webhook HKDF + HMAC. CI reads them
|
|
151
|
+
from Wavvon-server at commit `eb11d75657ee8362dd42a7982fc5b13a3dcc4e68`.
|
|
152
|
+
|
|
153
|
+
The REST client was generated from Wavvon-docs at the commit in
|
|
154
|
+
[src/wavvon/rest/SPEC_COMMIT](src/wavvon/rest/SPEC_COMMIT).
|
|
155
|
+
|
|
156
|
+
## Licence
|
|
157
|
+
|
|
158
|
+
Apache-2.0. See [LICENSE](LICENSE) and [NOTICE](NOTICE).
|