From 805453f39f9c24f42ce6209e6a721c188c2c0fdf Mon Sep 17 00:00:00 2001 From: Connor Stevens Date: Wed, 11 Mar 2026 14:27:23 -0400 Subject: [PATCH 1/3] Revert "release: 0.1.0 (#35)" This reverts commit 6bb80cd95f67d864046387c0930b66db197e3d21. --- .github/workflows/ci.yml | 8 +- .release-please-manifest.json | 2 +- .stats.yml | 8 +- CHANGELOG.md | 27 -- api.md | 13 +- pyproject.toml | 2 +- src/whop_sdk/_client.py | 300 ------------------ src/whop_sdk/_version.py | 2 +- src/whop_sdk/resources/access_tokens.py | 4 - src/whop_sdk/resources/account_links.py | 4 - src/whop_sdk/resources/ai_chats.py | 14 - src/whop_sdk/resources/app_builds.py | 4 - src/whop_sdk/resources/apps.py | 4 - src/whop_sdk/resources/authorized_users.py | 244 +------------- src/whop_sdk/resources/chat_channels.py | 4 - .../resources/checkout_configurations.py | 4 - src/whop_sdk/resources/companies.py | 16 +- .../resources/company_token_transactions.py | 4 - src/whop_sdk/resources/course_chapters.py | 4 - .../resources/course_lesson_interactions.py | 4 - src/whop_sdk/resources/course_lessons.py | 4 - src/whop_sdk/resources/course_students.py | 4 - src/whop_sdk/resources/courses.py | 4 - src/whop_sdk/resources/dispute_alerts.py | 4 - src/whop_sdk/resources/disputes.py | 4 - src/whop_sdk/resources/dm_channels.py | 4 - src/whop_sdk/resources/dm_members.py | 4 - src/whop_sdk/resources/entries.py | 4 - src/whop_sdk/resources/experiences.py | 4 - src/whop_sdk/resources/fee_markups.py | 4 - src/whop_sdk/resources/files.py | 4 - src/whop_sdk/resources/forum_posts.py | 14 - src/whop_sdk/resources/forums.py | 14 - src/whop_sdk/resources/invoices.py | 32 +- src/whop_sdk/resources/leads.py | 4 - src/whop_sdk/resources/ledger_accounts.py | 4 - src/whop_sdk/resources/members.py | 4 - src/whop_sdk/resources/memberships.py | 113 +------ src/whop_sdk/resources/messages.py | 4 - src/whop_sdk/resources/notifications.py | 4 - src/whop_sdk/resources/payment_methods.py | 4 - src/whop_sdk/resources/payments.py | 4 - src/whop_sdk/resources/payout_methods.py | 4 - src/whop_sdk/resources/plans.py | 4 - src/whop_sdk/resources/products.py | 4 - src/whop_sdk/resources/promo_codes.py | 4 - src/whop_sdk/resources/reactions.py | 4 - src/whop_sdk/resources/refunds.py | 4 - src/whop_sdk/resources/reviews.py | 4 - src/whop_sdk/resources/setup_intents.py | 4 - src/whop_sdk/resources/shipments.py | 4 - src/whop_sdk/resources/support_channels.py | 4 - src/whop_sdk/resources/topups.py | 4 - src/whop_sdk/resources/transfers.py | 4 - src/whop_sdk/resources/users.py | 4 - src/whop_sdk/resources/verifications.py | 4 - src/whop_sdk/resources/webhooks.py | 4 - src/whop_sdk/resources/withdrawals.py | 4 - src/whop_sdk/types/__init__.py | 7 - src/whop_sdk/types/ai_chat_create_params.py | 6 - .../types/authorized_user_create_params.py | 27 -- .../types/authorized_user_create_response.py | 55 ---- .../types/authorized_user_delete_params.py | 16 - .../types/authorized_user_delete_response.py | 7 - src/whop_sdk/types/company_update_params.py | 42 +-- .../types/forum_post_create_params.py | 6 - .../types/forum_post_list_response.py | 33 +- src/whop_sdk/types/forum_update_params.py | 20 +- src/whop_sdk/types/invoice_create_params.py | 155 +-------- src/whop_sdk/types/invoice_list_params.py | 8 +- .../types/membership_add_free_days_params.py | 16 - src/whop_sdk/types/message_list_response.py | 9 - src/whop_sdk/types/payment_list_response.py | 10 - src/whop_sdk/types/payment_method_types.py | 1 - src/whop_sdk/types/payment_provider.py | 1 - src/whop_sdk/types/receipt_tax_behavior.py | 7 - .../types/refund_created_webhook_event.py | 13 - .../types/refund_retrieve_response.py | 13 - .../types/refund_updated_webhook_event.py | 13 - .../types/shared/authorized_user_roles.py | 2 +- src/whop_sdk/types/shared/company.py | 4 +- src/whop_sdk/types/shared/forum_post.py | 33 +- src/whop_sdk/types/shared/message.py | 9 - src/whop_sdk/types/shared/payment.py | 13 - .../shared_params/authorized_user_roles.py | 2 +- src/whop_sdk/types/social_link_websites.py | 9 - tests/api_resources/test_ai_chats.py | 2 - tests/api_resources/test_authorized_users.py | 206 ------------ tests/api_resources/test_companies.py | 20 -- tests/api_resources/test_forum_posts.py | 2 - tests/api_resources/test_forums.py | 2 - tests/api_resources/test_invoices.py | 76 ++--- tests/api_resources/test_memberships.py | 92 ------ tests/api_resources/test_webhooks.py | 42 +-- 94 files changed, 83 insertions(+), 1877 deletions(-) delete mode 100644 src/whop_sdk/types/authorized_user_create_params.py delete mode 100644 src/whop_sdk/types/authorized_user_create_response.py delete mode 100644 src/whop_sdk/types/authorized_user_delete_params.py delete mode 100644 src/whop_sdk/types/authorized_user_delete_response.py delete mode 100644 src/whop_sdk/types/membership_add_free_days_params.py delete mode 100644 src/whop_sdk/types/receipt_tax_behavior.py delete mode 100644 src/whop_sdk/types/social_link_websites.py diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f93be0ea..eefc48ef 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -61,18 +61,14 @@ jobs: run: rye build - name: Get GitHub OIDC Token - if: |- - github.repository == 'stainless-sdks/whopsdk-python' && - !startsWith(github.ref, 'refs/heads/stl/') + if: github.repository == 'stainless-sdks/whopsdk-python' id: github-oidc uses: actions/github-script@v8 with: script: core.setOutput('github_token', await core.getIDToken()); - name: Upload tarball - if: |- - github.repository == 'stainless-sdks/whopsdk-python' && - !startsWith(github.ref, 'refs/heads/stl/') + if: github.repository == 'stainless-sdks/whopsdk-python' env: URL: https://pkg.stainless.com/s AUTH: ${{ steps.github-oidc.outputs.github_token }} diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 3d2ac0bd..34ac707c 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.1.0" + ".": "0.0.30" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index cbc67135..f91f6ee2 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ -configured_endpoints: 176 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/frostedinc%2Fwhopsdk-f49331e3fb23d1041f941c72c6ee9924dfa47634889ed5209244207c8ea0586e.yml -openapi_spec_hash: 93d6cef1312ed0cbe6b2b6616c535ebf -config_hash: 71004ac2f2a6283ca55db1065c47e5f6 +configured_endpoints: 173 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/frostedinc%2Fwhopsdk-cc6caefebc5d0c5b09a38a2ca3de9b07a8af8017a45a3a8ae4687eea30e5df93.yml +openapi_spec_hash: 384c511adb0c53319ac3ece08843f485 +config_hash: 8ac153ea57fa6460b13cded3f7c9c7a6 diff --git a/CHANGELOG.md b/CHANGELOG.md index eb73b72b..dd2e1246 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,32 +1,5 @@ # Changelog -## 0.1.0 (2026-03-10) - -Full Changelog: [v0.0.30...v0.1.0](https://github.com/whopio/whopsdk-python/compare/v0.0.30...v0.1.0) - -### Features - -* **api:** api update ([99175a1](https://github.com/whopio/whopsdk-python/commit/99175a149a05f6c54b225447a163b958af8ae61c)) -* **api:** api update ([fe17d66](https://github.com/whopio/whopsdk-python/commit/fe17d66f82035b4e58f474bfd136bf78114aaeab)) -* **api:** api update ([2ee7fe7](https://github.com/whopio/whopsdk-python/commit/2ee7fe71e837e7f91ed021b58217abaf89782879)) -* **api:** api update ([260853e](https://github.com/whopio/whopsdk-python/commit/260853e5ec3e85481b25da49ec4252b8b773e81a)) -* **api:** api update ([dcef405](https://github.com/whopio/whopsdk-python/commit/dcef4059c4ce8e9fdffa7d2aba850f325c53fb57)) -* **api:** api update ([abc268f](https://github.com/whopio/whopsdk-python/commit/abc268f2c7a2d59ed01e6fd595aaf3559b831302)) -* **api:** api update ([2f4cd94](https://github.com/whopio/whopsdk-python/commit/2f4cd94cdca591d743dd905f9b325d25fe45acb8)) -* **api:** api update ([ad1d5b7](https://github.com/whopio/whopsdk-python/commit/ad1d5b78546c5efd4214e22c42aa7a64227bc34c)) -* **api:** api update ([c2f142d](https://github.com/whopio/whopsdk-python/commit/c2f142d7aebad6ec2b140d70a8b93aa3205290ec)) -* **api:** api update ([d62a4b7](https://github.com/whopio/whopsdk-python/commit/d62a4b7961c1264d9c4055a026238a72822b8b19)) -* **api:** api update ([c60ab1e](https://github.com/whopio/whopsdk-python/commit/c60ab1e6568cef6910ec61773887c8b9546c52d4)) -* **api:** api update ([020c181](https://github.com/whopio/whopsdk-python/commit/020c181cf53f7811401fe01d4382fe490e6e5398)) -* **api:** manual updates ([b162886](https://github.com/whopio/whopsdk-python/commit/b1628865df13ae4d703571e46e738405652ad150)) - - -### Chores - -* **ci:** skip uploading artifacts on stainless-internal branches ([04a3a6d](https://github.com/whopio/whopsdk-python/commit/04a3a6d8263e34b42b476380846af4d4f31deedd)) -* **docs:** add missing descriptions ([beeb9ef](https://github.com/whopio/whopsdk-python/commit/beeb9efca946b1bc2e565239ac96d3d2d8642b6f)) -* **tests:** update webhook tests ([f740d3c](https://github.com/whopio/whopsdk-python/commit/f740d3c6d32e332ecea2ec902e9903c36055443e)) - ## 0.0.30 (2026-02-26) Full Changelog: [v0.0.29...v0.0.30](https://github.com/whopio/whopsdk-python/compare/v0.0.29...v0.0.30) diff --git a/api.md b/api.md index cb3e0091..679a9af1 100644 --- a/api.md +++ b/api.md @@ -121,7 +121,7 @@ Methods: Types: ```python -from whop_sdk.types import SocialLinkWebsites, CompanyListResponse +from whop_sdk.types import CompanyListResponse ``` Methods: @@ -268,7 +268,6 @@ Methods: - client.memberships.retrieve(id) -> Membership - client.memberships.update(id, \*\*params) -> Membership - client.memberships.list(\*\*params) -> SyncCursorPage[MembershipListResponse] -- client.memberships.add_free_days(id, \*\*params) -> Membership - client.memberships.cancel(id, \*\*params) -> Membership - client.memberships.pause(id, \*\*params) -> Membership - client.memberships.resume(id) -> Membership @@ -279,20 +278,13 @@ Methods: Types: ```python -from whop_sdk.types import ( - AuthorizedUserCreateResponse, - AuthorizedUserRetrieveResponse, - AuthorizedUserListResponse, - AuthorizedUserDeleteResponse, -) +from whop_sdk.types import AuthorizedUserRetrieveResponse, AuthorizedUserListResponse ``` Methods: -- client.authorized_users.create(\*\*params) -> AuthorizedUserCreateResponse - client.authorized_users.retrieve(id) -> AuthorizedUserRetrieveResponse - client.authorized_users.list(\*\*params) -> SyncCursorPage[AuthorizedUserListResponse] -- client.authorized_users.delete(id, \*\*params) -> AuthorizedUserDeleteResponse # AppBuilds @@ -390,7 +382,6 @@ from whop_sdk.types import ( BillingReasons, CardBrands, PaymentMethodTypes, - ReceiptTaxBehavior, PaymentListResponse, PaymentListFeesResponse, ) diff --git a/pyproject.toml b/pyproject.toml index 9279b720..80fe5263 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "whop-sdk" -version = "0.1.0" +version = "0.0.30" description = "The official Python library for the Whop API" dynamic = ["readme"] license = "Apache-2.0" diff --git a/src/whop_sdk/_client.py b/src/whop_sdk/_client.py index ae5d5c9f..65a4f492 100644 --- a/src/whop_sdk/_client.py +++ b/src/whop_sdk/_client.py @@ -215,350 +215,300 @@ def __init__( @cached_property def apps(self) -> AppsResource: - """Apps""" from .resources.apps import AppsResource return AppsResource(self) @cached_property def invoices(self) -> InvoicesResource: - """Invoices""" from .resources.invoices import InvoicesResource return InvoicesResource(self) @cached_property def course_lesson_interactions(self) -> CourseLessonInteractionsResource: - """Course lesson interactions""" from .resources.course_lesson_interactions import CourseLessonInteractionsResource return CourseLessonInteractionsResource(self) @cached_property def products(self) -> ProductsResource: - """Products""" from .resources.products import ProductsResource return ProductsResource(self) @cached_property def companies(self) -> CompaniesResource: - """Companies""" from .resources.companies import CompaniesResource return CompaniesResource(self) @cached_property def webhooks(self) -> WebhooksResource: - """Webhooks""" from .resources.webhooks import WebhooksResource return WebhooksResource(self) @cached_property def plans(self) -> PlansResource: - """Plans""" from .resources.plans import PlansResource return PlansResource(self) @cached_property def entries(self) -> EntriesResource: - """Entries""" from .resources.entries import EntriesResource return EntriesResource(self) @cached_property def forum_posts(self) -> ForumPostsResource: - """Forum posts""" from .resources.forum_posts import ForumPostsResource return ForumPostsResource(self) @cached_property def transfers(self) -> TransfersResource: - """Transfers""" from .resources.transfers import TransfersResource return TransfersResource(self) @cached_property def ledger_accounts(self) -> LedgerAccountsResource: - """Ledger accounts""" from .resources.ledger_accounts import LedgerAccountsResource return LedgerAccountsResource(self) @cached_property def memberships(self) -> MembershipsResource: - """Memberships""" from .resources.memberships import MembershipsResource return MembershipsResource(self) @cached_property def authorized_users(self) -> AuthorizedUsersResource: - """Authorized users""" from .resources.authorized_users import AuthorizedUsersResource return AuthorizedUsersResource(self) @cached_property def app_builds(self) -> AppBuildsResource: - """App builds""" from .resources.app_builds import AppBuildsResource return AppBuildsResource(self) @cached_property def shipments(self) -> ShipmentsResource: - """Shipments""" from .resources.shipments import ShipmentsResource return ShipmentsResource(self) @cached_property def checkout_configurations(self) -> CheckoutConfigurationsResource: - """Checkout configurations""" from .resources.checkout_configurations import CheckoutConfigurationsResource return CheckoutConfigurationsResource(self) @cached_property def messages(self) -> MessagesResource: - """Messages""" from .resources.messages import MessagesResource return MessagesResource(self) @cached_property def chat_channels(self) -> ChatChannelsResource: - """Chat channels""" from .resources.chat_channels import ChatChannelsResource return ChatChannelsResource(self) @cached_property def users(self) -> UsersResource: - """Users""" from .resources.users import UsersResource return UsersResource(self) @cached_property def payments(self) -> PaymentsResource: - """Payments""" from .resources.payments import PaymentsResource return PaymentsResource(self) @cached_property def support_channels(self) -> SupportChannelsResource: - """Support channels""" from .resources.support_channels import SupportChannelsResource return SupportChannelsResource(self) @cached_property def experiences(self) -> ExperiencesResource: - """Experiences""" from .resources.experiences import ExperiencesResource return ExperiencesResource(self) @cached_property def reactions(self) -> ReactionsResource: - """Reactions""" from .resources.reactions import ReactionsResource return ReactionsResource(self) @cached_property def members(self) -> MembersResource: - """Members""" from .resources.members import MembersResource return MembersResource(self) @cached_property def forums(self) -> ForumsResource: - """Forums""" from .resources.forums import ForumsResource return ForumsResource(self) @cached_property def promo_codes(self) -> PromoCodesResource: - """Promo codes""" from .resources.promo_codes import PromoCodesResource return PromoCodesResource(self) @cached_property def courses(self) -> CoursesResource: - """Courses""" from .resources.courses import CoursesResource return CoursesResource(self) @cached_property def course_chapters(self) -> CourseChaptersResource: - """Course chapters""" from .resources.course_chapters import CourseChaptersResource return CourseChaptersResource(self) @cached_property def course_lessons(self) -> CourseLessonsResource: - """Course lessons""" from .resources.course_lessons import CourseLessonsResource return CourseLessonsResource(self) @cached_property def reviews(self) -> ReviewsResource: - """Reviews""" from .resources.reviews import ReviewsResource return ReviewsResource(self) @cached_property def course_students(self) -> CourseStudentsResource: - """Course students""" from .resources.course_students import CourseStudentsResource return CourseStudentsResource(self) @cached_property def access_tokens(self) -> AccessTokensResource: - """Access tokens""" from .resources.access_tokens import AccessTokensResource return AccessTokensResource(self) @cached_property def notifications(self) -> NotificationsResource: - """Notifications""" from .resources.notifications import NotificationsResource return NotificationsResource(self) @cached_property def disputes(self) -> DisputesResource: - """Disputes""" from .resources.disputes import DisputesResource return DisputesResource(self) @cached_property def refunds(self) -> RefundsResource: - """Refunds""" from .resources.refunds import RefundsResource return RefundsResource(self) @cached_property def withdrawals(self) -> WithdrawalsResource: - """Withdrawals""" from .resources.withdrawals import WithdrawalsResource return WithdrawalsResource(self) @cached_property def account_links(self) -> AccountLinksResource: - """Account links""" from .resources.account_links import AccountLinksResource return AccountLinksResource(self) @cached_property def setup_intents(self) -> SetupIntentsResource: - """Setup intents""" from .resources.setup_intents import SetupIntentsResource return SetupIntentsResource(self) @cached_property def payment_methods(self) -> PaymentMethodsResource: - """Payment methods""" from .resources.payment_methods import PaymentMethodsResource return PaymentMethodsResource(self) @cached_property def fee_markups(self) -> FeeMarkupsResource: - """Fee markups""" from .resources.fee_markups import FeeMarkupsResource return FeeMarkupsResource(self) @cached_property def payout_methods(self) -> PayoutMethodsResource: - """Payout methods""" from .resources.payout_methods import PayoutMethodsResource return PayoutMethodsResource(self) @cached_property def verifications(self) -> VerificationsResource: - """Verifications""" from .resources.verifications import VerificationsResource return VerificationsResource(self) @cached_property def leads(self) -> LeadsResource: - """Leads""" from .resources.leads import LeadsResource return LeadsResource(self) @cached_property def topups(self) -> TopupsResource: - """Topups""" from .resources.topups import TopupsResource return TopupsResource(self) @cached_property def files(self) -> FilesResource: - """Files""" from .resources.files import FilesResource return FilesResource(self) @cached_property def company_token_transactions(self) -> CompanyTokenTransactionsResource: - """Company token transactions""" from .resources.company_token_transactions import CompanyTokenTransactionsResource return CompanyTokenTransactionsResource(self) @cached_property def dm_members(self) -> DmMembersResource: - """Dm members""" from .resources.dm_members import DmMembersResource return DmMembersResource(self) @cached_property def ai_chats(self) -> AIChatsResource: - """Ai chats""" from .resources.ai_chats import AIChatsResource return AIChatsResource(self) @cached_property def dm_channels(self) -> DmChannelsResource: - """Dm channels""" from .resources.dm_channels import DmChannelsResource return DmChannelsResource(self) @cached_property def dispute_alerts(self) -> DisputeAlertsResource: - """Dispute alerts""" from .resources.dispute_alerts import DisputeAlertsResource return DisputeAlertsResource(self) @@ -753,350 +703,300 @@ def __init__( @cached_property def apps(self) -> AsyncAppsResource: - """Apps""" from .resources.apps import AsyncAppsResource return AsyncAppsResource(self) @cached_property def invoices(self) -> AsyncInvoicesResource: - """Invoices""" from .resources.invoices import AsyncInvoicesResource return AsyncInvoicesResource(self) @cached_property def course_lesson_interactions(self) -> AsyncCourseLessonInteractionsResource: - """Course lesson interactions""" from .resources.course_lesson_interactions import AsyncCourseLessonInteractionsResource return AsyncCourseLessonInteractionsResource(self) @cached_property def products(self) -> AsyncProductsResource: - """Products""" from .resources.products import AsyncProductsResource return AsyncProductsResource(self) @cached_property def companies(self) -> AsyncCompaniesResource: - """Companies""" from .resources.companies import AsyncCompaniesResource return AsyncCompaniesResource(self) @cached_property def webhooks(self) -> AsyncWebhooksResource: - """Webhooks""" from .resources.webhooks import AsyncWebhooksResource return AsyncWebhooksResource(self) @cached_property def plans(self) -> AsyncPlansResource: - """Plans""" from .resources.plans import AsyncPlansResource return AsyncPlansResource(self) @cached_property def entries(self) -> AsyncEntriesResource: - """Entries""" from .resources.entries import AsyncEntriesResource return AsyncEntriesResource(self) @cached_property def forum_posts(self) -> AsyncForumPostsResource: - """Forum posts""" from .resources.forum_posts import AsyncForumPostsResource return AsyncForumPostsResource(self) @cached_property def transfers(self) -> AsyncTransfersResource: - """Transfers""" from .resources.transfers import AsyncTransfersResource return AsyncTransfersResource(self) @cached_property def ledger_accounts(self) -> AsyncLedgerAccountsResource: - """Ledger accounts""" from .resources.ledger_accounts import AsyncLedgerAccountsResource return AsyncLedgerAccountsResource(self) @cached_property def memberships(self) -> AsyncMembershipsResource: - """Memberships""" from .resources.memberships import AsyncMembershipsResource return AsyncMembershipsResource(self) @cached_property def authorized_users(self) -> AsyncAuthorizedUsersResource: - """Authorized users""" from .resources.authorized_users import AsyncAuthorizedUsersResource return AsyncAuthorizedUsersResource(self) @cached_property def app_builds(self) -> AsyncAppBuildsResource: - """App builds""" from .resources.app_builds import AsyncAppBuildsResource return AsyncAppBuildsResource(self) @cached_property def shipments(self) -> AsyncShipmentsResource: - """Shipments""" from .resources.shipments import AsyncShipmentsResource return AsyncShipmentsResource(self) @cached_property def checkout_configurations(self) -> AsyncCheckoutConfigurationsResource: - """Checkout configurations""" from .resources.checkout_configurations import AsyncCheckoutConfigurationsResource return AsyncCheckoutConfigurationsResource(self) @cached_property def messages(self) -> AsyncMessagesResource: - """Messages""" from .resources.messages import AsyncMessagesResource return AsyncMessagesResource(self) @cached_property def chat_channels(self) -> AsyncChatChannelsResource: - """Chat channels""" from .resources.chat_channels import AsyncChatChannelsResource return AsyncChatChannelsResource(self) @cached_property def users(self) -> AsyncUsersResource: - """Users""" from .resources.users import AsyncUsersResource return AsyncUsersResource(self) @cached_property def payments(self) -> AsyncPaymentsResource: - """Payments""" from .resources.payments import AsyncPaymentsResource return AsyncPaymentsResource(self) @cached_property def support_channels(self) -> AsyncSupportChannelsResource: - """Support channels""" from .resources.support_channels import AsyncSupportChannelsResource return AsyncSupportChannelsResource(self) @cached_property def experiences(self) -> AsyncExperiencesResource: - """Experiences""" from .resources.experiences import AsyncExperiencesResource return AsyncExperiencesResource(self) @cached_property def reactions(self) -> AsyncReactionsResource: - """Reactions""" from .resources.reactions import AsyncReactionsResource return AsyncReactionsResource(self) @cached_property def members(self) -> AsyncMembersResource: - """Members""" from .resources.members import AsyncMembersResource return AsyncMembersResource(self) @cached_property def forums(self) -> AsyncForumsResource: - """Forums""" from .resources.forums import AsyncForumsResource return AsyncForumsResource(self) @cached_property def promo_codes(self) -> AsyncPromoCodesResource: - """Promo codes""" from .resources.promo_codes import AsyncPromoCodesResource return AsyncPromoCodesResource(self) @cached_property def courses(self) -> AsyncCoursesResource: - """Courses""" from .resources.courses import AsyncCoursesResource return AsyncCoursesResource(self) @cached_property def course_chapters(self) -> AsyncCourseChaptersResource: - """Course chapters""" from .resources.course_chapters import AsyncCourseChaptersResource return AsyncCourseChaptersResource(self) @cached_property def course_lessons(self) -> AsyncCourseLessonsResource: - """Course lessons""" from .resources.course_lessons import AsyncCourseLessonsResource return AsyncCourseLessonsResource(self) @cached_property def reviews(self) -> AsyncReviewsResource: - """Reviews""" from .resources.reviews import AsyncReviewsResource return AsyncReviewsResource(self) @cached_property def course_students(self) -> AsyncCourseStudentsResource: - """Course students""" from .resources.course_students import AsyncCourseStudentsResource return AsyncCourseStudentsResource(self) @cached_property def access_tokens(self) -> AsyncAccessTokensResource: - """Access tokens""" from .resources.access_tokens import AsyncAccessTokensResource return AsyncAccessTokensResource(self) @cached_property def notifications(self) -> AsyncNotificationsResource: - """Notifications""" from .resources.notifications import AsyncNotificationsResource return AsyncNotificationsResource(self) @cached_property def disputes(self) -> AsyncDisputesResource: - """Disputes""" from .resources.disputes import AsyncDisputesResource return AsyncDisputesResource(self) @cached_property def refunds(self) -> AsyncRefundsResource: - """Refunds""" from .resources.refunds import AsyncRefundsResource return AsyncRefundsResource(self) @cached_property def withdrawals(self) -> AsyncWithdrawalsResource: - """Withdrawals""" from .resources.withdrawals import AsyncWithdrawalsResource return AsyncWithdrawalsResource(self) @cached_property def account_links(self) -> AsyncAccountLinksResource: - """Account links""" from .resources.account_links import AsyncAccountLinksResource return AsyncAccountLinksResource(self) @cached_property def setup_intents(self) -> AsyncSetupIntentsResource: - """Setup intents""" from .resources.setup_intents import AsyncSetupIntentsResource return AsyncSetupIntentsResource(self) @cached_property def payment_methods(self) -> AsyncPaymentMethodsResource: - """Payment methods""" from .resources.payment_methods import AsyncPaymentMethodsResource return AsyncPaymentMethodsResource(self) @cached_property def fee_markups(self) -> AsyncFeeMarkupsResource: - """Fee markups""" from .resources.fee_markups import AsyncFeeMarkupsResource return AsyncFeeMarkupsResource(self) @cached_property def payout_methods(self) -> AsyncPayoutMethodsResource: - """Payout methods""" from .resources.payout_methods import AsyncPayoutMethodsResource return AsyncPayoutMethodsResource(self) @cached_property def verifications(self) -> AsyncVerificationsResource: - """Verifications""" from .resources.verifications import AsyncVerificationsResource return AsyncVerificationsResource(self) @cached_property def leads(self) -> AsyncLeadsResource: - """Leads""" from .resources.leads import AsyncLeadsResource return AsyncLeadsResource(self) @cached_property def topups(self) -> AsyncTopupsResource: - """Topups""" from .resources.topups import AsyncTopupsResource return AsyncTopupsResource(self) @cached_property def files(self) -> AsyncFilesResource: - """Files""" from .resources.files import AsyncFilesResource return AsyncFilesResource(self) @cached_property def company_token_transactions(self) -> AsyncCompanyTokenTransactionsResource: - """Company token transactions""" from .resources.company_token_transactions import AsyncCompanyTokenTransactionsResource return AsyncCompanyTokenTransactionsResource(self) @cached_property def dm_members(self) -> AsyncDmMembersResource: - """Dm members""" from .resources.dm_members import AsyncDmMembersResource return AsyncDmMembersResource(self) @cached_property def ai_chats(self) -> AsyncAIChatsResource: - """Ai chats""" from .resources.ai_chats import AsyncAIChatsResource return AsyncAIChatsResource(self) @cached_property def dm_channels(self) -> AsyncDmChannelsResource: - """Dm channels""" from .resources.dm_channels import AsyncDmChannelsResource return AsyncDmChannelsResource(self) @cached_property def dispute_alerts(self) -> AsyncDisputeAlertsResource: - """Dispute alerts""" from .resources.dispute_alerts import AsyncDisputeAlertsResource return AsyncDisputeAlertsResource(self) @@ -1227,350 +1127,300 @@ def __init__(self, client: Whop) -> None: @cached_property def apps(self) -> apps.AppsResourceWithRawResponse: - """Apps""" from .resources.apps import AppsResourceWithRawResponse return AppsResourceWithRawResponse(self._client.apps) @cached_property def invoices(self) -> invoices.InvoicesResourceWithRawResponse: - """Invoices""" from .resources.invoices import InvoicesResourceWithRawResponse return InvoicesResourceWithRawResponse(self._client.invoices) @cached_property def course_lesson_interactions(self) -> course_lesson_interactions.CourseLessonInteractionsResourceWithRawResponse: - """Course lesson interactions""" from .resources.course_lesson_interactions import CourseLessonInteractionsResourceWithRawResponse return CourseLessonInteractionsResourceWithRawResponse(self._client.course_lesson_interactions) @cached_property def products(self) -> products.ProductsResourceWithRawResponse: - """Products""" from .resources.products import ProductsResourceWithRawResponse return ProductsResourceWithRawResponse(self._client.products) @cached_property def companies(self) -> companies.CompaniesResourceWithRawResponse: - """Companies""" from .resources.companies import CompaniesResourceWithRawResponse return CompaniesResourceWithRawResponse(self._client.companies) @cached_property def webhooks(self) -> webhooks.WebhooksResourceWithRawResponse: - """Webhooks""" from .resources.webhooks import WebhooksResourceWithRawResponse return WebhooksResourceWithRawResponse(self._client.webhooks) @cached_property def plans(self) -> plans.PlansResourceWithRawResponse: - """Plans""" from .resources.plans import PlansResourceWithRawResponse return PlansResourceWithRawResponse(self._client.plans) @cached_property def entries(self) -> entries.EntriesResourceWithRawResponse: - """Entries""" from .resources.entries import EntriesResourceWithRawResponse return EntriesResourceWithRawResponse(self._client.entries) @cached_property def forum_posts(self) -> forum_posts.ForumPostsResourceWithRawResponse: - """Forum posts""" from .resources.forum_posts import ForumPostsResourceWithRawResponse return ForumPostsResourceWithRawResponse(self._client.forum_posts) @cached_property def transfers(self) -> transfers.TransfersResourceWithRawResponse: - """Transfers""" from .resources.transfers import TransfersResourceWithRawResponse return TransfersResourceWithRawResponse(self._client.transfers) @cached_property def ledger_accounts(self) -> ledger_accounts.LedgerAccountsResourceWithRawResponse: - """Ledger accounts""" from .resources.ledger_accounts import LedgerAccountsResourceWithRawResponse return LedgerAccountsResourceWithRawResponse(self._client.ledger_accounts) @cached_property def memberships(self) -> memberships.MembershipsResourceWithRawResponse: - """Memberships""" from .resources.memberships import MembershipsResourceWithRawResponse return MembershipsResourceWithRawResponse(self._client.memberships) @cached_property def authorized_users(self) -> authorized_users.AuthorizedUsersResourceWithRawResponse: - """Authorized users""" from .resources.authorized_users import AuthorizedUsersResourceWithRawResponse return AuthorizedUsersResourceWithRawResponse(self._client.authorized_users) @cached_property def app_builds(self) -> app_builds.AppBuildsResourceWithRawResponse: - """App builds""" from .resources.app_builds import AppBuildsResourceWithRawResponse return AppBuildsResourceWithRawResponse(self._client.app_builds) @cached_property def shipments(self) -> shipments.ShipmentsResourceWithRawResponse: - """Shipments""" from .resources.shipments import ShipmentsResourceWithRawResponse return ShipmentsResourceWithRawResponse(self._client.shipments) @cached_property def checkout_configurations(self) -> checkout_configurations.CheckoutConfigurationsResourceWithRawResponse: - """Checkout configurations""" from .resources.checkout_configurations import CheckoutConfigurationsResourceWithRawResponse return CheckoutConfigurationsResourceWithRawResponse(self._client.checkout_configurations) @cached_property def messages(self) -> messages.MessagesResourceWithRawResponse: - """Messages""" from .resources.messages import MessagesResourceWithRawResponse return MessagesResourceWithRawResponse(self._client.messages) @cached_property def chat_channels(self) -> chat_channels.ChatChannelsResourceWithRawResponse: - """Chat channels""" from .resources.chat_channels import ChatChannelsResourceWithRawResponse return ChatChannelsResourceWithRawResponse(self._client.chat_channels) @cached_property def users(self) -> users.UsersResourceWithRawResponse: - """Users""" from .resources.users import UsersResourceWithRawResponse return UsersResourceWithRawResponse(self._client.users) @cached_property def payments(self) -> payments.PaymentsResourceWithRawResponse: - """Payments""" from .resources.payments import PaymentsResourceWithRawResponse return PaymentsResourceWithRawResponse(self._client.payments) @cached_property def support_channels(self) -> support_channels.SupportChannelsResourceWithRawResponse: - """Support channels""" from .resources.support_channels import SupportChannelsResourceWithRawResponse return SupportChannelsResourceWithRawResponse(self._client.support_channels) @cached_property def experiences(self) -> experiences.ExperiencesResourceWithRawResponse: - """Experiences""" from .resources.experiences import ExperiencesResourceWithRawResponse return ExperiencesResourceWithRawResponse(self._client.experiences) @cached_property def reactions(self) -> reactions.ReactionsResourceWithRawResponse: - """Reactions""" from .resources.reactions import ReactionsResourceWithRawResponse return ReactionsResourceWithRawResponse(self._client.reactions) @cached_property def members(self) -> members.MembersResourceWithRawResponse: - """Members""" from .resources.members import MembersResourceWithRawResponse return MembersResourceWithRawResponse(self._client.members) @cached_property def forums(self) -> forums.ForumsResourceWithRawResponse: - """Forums""" from .resources.forums import ForumsResourceWithRawResponse return ForumsResourceWithRawResponse(self._client.forums) @cached_property def promo_codes(self) -> promo_codes.PromoCodesResourceWithRawResponse: - """Promo codes""" from .resources.promo_codes import PromoCodesResourceWithRawResponse return PromoCodesResourceWithRawResponse(self._client.promo_codes) @cached_property def courses(self) -> courses.CoursesResourceWithRawResponse: - """Courses""" from .resources.courses import CoursesResourceWithRawResponse return CoursesResourceWithRawResponse(self._client.courses) @cached_property def course_chapters(self) -> course_chapters.CourseChaptersResourceWithRawResponse: - """Course chapters""" from .resources.course_chapters import CourseChaptersResourceWithRawResponse return CourseChaptersResourceWithRawResponse(self._client.course_chapters) @cached_property def course_lessons(self) -> course_lessons.CourseLessonsResourceWithRawResponse: - """Course lessons""" from .resources.course_lessons import CourseLessonsResourceWithRawResponse return CourseLessonsResourceWithRawResponse(self._client.course_lessons) @cached_property def reviews(self) -> reviews.ReviewsResourceWithRawResponse: - """Reviews""" from .resources.reviews import ReviewsResourceWithRawResponse return ReviewsResourceWithRawResponse(self._client.reviews) @cached_property def course_students(self) -> course_students.CourseStudentsResourceWithRawResponse: - """Course students""" from .resources.course_students import CourseStudentsResourceWithRawResponse return CourseStudentsResourceWithRawResponse(self._client.course_students) @cached_property def access_tokens(self) -> access_tokens.AccessTokensResourceWithRawResponse: - """Access tokens""" from .resources.access_tokens import AccessTokensResourceWithRawResponse return AccessTokensResourceWithRawResponse(self._client.access_tokens) @cached_property def notifications(self) -> notifications.NotificationsResourceWithRawResponse: - """Notifications""" from .resources.notifications import NotificationsResourceWithRawResponse return NotificationsResourceWithRawResponse(self._client.notifications) @cached_property def disputes(self) -> disputes.DisputesResourceWithRawResponse: - """Disputes""" from .resources.disputes import DisputesResourceWithRawResponse return DisputesResourceWithRawResponse(self._client.disputes) @cached_property def refunds(self) -> refunds.RefundsResourceWithRawResponse: - """Refunds""" from .resources.refunds import RefundsResourceWithRawResponse return RefundsResourceWithRawResponse(self._client.refunds) @cached_property def withdrawals(self) -> withdrawals.WithdrawalsResourceWithRawResponse: - """Withdrawals""" from .resources.withdrawals import WithdrawalsResourceWithRawResponse return WithdrawalsResourceWithRawResponse(self._client.withdrawals) @cached_property def account_links(self) -> account_links.AccountLinksResourceWithRawResponse: - """Account links""" from .resources.account_links import AccountLinksResourceWithRawResponse return AccountLinksResourceWithRawResponse(self._client.account_links) @cached_property def setup_intents(self) -> setup_intents.SetupIntentsResourceWithRawResponse: - """Setup intents""" from .resources.setup_intents import SetupIntentsResourceWithRawResponse return SetupIntentsResourceWithRawResponse(self._client.setup_intents) @cached_property def payment_methods(self) -> payment_methods.PaymentMethodsResourceWithRawResponse: - """Payment methods""" from .resources.payment_methods import PaymentMethodsResourceWithRawResponse return PaymentMethodsResourceWithRawResponse(self._client.payment_methods) @cached_property def fee_markups(self) -> fee_markups.FeeMarkupsResourceWithRawResponse: - """Fee markups""" from .resources.fee_markups import FeeMarkupsResourceWithRawResponse return FeeMarkupsResourceWithRawResponse(self._client.fee_markups) @cached_property def payout_methods(self) -> payout_methods.PayoutMethodsResourceWithRawResponse: - """Payout methods""" from .resources.payout_methods import PayoutMethodsResourceWithRawResponse return PayoutMethodsResourceWithRawResponse(self._client.payout_methods) @cached_property def verifications(self) -> verifications.VerificationsResourceWithRawResponse: - """Verifications""" from .resources.verifications import VerificationsResourceWithRawResponse return VerificationsResourceWithRawResponse(self._client.verifications) @cached_property def leads(self) -> leads.LeadsResourceWithRawResponse: - """Leads""" from .resources.leads import LeadsResourceWithRawResponse return LeadsResourceWithRawResponse(self._client.leads) @cached_property def topups(self) -> topups.TopupsResourceWithRawResponse: - """Topups""" from .resources.topups import TopupsResourceWithRawResponse return TopupsResourceWithRawResponse(self._client.topups) @cached_property def files(self) -> files.FilesResourceWithRawResponse: - """Files""" from .resources.files import FilesResourceWithRawResponse return FilesResourceWithRawResponse(self._client.files) @cached_property def company_token_transactions(self) -> company_token_transactions.CompanyTokenTransactionsResourceWithRawResponse: - """Company token transactions""" from .resources.company_token_transactions import CompanyTokenTransactionsResourceWithRawResponse return CompanyTokenTransactionsResourceWithRawResponse(self._client.company_token_transactions) @cached_property def dm_members(self) -> dm_members.DmMembersResourceWithRawResponse: - """Dm members""" from .resources.dm_members import DmMembersResourceWithRawResponse return DmMembersResourceWithRawResponse(self._client.dm_members) @cached_property def ai_chats(self) -> ai_chats.AIChatsResourceWithRawResponse: - """Ai chats""" from .resources.ai_chats import AIChatsResourceWithRawResponse return AIChatsResourceWithRawResponse(self._client.ai_chats) @cached_property def dm_channels(self) -> dm_channels.DmChannelsResourceWithRawResponse: - """Dm channels""" from .resources.dm_channels import DmChannelsResourceWithRawResponse return DmChannelsResourceWithRawResponse(self._client.dm_channels) @cached_property def dispute_alerts(self) -> dispute_alerts.DisputeAlertsResourceWithRawResponse: - """Dispute alerts""" from .resources.dispute_alerts import DisputeAlertsResourceWithRawResponse return DisputeAlertsResourceWithRawResponse(self._client.dispute_alerts) @@ -1584,14 +1434,12 @@ def __init__(self, client: AsyncWhop) -> None: @cached_property def apps(self) -> apps.AsyncAppsResourceWithRawResponse: - """Apps""" from .resources.apps import AsyncAppsResourceWithRawResponse return AsyncAppsResourceWithRawResponse(self._client.apps) @cached_property def invoices(self) -> invoices.AsyncInvoicesResourceWithRawResponse: - """Invoices""" from .resources.invoices import AsyncInvoicesResourceWithRawResponse return AsyncInvoicesResourceWithRawResponse(self._client.invoices) @@ -1600,301 +1448,258 @@ def invoices(self) -> invoices.AsyncInvoicesResourceWithRawResponse: def course_lesson_interactions( self, ) -> course_lesson_interactions.AsyncCourseLessonInteractionsResourceWithRawResponse: - """Course lesson interactions""" from .resources.course_lesson_interactions import AsyncCourseLessonInteractionsResourceWithRawResponse return AsyncCourseLessonInteractionsResourceWithRawResponse(self._client.course_lesson_interactions) @cached_property def products(self) -> products.AsyncProductsResourceWithRawResponse: - """Products""" from .resources.products import AsyncProductsResourceWithRawResponse return AsyncProductsResourceWithRawResponse(self._client.products) @cached_property def companies(self) -> companies.AsyncCompaniesResourceWithRawResponse: - """Companies""" from .resources.companies import AsyncCompaniesResourceWithRawResponse return AsyncCompaniesResourceWithRawResponse(self._client.companies) @cached_property def webhooks(self) -> webhooks.AsyncWebhooksResourceWithRawResponse: - """Webhooks""" from .resources.webhooks import AsyncWebhooksResourceWithRawResponse return AsyncWebhooksResourceWithRawResponse(self._client.webhooks) @cached_property def plans(self) -> plans.AsyncPlansResourceWithRawResponse: - """Plans""" from .resources.plans import AsyncPlansResourceWithRawResponse return AsyncPlansResourceWithRawResponse(self._client.plans) @cached_property def entries(self) -> entries.AsyncEntriesResourceWithRawResponse: - """Entries""" from .resources.entries import AsyncEntriesResourceWithRawResponse return AsyncEntriesResourceWithRawResponse(self._client.entries) @cached_property def forum_posts(self) -> forum_posts.AsyncForumPostsResourceWithRawResponse: - """Forum posts""" from .resources.forum_posts import AsyncForumPostsResourceWithRawResponse return AsyncForumPostsResourceWithRawResponse(self._client.forum_posts) @cached_property def transfers(self) -> transfers.AsyncTransfersResourceWithRawResponse: - """Transfers""" from .resources.transfers import AsyncTransfersResourceWithRawResponse return AsyncTransfersResourceWithRawResponse(self._client.transfers) @cached_property def ledger_accounts(self) -> ledger_accounts.AsyncLedgerAccountsResourceWithRawResponse: - """Ledger accounts""" from .resources.ledger_accounts import AsyncLedgerAccountsResourceWithRawResponse return AsyncLedgerAccountsResourceWithRawResponse(self._client.ledger_accounts) @cached_property def memberships(self) -> memberships.AsyncMembershipsResourceWithRawResponse: - """Memberships""" from .resources.memberships import AsyncMembershipsResourceWithRawResponse return AsyncMembershipsResourceWithRawResponse(self._client.memberships) @cached_property def authorized_users(self) -> authorized_users.AsyncAuthorizedUsersResourceWithRawResponse: - """Authorized users""" from .resources.authorized_users import AsyncAuthorizedUsersResourceWithRawResponse return AsyncAuthorizedUsersResourceWithRawResponse(self._client.authorized_users) @cached_property def app_builds(self) -> app_builds.AsyncAppBuildsResourceWithRawResponse: - """App builds""" from .resources.app_builds import AsyncAppBuildsResourceWithRawResponse return AsyncAppBuildsResourceWithRawResponse(self._client.app_builds) @cached_property def shipments(self) -> shipments.AsyncShipmentsResourceWithRawResponse: - """Shipments""" from .resources.shipments import AsyncShipmentsResourceWithRawResponse return AsyncShipmentsResourceWithRawResponse(self._client.shipments) @cached_property def checkout_configurations(self) -> checkout_configurations.AsyncCheckoutConfigurationsResourceWithRawResponse: - """Checkout configurations""" from .resources.checkout_configurations import AsyncCheckoutConfigurationsResourceWithRawResponse return AsyncCheckoutConfigurationsResourceWithRawResponse(self._client.checkout_configurations) @cached_property def messages(self) -> messages.AsyncMessagesResourceWithRawResponse: - """Messages""" from .resources.messages import AsyncMessagesResourceWithRawResponse return AsyncMessagesResourceWithRawResponse(self._client.messages) @cached_property def chat_channels(self) -> chat_channels.AsyncChatChannelsResourceWithRawResponse: - """Chat channels""" from .resources.chat_channels import AsyncChatChannelsResourceWithRawResponse return AsyncChatChannelsResourceWithRawResponse(self._client.chat_channels) @cached_property def users(self) -> users.AsyncUsersResourceWithRawResponse: - """Users""" from .resources.users import AsyncUsersResourceWithRawResponse return AsyncUsersResourceWithRawResponse(self._client.users) @cached_property def payments(self) -> payments.AsyncPaymentsResourceWithRawResponse: - """Payments""" from .resources.payments import AsyncPaymentsResourceWithRawResponse return AsyncPaymentsResourceWithRawResponse(self._client.payments) @cached_property def support_channels(self) -> support_channels.AsyncSupportChannelsResourceWithRawResponse: - """Support channels""" from .resources.support_channels import AsyncSupportChannelsResourceWithRawResponse return AsyncSupportChannelsResourceWithRawResponse(self._client.support_channels) @cached_property def experiences(self) -> experiences.AsyncExperiencesResourceWithRawResponse: - """Experiences""" from .resources.experiences import AsyncExperiencesResourceWithRawResponse return AsyncExperiencesResourceWithRawResponse(self._client.experiences) @cached_property def reactions(self) -> reactions.AsyncReactionsResourceWithRawResponse: - """Reactions""" from .resources.reactions import AsyncReactionsResourceWithRawResponse return AsyncReactionsResourceWithRawResponse(self._client.reactions) @cached_property def members(self) -> members.AsyncMembersResourceWithRawResponse: - """Members""" from .resources.members import AsyncMembersResourceWithRawResponse return AsyncMembersResourceWithRawResponse(self._client.members) @cached_property def forums(self) -> forums.AsyncForumsResourceWithRawResponse: - """Forums""" from .resources.forums import AsyncForumsResourceWithRawResponse return AsyncForumsResourceWithRawResponse(self._client.forums) @cached_property def promo_codes(self) -> promo_codes.AsyncPromoCodesResourceWithRawResponse: - """Promo codes""" from .resources.promo_codes import AsyncPromoCodesResourceWithRawResponse return AsyncPromoCodesResourceWithRawResponse(self._client.promo_codes) @cached_property def courses(self) -> courses.AsyncCoursesResourceWithRawResponse: - """Courses""" from .resources.courses import AsyncCoursesResourceWithRawResponse return AsyncCoursesResourceWithRawResponse(self._client.courses) @cached_property def course_chapters(self) -> course_chapters.AsyncCourseChaptersResourceWithRawResponse: - """Course chapters""" from .resources.course_chapters import AsyncCourseChaptersResourceWithRawResponse return AsyncCourseChaptersResourceWithRawResponse(self._client.course_chapters) @cached_property def course_lessons(self) -> course_lessons.AsyncCourseLessonsResourceWithRawResponse: - """Course lessons""" from .resources.course_lessons import AsyncCourseLessonsResourceWithRawResponse return AsyncCourseLessonsResourceWithRawResponse(self._client.course_lessons) @cached_property def reviews(self) -> reviews.AsyncReviewsResourceWithRawResponse: - """Reviews""" from .resources.reviews import AsyncReviewsResourceWithRawResponse return AsyncReviewsResourceWithRawResponse(self._client.reviews) @cached_property def course_students(self) -> course_students.AsyncCourseStudentsResourceWithRawResponse: - """Course students""" from .resources.course_students import AsyncCourseStudentsResourceWithRawResponse return AsyncCourseStudentsResourceWithRawResponse(self._client.course_students) @cached_property def access_tokens(self) -> access_tokens.AsyncAccessTokensResourceWithRawResponse: - """Access tokens""" from .resources.access_tokens import AsyncAccessTokensResourceWithRawResponse return AsyncAccessTokensResourceWithRawResponse(self._client.access_tokens) @cached_property def notifications(self) -> notifications.AsyncNotificationsResourceWithRawResponse: - """Notifications""" from .resources.notifications import AsyncNotificationsResourceWithRawResponse return AsyncNotificationsResourceWithRawResponse(self._client.notifications) @cached_property def disputes(self) -> disputes.AsyncDisputesResourceWithRawResponse: - """Disputes""" from .resources.disputes import AsyncDisputesResourceWithRawResponse return AsyncDisputesResourceWithRawResponse(self._client.disputes) @cached_property def refunds(self) -> refunds.AsyncRefundsResourceWithRawResponse: - """Refunds""" from .resources.refunds import AsyncRefundsResourceWithRawResponse return AsyncRefundsResourceWithRawResponse(self._client.refunds) @cached_property def withdrawals(self) -> withdrawals.AsyncWithdrawalsResourceWithRawResponse: - """Withdrawals""" from .resources.withdrawals import AsyncWithdrawalsResourceWithRawResponse return AsyncWithdrawalsResourceWithRawResponse(self._client.withdrawals) @cached_property def account_links(self) -> account_links.AsyncAccountLinksResourceWithRawResponse: - """Account links""" from .resources.account_links import AsyncAccountLinksResourceWithRawResponse return AsyncAccountLinksResourceWithRawResponse(self._client.account_links) @cached_property def setup_intents(self) -> setup_intents.AsyncSetupIntentsResourceWithRawResponse: - """Setup intents""" from .resources.setup_intents import AsyncSetupIntentsResourceWithRawResponse return AsyncSetupIntentsResourceWithRawResponse(self._client.setup_intents) @cached_property def payment_methods(self) -> payment_methods.AsyncPaymentMethodsResourceWithRawResponse: - """Payment methods""" from .resources.payment_methods import AsyncPaymentMethodsResourceWithRawResponse return AsyncPaymentMethodsResourceWithRawResponse(self._client.payment_methods) @cached_property def fee_markups(self) -> fee_markups.AsyncFeeMarkupsResourceWithRawResponse: - """Fee markups""" from .resources.fee_markups import AsyncFeeMarkupsResourceWithRawResponse return AsyncFeeMarkupsResourceWithRawResponse(self._client.fee_markups) @cached_property def payout_methods(self) -> payout_methods.AsyncPayoutMethodsResourceWithRawResponse: - """Payout methods""" from .resources.payout_methods import AsyncPayoutMethodsResourceWithRawResponse return AsyncPayoutMethodsResourceWithRawResponse(self._client.payout_methods) @cached_property def verifications(self) -> verifications.AsyncVerificationsResourceWithRawResponse: - """Verifications""" from .resources.verifications import AsyncVerificationsResourceWithRawResponse return AsyncVerificationsResourceWithRawResponse(self._client.verifications) @cached_property def leads(self) -> leads.AsyncLeadsResourceWithRawResponse: - """Leads""" from .resources.leads import AsyncLeadsResourceWithRawResponse return AsyncLeadsResourceWithRawResponse(self._client.leads) @cached_property def topups(self) -> topups.AsyncTopupsResourceWithRawResponse: - """Topups""" from .resources.topups import AsyncTopupsResourceWithRawResponse return AsyncTopupsResourceWithRawResponse(self._client.topups) @cached_property def files(self) -> files.AsyncFilesResourceWithRawResponse: - """Files""" from .resources.files import AsyncFilesResourceWithRawResponse return AsyncFilesResourceWithRawResponse(self._client.files) @@ -1903,35 +1708,30 @@ def files(self) -> files.AsyncFilesResourceWithRawResponse: def company_token_transactions( self, ) -> company_token_transactions.AsyncCompanyTokenTransactionsResourceWithRawResponse: - """Company token transactions""" from .resources.company_token_transactions import AsyncCompanyTokenTransactionsResourceWithRawResponse return AsyncCompanyTokenTransactionsResourceWithRawResponse(self._client.company_token_transactions) @cached_property def dm_members(self) -> dm_members.AsyncDmMembersResourceWithRawResponse: - """Dm members""" from .resources.dm_members import AsyncDmMembersResourceWithRawResponse return AsyncDmMembersResourceWithRawResponse(self._client.dm_members) @cached_property def ai_chats(self) -> ai_chats.AsyncAIChatsResourceWithRawResponse: - """Ai chats""" from .resources.ai_chats import AsyncAIChatsResourceWithRawResponse return AsyncAIChatsResourceWithRawResponse(self._client.ai_chats) @cached_property def dm_channels(self) -> dm_channels.AsyncDmChannelsResourceWithRawResponse: - """Dm channels""" from .resources.dm_channels import AsyncDmChannelsResourceWithRawResponse return AsyncDmChannelsResourceWithRawResponse(self._client.dm_channels) @cached_property def dispute_alerts(self) -> dispute_alerts.AsyncDisputeAlertsResourceWithRawResponse: - """Dispute alerts""" from .resources.dispute_alerts import AsyncDisputeAlertsResourceWithRawResponse return AsyncDisputeAlertsResourceWithRawResponse(self._client.dispute_alerts) @@ -1945,14 +1745,12 @@ def __init__(self, client: Whop) -> None: @cached_property def apps(self) -> apps.AppsResourceWithStreamingResponse: - """Apps""" from .resources.apps import AppsResourceWithStreamingResponse return AppsResourceWithStreamingResponse(self._client.apps) @cached_property def invoices(self) -> invoices.InvoicesResourceWithStreamingResponse: - """Invoices""" from .resources.invoices import InvoicesResourceWithStreamingResponse return InvoicesResourceWithStreamingResponse(self._client.invoices) @@ -1961,301 +1759,258 @@ def invoices(self) -> invoices.InvoicesResourceWithStreamingResponse: def course_lesson_interactions( self, ) -> course_lesson_interactions.CourseLessonInteractionsResourceWithStreamingResponse: - """Course lesson interactions""" from .resources.course_lesson_interactions import CourseLessonInteractionsResourceWithStreamingResponse return CourseLessonInteractionsResourceWithStreamingResponse(self._client.course_lesson_interactions) @cached_property def products(self) -> products.ProductsResourceWithStreamingResponse: - """Products""" from .resources.products import ProductsResourceWithStreamingResponse return ProductsResourceWithStreamingResponse(self._client.products) @cached_property def companies(self) -> companies.CompaniesResourceWithStreamingResponse: - """Companies""" from .resources.companies import CompaniesResourceWithStreamingResponse return CompaniesResourceWithStreamingResponse(self._client.companies) @cached_property def webhooks(self) -> webhooks.WebhooksResourceWithStreamingResponse: - """Webhooks""" from .resources.webhooks import WebhooksResourceWithStreamingResponse return WebhooksResourceWithStreamingResponse(self._client.webhooks) @cached_property def plans(self) -> plans.PlansResourceWithStreamingResponse: - """Plans""" from .resources.plans import PlansResourceWithStreamingResponse return PlansResourceWithStreamingResponse(self._client.plans) @cached_property def entries(self) -> entries.EntriesResourceWithStreamingResponse: - """Entries""" from .resources.entries import EntriesResourceWithStreamingResponse return EntriesResourceWithStreamingResponse(self._client.entries) @cached_property def forum_posts(self) -> forum_posts.ForumPostsResourceWithStreamingResponse: - """Forum posts""" from .resources.forum_posts import ForumPostsResourceWithStreamingResponse return ForumPostsResourceWithStreamingResponse(self._client.forum_posts) @cached_property def transfers(self) -> transfers.TransfersResourceWithStreamingResponse: - """Transfers""" from .resources.transfers import TransfersResourceWithStreamingResponse return TransfersResourceWithStreamingResponse(self._client.transfers) @cached_property def ledger_accounts(self) -> ledger_accounts.LedgerAccountsResourceWithStreamingResponse: - """Ledger accounts""" from .resources.ledger_accounts import LedgerAccountsResourceWithStreamingResponse return LedgerAccountsResourceWithStreamingResponse(self._client.ledger_accounts) @cached_property def memberships(self) -> memberships.MembershipsResourceWithStreamingResponse: - """Memberships""" from .resources.memberships import MembershipsResourceWithStreamingResponse return MembershipsResourceWithStreamingResponse(self._client.memberships) @cached_property def authorized_users(self) -> authorized_users.AuthorizedUsersResourceWithStreamingResponse: - """Authorized users""" from .resources.authorized_users import AuthorizedUsersResourceWithStreamingResponse return AuthorizedUsersResourceWithStreamingResponse(self._client.authorized_users) @cached_property def app_builds(self) -> app_builds.AppBuildsResourceWithStreamingResponse: - """App builds""" from .resources.app_builds import AppBuildsResourceWithStreamingResponse return AppBuildsResourceWithStreamingResponse(self._client.app_builds) @cached_property def shipments(self) -> shipments.ShipmentsResourceWithStreamingResponse: - """Shipments""" from .resources.shipments import ShipmentsResourceWithStreamingResponse return ShipmentsResourceWithStreamingResponse(self._client.shipments) @cached_property def checkout_configurations(self) -> checkout_configurations.CheckoutConfigurationsResourceWithStreamingResponse: - """Checkout configurations""" from .resources.checkout_configurations import CheckoutConfigurationsResourceWithStreamingResponse return CheckoutConfigurationsResourceWithStreamingResponse(self._client.checkout_configurations) @cached_property def messages(self) -> messages.MessagesResourceWithStreamingResponse: - """Messages""" from .resources.messages import MessagesResourceWithStreamingResponse return MessagesResourceWithStreamingResponse(self._client.messages) @cached_property def chat_channels(self) -> chat_channels.ChatChannelsResourceWithStreamingResponse: - """Chat channels""" from .resources.chat_channels import ChatChannelsResourceWithStreamingResponse return ChatChannelsResourceWithStreamingResponse(self._client.chat_channels) @cached_property def users(self) -> users.UsersResourceWithStreamingResponse: - """Users""" from .resources.users import UsersResourceWithStreamingResponse return UsersResourceWithStreamingResponse(self._client.users) @cached_property def payments(self) -> payments.PaymentsResourceWithStreamingResponse: - """Payments""" from .resources.payments import PaymentsResourceWithStreamingResponse return PaymentsResourceWithStreamingResponse(self._client.payments) @cached_property def support_channels(self) -> support_channels.SupportChannelsResourceWithStreamingResponse: - """Support channels""" from .resources.support_channels import SupportChannelsResourceWithStreamingResponse return SupportChannelsResourceWithStreamingResponse(self._client.support_channels) @cached_property def experiences(self) -> experiences.ExperiencesResourceWithStreamingResponse: - """Experiences""" from .resources.experiences import ExperiencesResourceWithStreamingResponse return ExperiencesResourceWithStreamingResponse(self._client.experiences) @cached_property def reactions(self) -> reactions.ReactionsResourceWithStreamingResponse: - """Reactions""" from .resources.reactions import ReactionsResourceWithStreamingResponse return ReactionsResourceWithStreamingResponse(self._client.reactions) @cached_property def members(self) -> members.MembersResourceWithStreamingResponse: - """Members""" from .resources.members import MembersResourceWithStreamingResponse return MembersResourceWithStreamingResponse(self._client.members) @cached_property def forums(self) -> forums.ForumsResourceWithStreamingResponse: - """Forums""" from .resources.forums import ForumsResourceWithStreamingResponse return ForumsResourceWithStreamingResponse(self._client.forums) @cached_property def promo_codes(self) -> promo_codes.PromoCodesResourceWithStreamingResponse: - """Promo codes""" from .resources.promo_codes import PromoCodesResourceWithStreamingResponse return PromoCodesResourceWithStreamingResponse(self._client.promo_codes) @cached_property def courses(self) -> courses.CoursesResourceWithStreamingResponse: - """Courses""" from .resources.courses import CoursesResourceWithStreamingResponse return CoursesResourceWithStreamingResponse(self._client.courses) @cached_property def course_chapters(self) -> course_chapters.CourseChaptersResourceWithStreamingResponse: - """Course chapters""" from .resources.course_chapters import CourseChaptersResourceWithStreamingResponse return CourseChaptersResourceWithStreamingResponse(self._client.course_chapters) @cached_property def course_lessons(self) -> course_lessons.CourseLessonsResourceWithStreamingResponse: - """Course lessons""" from .resources.course_lessons import CourseLessonsResourceWithStreamingResponse return CourseLessonsResourceWithStreamingResponse(self._client.course_lessons) @cached_property def reviews(self) -> reviews.ReviewsResourceWithStreamingResponse: - """Reviews""" from .resources.reviews import ReviewsResourceWithStreamingResponse return ReviewsResourceWithStreamingResponse(self._client.reviews) @cached_property def course_students(self) -> course_students.CourseStudentsResourceWithStreamingResponse: - """Course students""" from .resources.course_students import CourseStudentsResourceWithStreamingResponse return CourseStudentsResourceWithStreamingResponse(self._client.course_students) @cached_property def access_tokens(self) -> access_tokens.AccessTokensResourceWithStreamingResponse: - """Access tokens""" from .resources.access_tokens import AccessTokensResourceWithStreamingResponse return AccessTokensResourceWithStreamingResponse(self._client.access_tokens) @cached_property def notifications(self) -> notifications.NotificationsResourceWithStreamingResponse: - """Notifications""" from .resources.notifications import NotificationsResourceWithStreamingResponse return NotificationsResourceWithStreamingResponse(self._client.notifications) @cached_property def disputes(self) -> disputes.DisputesResourceWithStreamingResponse: - """Disputes""" from .resources.disputes import DisputesResourceWithStreamingResponse return DisputesResourceWithStreamingResponse(self._client.disputes) @cached_property def refunds(self) -> refunds.RefundsResourceWithStreamingResponse: - """Refunds""" from .resources.refunds import RefundsResourceWithStreamingResponse return RefundsResourceWithStreamingResponse(self._client.refunds) @cached_property def withdrawals(self) -> withdrawals.WithdrawalsResourceWithStreamingResponse: - """Withdrawals""" from .resources.withdrawals import WithdrawalsResourceWithStreamingResponse return WithdrawalsResourceWithStreamingResponse(self._client.withdrawals) @cached_property def account_links(self) -> account_links.AccountLinksResourceWithStreamingResponse: - """Account links""" from .resources.account_links import AccountLinksResourceWithStreamingResponse return AccountLinksResourceWithStreamingResponse(self._client.account_links) @cached_property def setup_intents(self) -> setup_intents.SetupIntentsResourceWithStreamingResponse: - """Setup intents""" from .resources.setup_intents import SetupIntentsResourceWithStreamingResponse return SetupIntentsResourceWithStreamingResponse(self._client.setup_intents) @cached_property def payment_methods(self) -> payment_methods.PaymentMethodsResourceWithStreamingResponse: - """Payment methods""" from .resources.payment_methods import PaymentMethodsResourceWithStreamingResponse return PaymentMethodsResourceWithStreamingResponse(self._client.payment_methods) @cached_property def fee_markups(self) -> fee_markups.FeeMarkupsResourceWithStreamingResponse: - """Fee markups""" from .resources.fee_markups import FeeMarkupsResourceWithStreamingResponse return FeeMarkupsResourceWithStreamingResponse(self._client.fee_markups) @cached_property def payout_methods(self) -> payout_methods.PayoutMethodsResourceWithStreamingResponse: - """Payout methods""" from .resources.payout_methods import PayoutMethodsResourceWithStreamingResponse return PayoutMethodsResourceWithStreamingResponse(self._client.payout_methods) @cached_property def verifications(self) -> verifications.VerificationsResourceWithStreamingResponse: - """Verifications""" from .resources.verifications import VerificationsResourceWithStreamingResponse return VerificationsResourceWithStreamingResponse(self._client.verifications) @cached_property def leads(self) -> leads.LeadsResourceWithStreamingResponse: - """Leads""" from .resources.leads import LeadsResourceWithStreamingResponse return LeadsResourceWithStreamingResponse(self._client.leads) @cached_property def topups(self) -> topups.TopupsResourceWithStreamingResponse: - """Topups""" from .resources.topups import TopupsResourceWithStreamingResponse return TopupsResourceWithStreamingResponse(self._client.topups) @cached_property def files(self) -> files.FilesResourceWithStreamingResponse: - """Files""" from .resources.files import FilesResourceWithStreamingResponse return FilesResourceWithStreamingResponse(self._client.files) @@ -2264,35 +2019,30 @@ def files(self) -> files.FilesResourceWithStreamingResponse: def company_token_transactions( self, ) -> company_token_transactions.CompanyTokenTransactionsResourceWithStreamingResponse: - """Company token transactions""" from .resources.company_token_transactions import CompanyTokenTransactionsResourceWithStreamingResponse return CompanyTokenTransactionsResourceWithStreamingResponse(self._client.company_token_transactions) @cached_property def dm_members(self) -> dm_members.DmMembersResourceWithStreamingResponse: - """Dm members""" from .resources.dm_members import DmMembersResourceWithStreamingResponse return DmMembersResourceWithStreamingResponse(self._client.dm_members) @cached_property def ai_chats(self) -> ai_chats.AIChatsResourceWithStreamingResponse: - """Ai chats""" from .resources.ai_chats import AIChatsResourceWithStreamingResponse return AIChatsResourceWithStreamingResponse(self._client.ai_chats) @cached_property def dm_channels(self) -> dm_channels.DmChannelsResourceWithStreamingResponse: - """Dm channels""" from .resources.dm_channels import DmChannelsResourceWithStreamingResponse return DmChannelsResourceWithStreamingResponse(self._client.dm_channels) @cached_property def dispute_alerts(self) -> dispute_alerts.DisputeAlertsResourceWithStreamingResponse: - """Dispute alerts""" from .resources.dispute_alerts import DisputeAlertsResourceWithStreamingResponse return DisputeAlertsResourceWithStreamingResponse(self._client.dispute_alerts) @@ -2306,14 +2056,12 @@ def __init__(self, client: AsyncWhop) -> None: @cached_property def apps(self) -> apps.AsyncAppsResourceWithStreamingResponse: - """Apps""" from .resources.apps import AsyncAppsResourceWithStreamingResponse return AsyncAppsResourceWithStreamingResponse(self._client.apps) @cached_property def invoices(self) -> invoices.AsyncInvoicesResourceWithStreamingResponse: - """Invoices""" from .resources.invoices import AsyncInvoicesResourceWithStreamingResponse return AsyncInvoicesResourceWithStreamingResponse(self._client.invoices) @@ -2322,91 +2070,78 @@ def invoices(self) -> invoices.AsyncInvoicesResourceWithStreamingResponse: def course_lesson_interactions( self, ) -> course_lesson_interactions.AsyncCourseLessonInteractionsResourceWithStreamingResponse: - """Course lesson interactions""" from .resources.course_lesson_interactions import AsyncCourseLessonInteractionsResourceWithStreamingResponse return AsyncCourseLessonInteractionsResourceWithStreamingResponse(self._client.course_lesson_interactions) @cached_property def products(self) -> products.AsyncProductsResourceWithStreamingResponse: - """Products""" from .resources.products import AsyncProductsResourceWithStreamingResponse return AsyncProductsResourceWithStreamingResponse(self._client.products) @cached_property def companies(self) -> companies.AsyncCompaniesResourceWithStreamingResponse: - """Companies""" from .resources.companies import AsyncCompaniesResourceWithStreamingResponse return AsyncCompaniesResourceWithStreamingResponse(self._client.companies) @cached_property def webhooks(self) -> webhooks.AsyncWebhooksResourceWithStreamingResponse: - """Webhooks""" from .resources.webhooks import AsyncWebhooksResourceWithStreamingResponse return AsyncWebhooksResourceWithStreamingResponse(self._client.webhooks) @cached_property def plans(self) -> plans.AsyncPlansResourceWithStreamingResponse: - """Plans""" from .resources.plans import AsyncPlansResourceWithStreamingResponse return AsyncPlansResourceWithStreamingResponse(self._client.plans) @cached_property def entries(self) -> entries.AsyncEntriesResourceWithStreamingResponse: - """Entries""" from .resources.entries import AsyncEntriesResourceWithStreamingResponse return AsyncEntriesResourceWithStreamingResponse(self._client.entries) @cached_property def forum_posts(self) -> forum_posts.AsyncForumPostsResourceWithStreamingResponse: - """Forum posts""" from .resources.forum_posts import AsyncForumPostsResourceWithStreamingResponse return AsyncForumPostsResourceWithStreamingResponse(self._client.forum_posts) @cached_property def transfers(self) -> transfers.AsyncTransfersResourceWithStreamingResponse: - """Transfers""" from .resources.transfers import AsyncTransfersResourceWithStreamingResponse return AsyncTransfersResourceWithStreamingResponse(self._client.transfers) @cached_property def ledger_accounts(self) -> ledger_accounts.AsyncLedgerAccountsResourceWithStreamingResponse: - """Ledger accounts""" from .resources.ledger_accounts import AsyncLedgerAccountsResourceWithStreamingResponse return AsyncLedgerAccountsResourceWithStreamingResponse(self._client.ledger_accounts) @cached_property def memberships(self) -> memberships.AsyncMembershipsResourceWithStreamingResponse: - """Memberships""" from .resources.memberships import AsyncMembershipsResourceWithStreamingResponse return AsyncMembershipsResourceWithStreamingResponse(self._client.memberships) @cached_property def authorized_users(self) -> authorized_users.AsyncAuthorizedUsersResourceWithStreamingResponse: - """Authorized users""" from .resources.authorized_users import AsyncAuthorizedUsersResourceWithStreamingResponse return AsyncAuthorizedUsersResourceWithStreamingResponse(self._client.authorized_users) @cached_property def app_builds(self) -> app_builds.AsyncAppBuildsResourceWithStreamingResponse: - """App builds""" from .resources.app_builds import AsyncAppBuildsResourceWithStreamingResponse return AsyncAppBuildsResourceWithStreamingResponse(self._client.app_builds) @cached_property def shipments(self) -> shipments.AsyncShipmentsResourceWithStreamingResponse: - """Shipments""" from .resources.shipments import AsyncShipmentsResourceWithStreamingResponse return AsyncShipmentsResourceWithStreamingResponse(self._client.shipments) @@ -2415,210 +2150,180 @@ def shipments(self) -> shipments.AsyncShipmentsResourceWithStreamingResponse: def checkout_configurations( self, ) -> checkout_configurations.AsyncCheckoutConfigurationsResourceWithStreamingResponse: - """Checkout configurations""" from .resources.checkout_configurations import AsyncCheckoutConfigurationsResourceWithStreamingResponse return AsyncCheckoutConfigurationsResourceWithStreamingResponse(self._client.checkout_configurations) @cached_property def messages(self) -> messages.AsyncMessagesResourceWithStreamingResponse: - """Messages""" from .resources.messages import AsyncMessagesResourceWithStreamingResponse return AsyncMessagesResourceWithStreamingResponse(self._client.messages) @cached_property def chat_channels(self) -> chat_channels.AsyncChatChannelsResourceWithStreamingResponse: - """Chat channels""" from .resources.chat_channels import AsyncChatChannelsResourceWithStreamingResponse return AsyncChatChannelsResourceWithStreamingResponse(self._client.chat_channels) @cached_property def users(self) -> users.AsyncUsersResourceWithStreamingResponse: - """Users""" from .resources.users import AsyncUsersResourceWithStreamingResponse return AsyncUsersResourceWithStreamingResponse(self._client.users) @cached_property def payments(self) -> payments.AsyncPaymentsResourceWithStreamingResponse: - """Payments""" from .resources.payments import AsyncPaymentsResourceWithStreamingResponse return AsyncPaymentsResourceWithStreamingResponse(self._client.payments) @cached_property def support_channels(self) -> support_channels.AsyncSupportChannelsResourceWithStreamingResponse: - """Support channels""" from .resources.support_channels import AsyncSupportChannelsResourceWithStreamingResponse return AsyncSupportChannelsResourceWithStreamingResponse(self._client.support_channels) @cached_property def experiences(self) -> experiences.AsyncExperiencesResourceWithStreamingResponse: - """Experiences""" from .resources.experiences import AsyncExperiencesResourceWithStreamingResponse return AsyncExperiencesResourceWithStreamingResponse(self._client.experiences) @cached_property def reactions(self) -> reactions.AsyncReactionsResourceWithStreamingResponse: - """Reactions""" from .resources.reactions import AsyncReactionsResourceWithStreamingResponse return AsyncReactionsResourceWithStreamingResponse(self._client.reactions) @cached_property def members(self) -> members.AsyncMembersResourceWithStreamingResponse: - """Members""" from .resources.members import AsyncMembersResourceWithStreamingResponse return AsyncMembersResourceWithStreamingResponse(self._client.members) @cached_property def forums(self) -> forums.AsyncForumsResourceWithStreamingResponse: - """Forums""" from .resources.forums import AsyncForumsResourceWithStreamingResponse return AsyncForumsResourceWithStreamingResponse(self._client.forums) @cached_property def promo_codes(self) -> promo_codes.AsyncPromoCodesResourceWithStreamingResponse: - """Promo codes""" from .resources.promo_codes import AsyncPromoCodesResourceWithStreamingResponse return AsyncPromoCodesResourceWithStreamingResponse(self._client.promo_codes) @cached_property def courses(self) -> courses.AsyncCoursesResourceWithStreamingResponse: - """Courses""" from .resources.courses import AsyncCoursesResourceWithStreamingResponse return AsyncCoursesResourceWithStreamingResponse(self._client.courses) @cached_property def course_chapters(self) -> course_chapters.AsyncCourseChaptersResourceWithStreamingResponse: - """Course chapters""" from .resources.course_chapters import AsyncCourseChaptersResourceWithStreamingResponse return AsyncCourseChaptersResourceWithStreamingResponse(self._client.course_chapters) @cached_property def course_lessons(self) -> course_lessons.AsyncCourseLessonsResourceWithStreamingResponse: - """Course lessons""" from .resources.course_lessons import AsyncCourseLessonsResourceWithStreamingResponse return AsyncCourseLessonsResourceWithStreamingResponse(self._client.course_lessons) @cached_property def reviews(self) -> reviews.AsyncReviewsResourceWithStreamingResponse: - """Reviews""" from .resources.reviews import AsyncReviewsResourceWithStreamingResponse return AsyncReviewsResourceWithStreamingResponse(self._client.reviews) @cached_property def course_students(self) -> course_students.AsyncCourseStudentsResourceWithStreamingResponse: - """Course students""" from .resources.course_students import AsyncCourseStudentsResourceWithStreamingResponse return AsyncCourseStudentsResourceWithStreamingResponse(self._client.course_students) @cached_property def access_tokens(self) -> access_tokens.AsyncAccessTokensResourceWithStreamingResponse: - """Access tokens""" from .resources.access_tokens import AsyncAccessTokensResourceWithStreamingResponse return AsyncAccessTokensResourceWithStreamingResponse(self._client.access_tokens) @cached_property def notifications(self) -> notifications.AsyncNotificationsResourceWithStreamingResponse: - """Notifications""" from .resources.notifications import AsyncNotificationsResourceWithStreamingResponse return AsyncNotificationsResourceWithStreamingResponse(self._client.notifications) @cached_property def disputes(self) -> disputes.AsyncDisputesResourceWithStreamingResponse: - """Disputes""" from .resources.disputes import AsyncDisputesResourceWithStreamingResponse return AsyncDisputesResourceWithStreamingResponse(self._client.disputes) @cached_property def refunds(self) -> refunds.AsyncRefundsResourceWithStreamingResponse: - """Refunds""" from .resources.refunds import AsyncRefundsResourceWithStreamingResponse return AsyncRefundsResourceWithStreamingResponse(self._client.refunds) @cached_property def withdrawals(self) -> withdrawals.AsyncWithdrawalsResourceWithStreamingResponse: - """Withdrawals""" from .resources.withdrawals import AsyncWithdrawalsResourceWithStreamingResponse return AsyncWithdrawalsResourceWithStreamingResponse(self._client.withdrawals) @cached_property def account_links(self) -> account_links.AsyncAccountLinksResourceWithStreamingResponse: - """Account links""" from .resources.account_links import AsyncAccountLinksResourceWithStreamingResponse return AsyncAccountLinksResourceWithStreamingResponse(self._client.account_links) @cached_property def setup_intents(self) -> setup_intents.AsyncSetupIntentsResourceWithStreamingResponse: - """Setup intents""" from .resources.setup_intents import AsyncSetupIntentsResourceWithStreamingResponse return AsyncSetupIntentsResourceWithStreamingResponse(self._client.setup_intents) @cached_property def payment_methods(self) -> payment_methods.AsyncPaymentMethodsResourceWithStreamingResponse: - """Payment methods""" from .resources.payment_methods import AsyncPaymentMethodsResourceWithStreamingResponse return AsyncPaymentMethodsResourceWithStreamingResponse(self._client.payment_methods) @cached_property def fee_markups(self) -> fee_markups.AsyncFeeMarkupsResourceWithStreamingResponse: - """Fee markups""" from .resources.fee_markups import AsyncFeeMarkupsResourceWithStreamingResponse return AsyncFeeMarkupsResourceWithStreamingResponse(self._client.fee_markups) @cached_property def payout_methods(self) -> payout_methods.AsyncPayoutMethodsResourceWithStreamingResponse: - """Payout methods""" from .resources.payout_methods import AsyncPayoutMethodsResourceWithStreamingResponse return AsyncPayoutMethodsResourceWithStreamingResponse(self._client.payout_methods) @cached_property def verifications(self) -> verifications.AsyncVerificationsResourceWithStreamingResponse: - """Verifications""" from .resources.verifications import AsyncVerificationsResourceWithStreamingResponse return AsyncVerificationsResourceWithStreamingResponse(self._client.verifications) @cached_property def leads(self) -> leads.AsyncLeadsResourceWithStreamingResponse: - """Leads""" from .resources.leads import AsyncLeadsResourceWithStreamingResponse return AsyncLeadsResourceWithStreamingResponse(self._client.leads) @cached_property def topups(self) -> topups.AsyncTopupsResourceWithStreamingResponse: - """Topups""" from .resources.topups import AsyncTopupsResourceWithStreamingResponse return AsyncTopupsResourceWithStreamingResponse(self._client.topups) @cached_property def files(self) -> files.AsyncFilesResourceWithStreamingResponse: - """Files""" from .resources.files import AsyncFilesResourceWithStreamingResponse return AsyncFilesResourceWithStreamingResponse(self._client.files) @@ -2627,35 +2332,30 @@ def files(self) -> files.AsyncFilesResourceWithStreamingResponse: def company_token_transactions( self, ) -> company_token_transactions.AsyncCompanyTokenTransactionsResourceWithStreamingResponse: - """Company token transactions""" from .resources.company_token_transactions import AsyncCompanyTokenTransactionsResourceWithStreamingResponse return AsyncCompanyTokenTransactionsResourceWithStreamingResponse(self._client.company_token_transactions) @cached_property def dm_members(self) -> dm_members.AsyncDmMembersResourceWithStreamingResponse: - """Dm members""" from .resources.dm_members import AsyncDmMembersResourceWithStreamingResponse return AsyncDmMembersResourceWithStreamingResponse(self._client.dm_members) @cached_property def ai_chats(self) -> ai_chats.AsyncAIChatsResourceWithStreamingResponse: - """Ai chats""" from .resources.ai_chats import AsyncAIChatsResourceWithStreamingResponse return AsyncAIChatsResourceWithStreamingResponse(self._client.ai_chats) @cached_property def dm_channels(self) -> dm_channels.AsyncDmChannelsResourceWithStreamingResponse: - """Dm channels""" from .resources.dm_channels import AsyncDmChannelsResourceWithStreamingResponse return AsyncDmChannelsResourceWithStreamingResponse(self._client.dm_channels) @cached_property def dispute_alerts(self) -> dispute_alerts.AsyncDisputeAlertsResourceWithStreamingResponse: - """Dispute alerts""" from .resources.dispute_alerts import AsyncDisputeAlertsResourceWithStreamingResponse return AsyncDisputeAlertsResourceWithStreamingResponse(self._client.dispute_alerts) diff --git a/src/whop_sdk/_version.py b/src/whop_sdk/_version.py index 162053b4..c674ff57 100644 --- a/src/whop_sdk/_version.py +++ b/src/whop_sdk/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "whop_sdk" -__version__ = "0.1.0" # x-release-please-version +__version__ = "0.0.30" # x-release-please-version diff --git a/src/whop_sdk/resources/access_tokens.py b/src/whop_sdk/resources/access_tokens.py index 1ebde168..ec9b7832 100644 --- a/src/whop_sdk/resources/access_tokens.py +++ b/src/whop_sdk/resources/access_tokens.py @@ -25,8 +25,6 @@ class AccessTokensResource(SyncAPIResource): - """Access tokens""" - @cached_property def with_raw_response(self) -> AccessTokensResourceWithRawResponse: """ @@ -108,8 +106,6 @@ def create( class AsyncAccessTokensResource(AsyncAPIResource): - """Access tokens""" - @cached_property def with_raw_response(self) -> AsyncAccessTokensResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/account_links.py b/src/whop_sdk/resources/account_links.py index ccfe5cd7..e362e3fb 100644 --- a/src/whop_sdk/resources/account_links.py +++ b/src/whop_sdk/resources/account_links.py @@ -24,8 +24,6 @@ class AccountLinksResource(SyncAPIResource): - """Account links""" - @cached_property def with_raw_response(self) -> AccountLinksResourceWithRawResponse: """ @@ -103,8 +101,6 @@ def create( class AsyncAccountLinksResource(AsyncAPIResource): - """Account links""" - @cached_property def with_raw_response(self) -> AsyncAccountLinksResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/ai_chats.py b/src/whop_sdk/resources/ai_chats.py index cd1fe56a..cd24246c 100644 --- a/src/whop_sdk/resources/ai_chats.py +++ b/src/whop_sdk/resources/ai_chats.py @@ -28,8 +28,6 @@ class AIChatsResource(SyncAPIResource): - """Ai chats""" - @cached_property def with_raw_response(self) -> AIChatsResourceWithRawResponse: """ @@ -56,7 +54,6 @@ def create( current_company_id: Optional[str] | Omit = omit, message_attachments: Optional[Iterable[ai_chat_create_params.MessageAttachment]] | Omit = omit, message_source: Optional[Literal["manual", "suggestion", "link"]] | Omit = omit, - suggestion_type: Optional[str] | Omit = omit, title: Optional[str] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. @@ -83,9 +80,6 @@ def create( message_source: The source of an AI chat message - suggestion_type: The type of suggestion prompt that was clicked, when message_source is - 'suggestion'. - title: An optional display title for the AI chat thread (e.g., "Help with billing"). extra_headers: Send extra headers @@ -104,7 +98,6 @@ def create( "current_company_id": current_company_id, "message_attachments": message_attachments, "message_source": message_source, - "suggestion_type": suggestion_type, "title": title, }, ai_chat_create_params.AIChatCreateParams, @@ -293,8 +286,6 @@ def delete( class AsyncAIChatsResource(AsyncAPIResource): - """Ai chats""" - @cached_property def with_raw_response(self) -> AsyncAIChatsResourceWithRawResponse: """ @@ -321,7 +312,6 @@ async def create( current_company_id: Optional[str] | Omit = omit, message_attachments: Optional[Iterable[ai_chat_create_params.MessageAttachment]] | Omit = omit, message_source: Optional[Literal["manual", "suggestion", "link"]] | Omit = omit, - suggestion_type: Optional[str] | Omit = omit, title: Optional[str] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. @@ -348,9 +338,6 @@ async def create( message_source: The source of an AI chat message - suggestion_type: The type of suggestion prompt that was clicked, when message_source is - 'suggestion'. - title: An optional display title for the AI chat thread (e.g., "Help with billing"). extra_headers: Send extra headers @@ -369,7 +356,6 @@ async def create( "current_company_id": current_company_id, "message_attachments": message_attachments, "message_source": message_source, - "suggestion_type": suggestion_type, "title": title, }, ai_chat_create_params.AIChatCreateParams, diff --git a/src/whop_sdk/resources/app_builds.py b/src/whop_sdk/resources/app_builds.py index 967b89fd..e4e0f855 100644 --- a/src/whop_sdk/resources/app_builds.py +++ b/src/whop_sdk/resources/app_builds.py @@ -30,8 +30,6 @@ class AppBuildsResource(SyncAPIResource): - """App builds""" - @cached_property def with_raw_response(self) -> AppBuildsResourceWithRawResponse: """ @@ -278,8 +276,6 @@ def promote( class AsyncAppBuildsResource(AsyncAPIResource): - """App builds""" - @cached_property def with_raw_response(self) -> AsyncAppBuildsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/apps.py b/src/whop_sdk/resources/apps.py index dd29aa84..46fd9b78 100644 --- a/src/whop_sdk/resources/apps.py +++ b/src/whop_sdk/resources/apps.py @@ -31,8 +31,6 @@ class AppsResource(SyncAPIResource): - """Apps""" - @cached_property def with_raw_response(self) -> AppsResourceWithRawResponse: """ @@ -356,8 +354,6 @@ def list( class AsyncAppsResource(AsyncAPIResource): - """Apps""" - @cached_property def with_raw_response(self) -> AsyncAppsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/authorized_users.py b/src/whop_sdk/resources/authorized_users.py index b1f3fd19..91158b83 100644 --- a/src/whop_sdk/resources/authorized_users.py +++ b/src/whop_sdk/resources/authorized_users.py @@ -7,9 +7,9 @@ import httpx -from ..types import authorized_user_list_params, authorized_user_create_params, authorized_user_delete_params +from ..types import authorized_user_list_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -22,16 +22,12 @@ from .._base_client import AsyncPaginator, make_request_options from ..types.shared.authorized_user_roles import AuthorizedUserRoles from ..types.authorized_user_list_response import AuthorizedUserListResponse -from ..types.authorized_user_create_response import AuthorizedUserCreateResponse -from ..types.authorized_user_delete_response import AuthorizedUserDeleteResponse from ..types.authorized_user_retrieve_response import AuthorizedUserRetrieveResponse __all__ = ["AuthorizedUsersResource", "AsyncAuthorizedUsersResource"] class AuthorizedUsersResource(SyncAPIResource): - """Authorized users""" - @cached_property def with_raw_response(self) -> AuthorizedUsersResourceWithRawResponse: """ @@ -51,64 +47,6 @@ def with_streaming_response(self) -> AuthorizedUsersResourceWithStreamingRespons """ return AuthorizedUsersResourceWithStreamingResponse(self) - def create( - self, - *, - company_id: str, - role: AuthorizedUserRoles, - user_id: str, - send_emails: Optional[bool] | Omit = omit, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> AuthorizedUserCreateResponse: - """ - Add a new authorized user to a company. - - Required permissions: - - - `authorized_user:create` - - `member:email:read` - - Args: - company_id: The ID of the company to add the authorized user to. - - role: - The role to assign to the authorized user within the company. Supported roles: - 'moderator', 'sales_manager'. - - user_id: The ID of the user to add as an authorized user. - - send_emails: Whether to send notification emails to the user on creation. - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - return self._post( - "/authorized_users", - body=maybe_transform( - { - "company_id": company_id, - "role": role, - "user_id": user_id, - "send_emails": send_emails, - }, - authorized_user_create_params.AuthorizedUserCreateParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=AuthorizedUserCreateResponse, - ) - def retrieve( self, id: str, @@ -229,57 +167,8 @@ def list( model=AuthorizedUserListResponse, ) - def delete( - self, - id: str, - *, - company_id: Optional[str] | Omit = omit, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> AuthorizedUserDeleteResponse: - """ - Remove an authorized user from a company. - - Required permissions: - - - `authorized_user:delete` - - Args: - company_id: The ID of the company the authorized user belongs to. Optional if the authorized - user ID is provided. - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not id: - raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") - return self._delete( - f"/authorized_users/{id}", - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - query=maybe_transform( - {"company_id": company_id}, authorized_user_delete_params.AuthorizedUserDeleteParams - ), - ), - cast_to=AuthorizedUserDeleteResponse, - ) - class AsyncAuthorizedUsersResource(AsyncAPIResource): - """Authorized users""" - @cached_property def with_raw_response(self) -> AsyncAuthorizedUsersResourceWithRawResponse: """ @@ -299,64 +188,6 @@ def with_streaming_response(self) -> AsyncAuthorizedUsersResourceWithStreamingRe """ return AsyncAuthorizedUsersResourceWithStreamingResponse(self) - async def create( - self, - *, - company_id: str, - role: AuthorizedUserRoles, - user_id: str, - send_emails: Optional[bool] | Omit = omit, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> AuthorizedUserCreateResponse: - """ - Add a new authorized user to a company. - - Required permissions: - - - `authorized_user:create` - - `member:email:read` - - Args: - company_id: The ID of the company to add the authorized user to. - - role: - The role to assign to the authorized user within the company. Supported roles: - 'moderator', 'sales_manager'. - - user_id: The ID of the user to add as an authorized user. - - send_emails: Whether to send notification emails to the user on creation. - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - return await self._post( - "/authorized_users", - body=await async_maybe_transform( - { - "company_id": company_id, - "role": role, - "user_id": user_id, - "send_emails": send_emails, - }, - authorized_user_create_params.AuthorizedUserCreateParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=AuthorizedUserCreateResponse, - ) - async def retrieve( self, id: str, @@ -477,121 +308,50 @@ def list( model=AuthorizedUserListResponse, ) - async def delete( - self, - id: str, - *, - company_id: Optional[str] | Omit = omit, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> AuthorizedUserDeleteResponse: - """ - Remove an authorized user from a company. - - Required permissions: - - - `authorized_user:delete` - - Args: - company_id: The ID of the company the authorized user belongs to. Optional if the authorized - user ID is provided. - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not id: - raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") - return await self._delete( - f"/authorized_users/{id}", - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - query=await async_maybe_transform( - {"company_id": company_id}, authorized_user_delete_params.AuthorizedUserDeleteParams - ), - ), - cast_to=AuthorizedUserDeleteResponse, - ) - class AuthorizedUsersResourceWithRawResponse: def __init__(self, authorized_users: AuthorizedUsersResource) -> None: self._authorized_users = authorized_users - self.create = to_raw_response_wrapper( - authorized_users.create, - ) self.retrieve = to_raw_response_wrapper( authorized_users.retrieve, ) self.list = to_raw_response_wrapper( authorized_users.list, ) - self.delete = to_raw_response_wrapper( - authorized_users.delete, - ) class AsyncAuthorizedUsersResourceWithRawResponse: def __init__(self, authorized_users: AsyncAuthorizedUsersResource) -> None: self._authorized_users = authorized_users - self.create = async_to_raw_response_wrapper( - authorized_users.create, - ) self.retrieve = async_to_raw_response_wrapper( authorized_users.retrieve, ) self.list = async_to_raw_response_wrapper( authorized_users.list, ) - self.delete = async_to_raw_response_wrapper( - authorized_users.delete, - ) class AuthorizedUsersResourceWithStreamingResponse: def __init__(self, authorized_users: AuthorizedUsersResource) -> None: self._authorized_users = authorized_users - self.create = to_streamed_response_wrapper( - authorized_users.create, - ) self.retrieve = to_streamed_response_wrapper( authorized_users.retrieve, ) self.list = to_streamed_response_wrapper( authorized_users.list, ) - self.delete = to_streamed_response_wrapper( - authorized_users.delete, - ) class AsyncAuthorizedUsersResourceWithStreamingResponse: def __init__(self, authorized_users: AsyncAuthorizedUsersResource) -> None: self._authorized_users = authorized_users - self.create = async_to_streamed_response_wrapper( - authorized_users.create, - ) self.retrieve = async_to_streamed_response_wrapper( authorized_users.retrieve, ) self.list = async_to_streamed_response_wrapper( authorized_users.list, ) - self.delete = async_to_streamed_response_wrapper( - authorized_users.delete, - ) diff --git a/src/whop_sdk/resources/chat_channels.py b/src/whop_sdk/resources/chat_channels.py index 04382738..0ed7bd7f 100644 --- a/src/whop_sdk/resources/chat_channels.py +++ b/src/whop_sdk/resources/chat_channels.py @@ -28,8 +28,6 @@ class ChatChannelsResource(SyncAPIResource): - """Chat channels""" - @cached_property def with_raw_response(self) -> ChatChannelsResourceWithRawResponse: """ @@ -226,8 +224,6 @@ def list( class AsyncChatChannelsResource(AsyncAPIResource): - """Chat channels""" - @cached_property def with_raw_response(self) -> AsyncChatChannelsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/checkout_configurations.py b/src/whop_sdk/resources/checkout_configurations.py index 8df82b2c..01606287 100644 --- a/src/whop_sdk/resources/checkout_configurations.py +++ b/src/whop_sdk/resources/checkout_configurations.py @@ -30,8 +30,6 @@ class CheckoutConfigurationsResource(SyncAPIResource): - """Checkout configurations""" - @cached_property def with_raw_response(self) -> CheckoutConfigurationsResourceWithRawResponse: """ @@ -398,8 +396,6 @@ def list( class AsyncCheckoutConfigurationsResource(AsyncAPIResource): - """Checkout configurations""" - @cached_property def with_raw_response(self) -> AsyncCheckoutConfigurationsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/companies.py b/src/whop_sdk/resources/companies.py index ae00db09..37cb0775 100644 --- a/src/whop_sdk/resources/companies.py +++ b/src/whop_sdk/resources/companies.py @@ -2,7 +2,7 @@ from __future__ import annotations -from typing import Dict, Union, Iterable, Optional +from typing import Dict, Union, Optional from datetime import datetime import httpx @@ -28,8 +28,6 @@ class CompaniesResource(SyncAPIResource): - """Companies""" - @cached_property def with_raw_response(self) -> CompaniesResourceWithRawResponse: """ @@ -170,7 +168,6 @@ def update( logo: Optional[company_update_params.Logo] | Omit = omit, route: Optional[str] | Omit = omit, send_customer_emails: Optional[bool] | Omit = omit, - social_links: Optional[Iterable[company_update_params.SocialLink]] | Omit = omit, target_audience: Optional[str] | Omit = omit, title: Optional[str] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. @@ -203,9 +200,6 @@ def update( send_customer_emails: Whether Whop sends transactional emails (receipts, renewals, cancelations) to customers on behalf of this company. - social_links: The social media links to display on the company's store page. Pass the full - list of desired social links — any existing links not included will be removed. - target_audience: The target audience for this company (e.g., 'beginner day traders aged 18-25 looking to learn options'). @@ -230,7 +224,6 @@ def update( "logo": logo, "route": route, "send_customer_emails": send_customer_emails, - "social_links": social_links, "target_audience": target_audience, "title": title, }, @@ -324,8 +317,6 @@ def list( class AsyncCompaniesResource(AsyncAPIResource): - """Companies""" - @cached_property def with_raw_response(self) -> AsyncCompaniesResourceWithRawResponse: """ @@ -466,7 +457,6 @@ async def update( logo: Optional[company_update_params.Logo] | Omit = omit, route: Optional[str] | Omit = omit, send_customer_emails: Optional[bool] | Omit = omit, - social_links: Optional[Iterable[company_update_params.SocialLink]] | Omit = omit, target_audience: Optional[str] | Omit = omit, title: Optional[str] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. @@ -499,9 +489,6 @@ async def update( send_customer_emails: Whether Whop sends transactional emails (receipts, renewals, cancelations) to customers on behalf of this company. - social_links: The social media links to display on the company's store page. Pass the full - list of desired social links — any existing links not included will be removed. - target_audience: The target audience for this company (e.g., 'beginner day traders aged 18-25 looking to learn options'). @@ -526,7 +513,6 @@ async def update( "logo": logo, "route": route, "send_customer_emails": send_customer_emails, - "social_links": social_links, "target_audience": target_audience, "title": title, }, diff --git a/src/whop_sdk/resources/company_token_transactions.py b/src/whop_sdk/resources/company_token_transactions.py index ff382499..aa7bf6ce 100644 --- a/src/whop_sdk/resources/company_token_transactions.py +++ b/src/whop_sdk/resources/company_token_transactions.py @@ -32,8 +32,6 @@ class CompanyTokenTransactionsResource(SyncAPIResource): - """Company token transactions""" - @cached_property def with_raw_response(self) -> CompanyTokenTransactionsResourceWithRawResponse: """ @@ -367,8 +365,6 @@ def list( class AsyncCompanyTokenTransactionsResource(AsyncAPIResource): - """Company token transactions""" - @cached_property def with_raw_response(self) -> AsyncCompanyTokenTransactionsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/course_chapters.py b/src/whop_sdk/resources/course_chapters.py index 13d1ba92..9d8345bf 100644 --- a/src/whop_sdk/resources/course_chapters.py +++ b/src/whop_sdk/resources/course_chapters.py @@ -27,8 +27,6 @@ class CourseChaptersResource(SyncAPIResource): - """Course chapters""" - @cached_property def with_raw_response(self) -> CourseChaptersResourceWithRawResponse: """ @@ -276,8 +274,6 @@ def delete( class AsyncCourseChaptersResource(AsyncAPIResource): - """Course chapters""" - @cached_property def with_raw_response(self) -> AsyncCourseChaptersResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/course_lesson_interactions.py b/src/whop_sdk/resources/course_lesson_interactions.py index c162930e..19d49434 100644 --- a/src/whop_sdk/resources/course_lesson_interactions.py +++ b/src/whop_sdk/resources/course_lesson_interactions.py @@ -26,8 +26,6 @@ class CourseLessonInteractionsResource(SyncAPIResource): - """Course lesson interactions""" - @cached_property def with_raw_response(self) -> CourseLessonInteractionsResourceWithRawResponse: """ @@ -164,8 +162,6 @@ def list( class AsyncCourseLessonInteractionsResource(AsyncAPIResource): - """Course lesson interactions""" - @cached_property def with_raw_response(self) -> AsyncCourseLessonInteractionsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/course_lessons.py b/src/whop_sdk/resources/course_lessons.py index 710a739d..ef47ad3e 100644 --- a/src/whop_sdk/resources/course_lessons.py +++ b/src/whop_sdk/resources/course_lessons.py @@ -41,8 +41,6 @@ class CourseLessonsResource(SyncAPIResource): - """Course lessons""" - @cached_property def with_raw_response(self) -> CourseLessonsResourceWithRawResponse: """ @@ -495,8 +493,6 @@ def submit_assessment( class AsyncCourseLessonsResource(AsyncAPIResource): - """Course lessons""" - @cached_property def with_raw_response(self) -> AsyncCourseLessonsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/course_students.py b/src/whop_sdk/resources/course_students.py index f85f1f82..83c1656e 100644 --- a/src/whop_sdk/resources/course_students.py +++ b/src/whop_sdk/resources/course_students.py @@ -26,8 +26,6 @@ class CourseStudentsResource(SyncAPIResource): - """Course students""" - @cached_property def with_raw_response(self) -> CourseStudentsResourceWithRawResponse: """ @@ -156,8 +154,6 @@ def list( class AsyncCourseStudentsResource(AsyncAPIResource): - """Course students""" - @cached_property def with_raw_response(self) -> AsyncCourseStudentsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/courses.py b/src/whop_sdk/resources/courses.py index 9ea8d328..a5c5b25e 100644 --- a/src/whop_sdk/resources/courses.py +++ b/src/whop_sdk/resources/courses.py @@ -29,8 +29,6 @@ class CoursesResource(SyncAPIResource): - """Courses""" - @cached_property def with_raw_response(self) -> CoursesResourceWithRawResponse: """ @@ -361,8 +359,6 @@ def delete( class AsyncCoursesResource(AsyncAPIResource): - """Courses""" - @cached_property def with_raw_response(self) -> AsyncCoursesResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/dispute_alerts.py b/src/whop_sdk/resources/dispute_alerts.py index 6ce07f13..03b47ef2 100644 --- a/src/whop_sdk/resources/dispute_alerts.py +++ b/src/whop_sdk/resources/dispute_alerts.py @@ -28,8 +28,6 @@ class DisputeAlertsResource(SyncAPIResource): - """Dispute alerts""" - @cached_property def with_raw_response(self) -> DisputeAlertsResourceWithRawResponse: """ @@ -171,8 +169,6 @@ def list( class AsyncDisputeAlertsResource(AsyncAPIResource): - """Dispute alerts""" - @cached_property def with_raw_response(self) -> AsyncDisputeAlertsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/disputes.py b/src/whop_sdk/resources/disputes.py index 33d308f8..0baa88dc 100644 --- a/src/whop_sdk/resources/disputes.py +++ b/src/whop_sdk/resources/disputes.py @@ -28,8 +28,6 @@ class DisputesResource(SyncAPIResource): - """Disputes""" - @cached_property def with_raw_response(self) -> DisputesResourceWithRawResponse: """ @@ -330,8 +328,6 @@ def update_evidence( class AsyncDisputesResource(AsyncAPIResource): - """Disputes""" - @cached_property def with_raw_response(self) -> AsyncDisputesResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/dm_channels.py b/src/whop_sdk/resources/dm_channels.py index 6c979300..7e51c55e 100644 --- a/src/whop_sdk/resources/dm_channels.py +++ b/src/whop_sdk/resources/dm_channels.py @@ -27,8 +27,6 @@ class DmChannelsResource(SyncAPIResource): - """Dm channels""" - @cached_property def with_raw_response(self) -> DmChannelsResourceWithRawResponse: """ @@ -284,8 +282,6 @@ def delete( class AsyncDmChannelsResource(AsyncAPIResource): - """Dm channels""" - @cached_property def with_raw_response(self) -> AsyncDmChannelsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/dm_members.py b/src/whop_sdk/resources/dm_members.py index 1681c01b..f1a8ca12 100644 --- a/src/whop_sdk/resources/dm_members.py +++ b/src/whop_sdk/resources/dm_members.py @@ -35,8 +35,6 @@ class DmMembersResource(SyncAPIResource): - """Dm members""" - @cached_property def with_raw_response(self) -> DmMembersResourceWithRawResponse: """ @@ -299,8 +297,6 @@ def delete( class AsyncDmMembersResource(AsyncAPIResource): - """Dm members""" - @cached_property def with_raw_response(self) -> AsyncDmMembersResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/entries.py b/src/whop_sdk/resources/entries.py index 42e4218f..41d5d23c 100644 --- a/src/whop_sdk/resources/entries.py +++ b/src/whop_sdk/resources/entries.py @@ -31,8 +31,6 @@ class EntriesResource(SyncAPIResource): - """Entries""" - @cached_property def with_raw_response(self) -> EntriesResourceWithRawResponse: """ @@ -263,8 +261,6 @@ def deny( class AsyncEntriesResource(AsyncAPIResource): - """Entries""" - @cached_property def with_raw_response(self) -> AsyncEntriesResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/experiences.py b/src/whop_sdk/resources/experiences.py index 531a200e..50542d1d 100644 --- a/src/whop_sdk/resources/experiences.py +++ b/src/whop_sdk/resources/experiences.py @@ -36,8 +36,6 @@ class ExperiencesResource(SyncAPIResource): - """Experiences""" - @cached_property def with_raw_response(self) -> ExperiencesResourceWithRawResponse: """ @@ -460,8 +458,6 @@ def duplicate( class AsyncExperiencesResource(AsyncAPIResource): - """Experiences""" - @cached_property def with_raw_response(self) -> AsyncExperiencesResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/fee_markups.py b/src/whop_sdk/resources/fee_markups.py index 9a9e94ba..9944dd2b 100644 --- a/src/whop_sdk/resources/fee_markups.py +++ b/src/whop_sdk/resources/fee_markups.py @@ -28,8 +28,6 @@ class FeeMarkupsResource(SyncAPIResource): - """Fee markups""" - @cached_property def with_raw_response(self) -> FeeMarkupsResourceWithRawResponse: """ @@ -221,8 +219,6 @@ def delete( class AsyncFeeMarkupsResource(AsyncAPIResource): - """Fee markups""" - @cached_property def with_raw_response(self) -> AsyncFeeMarkupsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/files.py b/src/whop_sdk/resources/files.py index d481f6e8..5729ec7c 100644 --- a/src/whop_sdk/resources/files.py +++ b/src/whop_sdk/resources/files.py @@ -23,8 +23,6 @@ class FilesResource(SyncAPIResource): - """Files""" - @cached_property def with_raw_response(self) -> FilesResourceWithRawResponse: """ @@ -115,8 +113,6 @@ def retrieve( class AsyncFilesResource(AsyncAPIResource): - """Files""" - @cached_property def with_raw_response(self) -> AsyncFilesResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/forum_posts.py b/src/whop_sdk/resources/forum_posts.py index 589c172d..0acb986e 100644 --- a/src/whop_sdk/resources/forum_posts.py +++ b/src/whop_sdk/resources/forum_posts.py @@ -33,8 +33,6 @@ class ForumPostsResource(SyncAPIResource): - """Forum posts""" - @cached_property def with_raw_response(self) -> ForumPostsResourceWithRawResponse: """ @@ -67,7 +65,6 @@ def create( paywall_currency: Optional[Currency] | Omit = omit, pinned: Optional[bool] | Omit = omit, poll: Optional[forum_post_create_params.Poll] | Omit = omit, - rich_content: Optional[str] | Omit = omit, title: Optional[str] | Omit = omit, visibility: Optional[ForumPostVisibilityType] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. @@ -116,9 +113,6 @@ def create( poll: A poll to attach to this post, allowing members to vote on options. - rich_content: The rich content of the post in Tiptap JSON format. When provided, takes - priority over the markdown content field for rendering. - title: The title of the post, displayed prominently at the top. Required for paywalled posts as it remains visible to non-purchasers. @@ -146,7 +140,6 @@ def create( "paywall_currency": paywall_currency, "pinned": pinned, "poll": poll, - "rich_content": rich_content, "title": title, "visibility": visibility, }, @@ -334,8 +327,6 @@ def list( class AsyncForumPostsResource(AsyncAPIResource): - """Forum posts""" - @cached_property def with_raw_response(self) -> AsyncForumPostsResourceWithRawResponse: """ @@ -368,7 +359,6 @@ async def create( paywall_currency: Optional[Currency] | Omit = omit, pinned: Optional[bool] | Omit = omit, poll: Optional[forum_post_create_params.Poll] | Omit = omit, - rich_content: Optional[str] | Omit = omit, title: Optional[str] | Omit = omit, visibility: Optional[ForumPostVisibilityType] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. @@ -417,9 +407,6 @@ async def create( poll: A poll to attach to this post, allowing members to vote on options. - rich_content: The rich content of the post in Tiptap JSON format. When provided, takes - priority over the markdown content field for rendering. - title: The title of the post, displayed prominently at the top. Required for paywalled posts as it remains visible to non-purchasers. @@ -447,7 +434,6 @@ async def create( "paywall_currency": paywall_currency, "pinned": pinned, "poll": poll, - "rich_content": rich_content, "title": title, "visibility": visibility, }, diff --git a/src/whop_sdk/resources/forums.py b/src/whop_sdk/resources/forums.py index b4f9e476..3159079e 100644 --- a/src/whop_sdk/resources/forums.py +++ b/src/whop_sdk/resources/forums.py @@ -29,8 +29,6 @@ class ForumsResource(SyncAPIResource): - """Forums""" - @cached_property def with_raw_response(self) -> ForumsResourceWithRawResponse: """ @@ -91,7 +89,6 @@ def update( self, id: str, *, - banner_image: Optional[forum_update_params.BannerImage] | Omit = omit, email_notification_preference: Optional[EmailNotificationPreferences] | Omit = omit, who_can_comment: Optional[WhoCanCommentTypes] | Omit = omit, who_can_post: Optional[WhoCanPostTypes] | Omit = omit, @@ -111,9 +108,6 @@ def update( - `forum:moderate` Args: - banner_image: The banner image displayed at the top of the forum page. Pass null to remove the - existing banner. - email_notification_preference: Email notification preference option for a forum feed who_can_comment: Who can comment on a forum feed @@ -134,7 +128,6 @@ def update( f"/forums/{id}", body=maybe_transform( { - "banner_image": banner_image, "email_notification_preference": email_notification_preference, "who_can_comment": who_can_comment, "who_can_post": who_can_post, @@ -218,8 +211,6 @@ def list( class AsyncForumsResource(AsyncAPIResource): - """Forums""" - @cached_property def with_raw_response(self) -> AsyncForumsResourceWithRawResponse: """ @@ -280,7 +271,6 @@ async def update( self, id: str, *, - banner_image: Optional[forum_update_params.BannerImage] | Omit = omit, email_notification_preference: Optional[EmailNotificationPreferences] | Omit = omit, who_can_comment: Optional[WhoCanCommentTypes] | Omit = omit, who_can_post: Optional[WhoCanPostTypes] | Omit = omit, @@ -300,9 +290,6 @@ async def update( - `forum:moderate` Args: - banner_image: The banner image displayed at the top of the forum page. Pass null to remove the - existing banner. - email_notification_preference: Email notification preference option for a forum feed who_can_comment: Who can comment on a forum feed @@ -323,7 +310,6 @@ async def update( f"/forums/{id}", body=await async_maybe_transform( { - "banner_image": banner_image, "email_notification_preference": email_notification_preference, "who_can_comment": who_can_comment, "who_can_post": who_can_post, diff --git a/src/whop_sdk/resources/invoices.py b/src/whop_sdk/resources/invoices.py index 017fa401..aec677fc 100644 --- a/src/whop_sdk/resources/invoices.py +++ b/src/whop_sdk/resources/invoices.py @@ -32,8 +32,6 @@ class InvoicesResource(SyncAPIResource): - """Invoices""" - @cached_property def with_raw_response(self) -> InvoicesResourceWithRawResponse: """ @@ -83,6 +81,7 @@ def create( Required permissions: - `invoice:create` + - `plan:basic:read` Args: collection_method: How the invoice should be collected. Use charge_automatically to charge a stored @@ -156,6 +155,7 @@ def create( Required permissions: - `invoice:create` + - `plan:basic:read` Args: collection_method: How the invoice should be collected. Use charge_automatically to charge a stored @@ -229,6 +229,7 @@ def create( Required permissions: - `invoice:create` + - `plan:basic:read` Args: collection_method: How the invoice should be collected. Use charge_automatically to charge a stored @@ -301,6 +302,7 @@ def create( Required permissions: - `invoice:create` + - `plan:basic:read` Args: collection_method: How the invoice should be collected. Use charge_automatically to charge a stored @@ -420,6 +422,7 @@ def retrieve( Required permissions: - `invoice:basic:read` + - `plan:basic:read` Args: extra_headers: Send extra headers @@ -443,10 +446,10 @@ def retrieve( def list( self, *, + company_id: str, after: Optional[str] | Omit = omit, before: Optional[str] | Omit = omit, collection_methods: Optional[List[CollectionMethod]] | Omit = omit, - company_id: Optional[str] | Omit = omit, created_after: Union[str, datetime, None] | Omit = omit, created_before: Union[str, datetime, None] | Omit = omit, direction: Optional[Direction] | Omit = omit, @@ -469,16 +472,17 @@ def list( Required permissions: - `invoice:basic:read` + - `plan:basic:read` Args: + company_id: The unique identifier of the company to list invoices for. + after: Returns the elements in the list that come after the specified cursor. before: Returns the elements in the list that come before the specified cursor. collection_methods: Filter invoices by their collection method. - company_id: The unique identifier of the company to list invoices for. - created_after: Only return invoices created after this timestamp. created_before: Only return invoices created before this timestamp. @@ -514,10 +518,10 @@ def list( timeout=timeout, query=maybe_transform( { + "company_id": company_id, "after": after, "before": before, "collection_methods": collection_methods, - "company_id": company_id, "created_after": created_after, "created_before": created_before, "direction": direction, @@ -574,8 +578,6 @@ def void( class AsyncInvoicesResource(AsyncAPIResource): - """Invoices""" - @cached_property def with_raw_response(self) -> AsyncInvoicesResourceWithRawResponse: """ @@ -625,6 +627,7 @@ async def create( Required permissions: - `invoice:create` + - `plan:basic:read` Args: collection_method: How the invoice should be collected. Use charge_automatically to charge a stored @@ -698,6 +701,7 @@ async def create( Required permissions: - `invoice:create` + - `plan:basic:read` Args: collection_method: How the invoice should be collected. Use charge_automatically to charge a stored @@ -771,6 +775,7 @@ async def create( Required permissions: - `invoice:create` + - `plan:basic:read` Args: collection_method: How the invoice should be collected. Use charge_automatically to charge a stored @@ -843,6 +848,7 @@ async def create( Required permissions: - `invoice:create` + - `plan:basic:read` Args: collection_method: How the invoice should be collected. Use charge_automatically to charge a stored @@ -962,6 +968,7 @@ async def retrieve( Required permissions: - `invoice:basic:read` + - `plan:basic:read` Args: extra_headers: Send extra headers @@ -985,10 +992,10 @@ async def retrieve( def list( self, *, + company_id: str, after: Optional[str] | Omit = omit, before: Optional[str] | Omit = omit, collection_methods: Optional[List[CollectionMethod]] | Omit = omit, - company_id: Optional[str] | Omit = omit, created_after: Union[str, datetime, None] | Omit = omit, created_before: Union[str, datetime, None] | Omit = omit, direction: Optional[Direction] | Omit = omit, @@ -1011,16 +1018,17 @@ def list( Required permissions: - `invoice:basic:read` + - `plan:basic:read` Args: + company_id: The unique identifier of the company to list invoices for. + after: Returns the elements in the list that come after the specified cursor. before: Returns the elements in the list that come before the specified cursor. collection_methods: Filter invoices by their collection method. - company_id: The unique identifier of the company to list invoices for. - created_after: Only return invoices created after this timestamp. created_before: Only return invoices created before this timestamp. @@ -1056,10 +1064,10 @@ def list( timeout=timeout, query=maybe_transform( { + "company_id": company_id, "after": after, "before": before, "collection_methods": collection_methods, - "company_id": company_id, "created_after": created_after, "created_before": created_before, "direction": direction, diff --git a/src/whop_sdk/resources/leads.py b/src/whop_sdk/resources/leads.py index fd31d3d3..df6f9929 100644 --- a/src/whop_sdk/resources/leads.py +++ b/src/whop_sdk/resources/leads.py @@ -27,8 +27,6 @@ class LeadsResource(SyncAPIResource): - """Leads""" - @cached_property def with_raw_response(self) -> LeadsResourceWithRawResponse: """ @@ -290,8 +288,6 @@ def list( class AsyncLeadsResource(AsyncAPIResource): - """Leads""" - @cached_property def with_raw_response(self) -> AsyncLeadsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/ledger_accounts.py b/src/whop_sdk/resources/ledger_accounts.py index cbbc4ee6..d213b5ca 100644 --- a/src/whop_sdk/resources/ledger_accounts.py +++ b/src/whop_sdk/resources/ledger_accounts.py @@ -20,8 +20,6 @@ class LedgerAccountsResource(SyncAPIResource): - """Ledger accounts""" - @cached_property def with_raw_response(self) -> LedgerAccountsResourceWithRawResponse: """ @@ -81,8 +79,6 @@ def retrieve( class AsyncLedgerAccountsResource(AsyncAPIResource): - """Ledger accounts""" - @cached_property def with_raw_response(self) -> AsyncLedgerAccountsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/members.py b/src/whop_sdk/resources/members.py index a9d50568..811f248f 100644 --- a/src/whop_sdk/resources/members.py +++ b/src/whop_sdk/resources/members.py @@ -32,8 +32,6 @@ class MembersResource(SyncAPIResource): - """Members""" - @cached_property def with_raw_response(self) -> MembersResourceWithRawResponse: """ @@ -210,8 +208,6 @@ def list( class AsyncMembersResource(AsyncAPIResource): - """Members""" - @cached_property def with_raw_response(self) -> AsyncMembersResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/memberships.py b/src/whop_sdk/resources/memberships.py index bf123a17..22af0afb 100644 --- a/src/whop_sdk/resources/memberships.py +++ b/src/whop_sdk/resources/memberships.py @@ -13,7 +13,6 @@ membership_pause_params, membership_cancel_params, membership_update_params, - membership_add_free_days_params, ) from .._types import Body, Omit, Query, Headers, NotGiven, SequenceNotStr, omit, not_given from .._utils import maybe_transform, async_maybe_transform @@ -37,8 +36,6 @@ class MembershipsResource(SyncAPIResource): - """Memberships""" - @cached_property def with_raw_response(self) -> MembershipsResourceWithRawResponse: """ @@ -247,51 +244,6 @@ def list( model=MembershipListResponse, ) - def add_free_days( - self, - id: str, - *, - free_days: int, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> Membership: - """ - Add free days to extend a membership's current billing period, expiration date, - or Stripe trial. - - Required permissions: - - - `member:manage` - - `member:email:read` - - `member:basic:read` - - Args: - free_days: The number of free days to add (1-1095). Extends the billing period, expiration - date, or Stripe trial depending on plan type. - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not id: - raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") - return self._post( - f"/memberships/{id}/add_free_days", - body=maybe_transform({"free_days": free_days}, membership_add_free_days_params.MembershipAddFreeDaysParams), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=Membership, - ) - def cancel( self, id: str, @@ -310,7 +262,7 @@ def cancel( Required permissions: - - `membership:cancel` + - `member:manage` - `member:email:read` - `member:basic:read` @@ -467,8 +419,6 @@ def uncancel( class AsyncMembershipsResource(AsyncAPIResource): - """Memberships""" - @cached_property def with_raw_response(self) -> AsyncMembershipsResourceWithRawResponse: """ @@ -677,53 +627,6 @@ def list( model=MembershipListResponse, ) - async def add_free_days( - self, - id: str, - *, - free_days: int, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> Membership: - """ - Add free days to extend a membership's current billing period, expiration date, - or Stripe trial. - - Required permissions: - - - `member:manage` - - `member:email:read` - - `member:basic:read` - - Args: - free_days: The number of free days to add (1-1095). Extends the billing period, expiration - date, or Stripe trial depending on plan type. - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not id: - raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") - return await self._post( - f"/memberships/{id}/add_free_days", - body=await async_maybe_transform( - {"free_days": free_days}, membership_add_free_days_params.MembershipAddFreeDaysParams - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=Membership, - ) - async def cancel( self, id: str, @@ -742,7 +645,7 @@ async def cancel( Required permissions: - - `membership:cancel` + - `member:manage` - `member:email:read` - `member:basic:read` @@ -913,9 +816,6 @@ def __init__(self, memberships: MembershipsResource) -> None: self.list = to_raw_response_wrapper( memberships.list, ) - self.add_free_days = to_raw_response_wrapper( - memberships.add_free_days, - ) self.cancel = to_raw_response_wrapper( memberships.cancel, ) @@ -943,9 +843,6 @@ def __init__(self, memberships: AsyncMembershipsResource) -> None: self.list = async_to_raw_response_wrapper( memberships.list, ) - self.add_free_days = async_to_raw_response_wrapper( - memberships.add_free_days, - ) self.cancel = async_to_raw_response_wrapper( memberships.cancel, ) @@ -973,9 +870,6 @@ def __init__(self, memberships: MembershipsResource) -> None: self.list = to_streamed_response_wrapper( memberships.list, ) - self.add_free_days = to_streamed_response_wrapper( - memberships.add_free_days, - ) self.cancel = to_streamed_response_wrapper( memberships.cancel, ) @@ -1003,9 +897,6 @@ def __init__(self, memberships: AsyncMembershipsResource) -> None: self.list = async_to_streamed_response_wrapper( memberships.list, ) - self.add_free_days = async_to_streamed_response_wrapper( - memberships.add_free_days, - ) self.cancel = async_to_streamed_response_wrapper( memberships.cancel, ) diff --git a/src/whop_sdk/resources/messages.py b/src/whop_sdk/resources/messages.py index 06ba3f0b..73316027 100644 --- a/src/whop_sdk/resources/messages.py +++ b/src/whop_sdk/resources/messages.py @@ -28,8 +28,6 @@ class MessagesResource(SyncAPIResource): - """Messages""" - @cached_property def with_raw_response(self) -> MessagesResourceWithRawResponse: """ @@ -315,8 +313,6 @@ def delete( class AsyncMessagesResource(AsyncAPIResource): - """Messages""" - @cached_property def with_raw_response(self) -> AsyncMessagesResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/notifications.py b/src/whop_sdk/resources/notifications.py index eaf1c066..f1eff29a 100644 --- a/src/whop_sdk/resources/notifications.py +++ b/src/whop_sdk/resources/notifications.py @@ -25,8 +25,6 @@ class NotificationsResource(SyncAPIResource): - """Notifications""" - @cached_property def with_raw_response(self) -> NotificationsResourceWithRawResponse: """ @@ -210,8 +208,6 @@ def create( class AsyncNotificationsResource(AsyncAPIResource): - """Notifications""" - @cached_property def with_raw_response(self) -> AsyncNotificationsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/payment_methods.py b/src/whop_sdk/resources/payment_methods.py index 9e9da3d2..9e993655 100644 --- a/src/whop_sdk/resources/payment_methods.py +++ b/src/whop_sdk/resources/payment_methods.py @@ -28,8 +28,6 @@ class PaymentMethodsResource(SyncAPIResource): - """Payment methods""" - @cached_property def with_raw_response(self) -> PaymentMethodsResourceWithRawResponse: """ @@ -196,8 +194,6 @@ def list( class AsyncPaymentMethodsResource(AsyncAPIResource): - """Payment methods""" - @cached_property def with_raw_response(self) -> AsyncPaymentMethodsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/payments.py b/src/whop_sdk/resources/payments.py index 47e0be4c..d36041da 100644 --- a/src/whop_sdk/resources/payments.py +++ b/src/whop_sdk/resources/payments.py @@ -34,8 +34,6 @@ class PaymentsResource(SyncAPIResource): - """Payments""" - @cached_property def with_raw_response(self) -> PaymentsResourceWithRawResponse: """ @@ -590,8 +588,6 @@ def void( class AsyncPaymentsResource(AsyncAPIResource): - """Payments""" - @cached_property def with_raw_response(self) -> AsyncPaymentsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/payout_methods.py b/src/whop_sdk/resources/payout_methods.py index d0c5978d..0333f57e 100644 --- a/src/whop_sdk/resources/payout_methods.py +++ b/src/whop_sdk/resources/payout_methods.py @@ -26,8 +26,6 @@ class PayoutMethodsResource(SyncAPIResource): - """Payout methods""" - @cached_property def with_raw_response(self) -> PayoutMethodsResourceWithRawResponse: """ @@ -150,8 +148,6 @@ def list( class AsyncPayoutMethodsResource(AsyncAPIResource): - """Payout methods""" - @cached_property def with_raw_response(self) -> AsyncPayoutMethodsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/plans.py b/src/whop_sdk/resources/plans.py index fbd116c4..413c3f89 100644 --- a/src/whop_sdk/resources/plans.py +++ b/src/whop_sdk/resources/plans.py @@ -36,8 +36,6 @@ class PlansResource(SyncAPIResource): - """Plans""" - @cached_property def with_raw_response(self) -> PlansResourceWithRawResponse: """ @@ -506,8 +504,6 @@ def delete( class AsyncPlansResource(AsyncAPIResource): - """Plans""" - @cached_property def with_raw_response(self) -> AsyncPlansResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/products.py b/src/whop_sdk/resources/products.py index 0c34deb9..a4b6793a 100644 --- a/src/whop_sdk/resources/products.py +++ b/src/whop_sdk/resources/products.py @@ -35,8 +35,6 @@ class ProductsResource(SyncAPIResource): - """Products""" - @cached_property def with_raw_response(self) -> ProductsResourceWithRawResponse: """ @@ -455,8 +453,6 @@ def delete( class AsyncProductsResource(AsyncAPIResource): - """Products""" - @cached_property def with_raw_response(self) -> AsyncProductsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/promo_codes.py b/src/whop_sdk/resources/promo_codes.py index 5bb3b5d3..4d8deb2f 100644 --- a/src/whop_sdk/resources/promo_codes.py +++ b/src/whop_sdk/resources/promo_codes.py @@ -31,8 +31,6 @@ class PromoCodesResource(SyncAPIResource): - """Promo codes""" - @cached_property def with_raw_response(self) -> PromoCodesResourceWithRawResponse: """ @@ -327,8 +325,6 @@ def delete( class AsyncPromoCodesResource(AsyncAPIResource): - """Promo codes""" - @cached_property def with_raw_response(self) -> AsyncPromoCodesResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/reactions.py b/src/whop_sdk/resources/reactions.py index 901f51a8..46882546 100644 --- a/src/whop_sdk/resources/reactions.py +++ b/src/whop_sdk/resources/reactions.py @@ -27,8 +27,6 @@ class ReactionsResource(SyncAPIResource): - """Reactions""" - @cached_property def with_raw_response(self) -> ReactionsResourceWithRawResponse: """ @@ -254,8 +252,6 @@ def delete( class AsyncReactionsResource(AsyncAPIResource): - """Reactions""" - @cached_property def with_raw_response(self) -> AsyncReactionsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/refunds.py b/src/whop_sdk/resources/refunds.py index e9bc15a9..ed7ba09f 100644 --- a/src/whop_sdk/resources/refunds.py +++ b/src/whop_sdk/resources/refunds.py @@ -28,8 +28,6 @@ class RefundsResource(SyncAPIResource): - """Refunds""" - @cached_property def with_raw_response(self) -> RefundsResourceWithRawResponse: """ @@ -167,8 +165,6 @@ def list( class AsyncRefundsResource(AsyncAPIResource): - """Refunds""" - @cached_property def with_raw_response(self) -> AsyncRefundsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/reviews.py b/src/whop_sdk/resources/reviews.py index 096ed767..3ce2c4d7 100644 --- a/src/whop_sdk/resources/reviews.py +++ b/src/whop_sdk/resources/reviews.py @@ -27,8 +27,6 @@ class ReviewsResource(SyncAPIResource): - """Reviews""" - @cached_property def with_raw_response(self) -> ReviewsResourceWithRawResponse: """ @@ -159,8 +157,6 @@ def list( class AsyncReviewsResource(AsyncAPIResource): - """Reviews""" - @cached_property def with_raw_response(self) -> AsyncReviewsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/setup_intents.py b/src/whop_sdk/resources/setup_intents.py index 71e5989c..e85baf44 100644 --- a/src/whop_sdk/resources/setup_intents.py +++ b/src/whop_sdk/resources/setup_intents.py @@ -28,8 +28,6 @@ class SetupIntentsResource(SyncAPIResource): - """Setup intents""" - @cached_property def with_raw_response(self) -> SetupIntentsResourceWithRawResponse: """ @@ -169,8 +167,6 @@ def list( class AsyncSetupIntentsResource(AsyncAPIResource): - """Setup intents""" - @cached_property def with_raw_response(self) -> AsyncSetupIntentsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/shipments.py b/src/whop_sdk/resources/shipments.py index e6b88fe8..1b46c631 100644 --- a/src/whop_sdk/resources/shipments.py +++ b/src/whop_sdk/resources/shipments.py @@ -26,8 +26,6 @@ class ShipmentsResource(SyncAPIResource): - """Shipments""" - @cached_property def with_raw_response(self) -> ShipmentsResourceWithRawResponse: """ @@ -215,8 +213,6 @@ def list( class AsyncShipmentsResource(AsyncAPIResource): - """Shipments""" - @cached_property def with_raw_response(self) -> AsyncShipmentsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/support_channels.py b/src/whop_sdk/resources/support_channels.py index 4fba5053..7b5146ae 100644 --- a/src/whop_sdk/resources/support_channels.py +++ b/src/whop_sdk/resources/support_channels.py @@ -28,8 +28,6 @@ class SupportChannelsResource(SyncAPIResource): - """Support channels""" - @cached_property def with_raw_response(self) -> SupportChannelsResourceWithRawResponse: """ @@ -219,8 +217,6 @@ def list( class AsyncSupportChannelsResource(AsyncAPIResource): - """Support channels""" - @cached_property def with_raw_response(self) -> AsyncSupportChannelsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/topups.py b/src/whop_sdk/resources/topups.py index 8dd55658..858cd891 100644 --- a/src/whop_sdk/resources/topups.py +++ b/src/whop_sdk/resources/topups.py @@ -23,8 +23,6 @@ class TopupsResource(SyncAPIResource): - """Topups""" - @cached_property def with_raw_response(self) -> TopupsResourceWithRawResponse: """ @@ -103,8 +101,6 @@ def create( class AsyncTopupsResource(AsyncAPIResource): - """Topups""" - @cached_property def with_raw_response(self) -> AsyncTopupsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/transfers.py b/src/whop_sdk/resources/transfers.py index 9837e10c..6252141a 100644 --- a/src/whop_sdk/resources/transfers.py +++ b/src/whop_sdk/resources/transfers.py @@ -30,8 +30,6 @@ class TransfersResource(SyncAPIResource): - """Transfers""" - @cached_property def with_raw_response(self) -> TransfersResourceWithRawResponse: """ @@ -249,8 +247,6 @@ def list( class AsyncTransfersResource(AsyncAPIResource): - """Transfers""" - @cached_property def with_raw_response(self) -> AsyncTransfersResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/users.py b/src/whop_sdk/resources/users.py index 4d01d560..914efd00 100644 --- a/src/whop_sdk/resources/users.py +++ b/src/whop_sdk/resources/users.py @@ -25,8 +25,6 @@ class UsersResource(SyncAPIResource): - """Users""" - @cached_property def with_raw_response(self) -> UsersResourceWithRawResponse: """ @@ -174,8 +172,6 @@ def update_profile( class AsyncUsersResource(AsyncAPIResource): - """Users""" - @cached_property def with_raw_response(self) -> AsyncUsersResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/verifications.py b/src/whop_sdk/resources/verifications.py index 829e8aa5..02f4b65d 100644 --- a/src/whop_sdk/resources/verifications.py +++ b/src/whop_sdk/resources/verifications.py @@ -20,8 +20,6 @@ class VerificationsResource(SyncAPIResource): - """Verifications""" - @cached_property def with_raw_response(self) -> VerificationsResourceWithRawResponse: """ @@ -80,8 +78,6 @@ def retrieve( class AsyncVerificationsResource(AsyncAPIResource): - """Verifications""" - @cached_property def with_raw_response(self) -> AsyncVerificationsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/webhooks.py b/src/whop_sdk/resources/webhooks.py index b396c301..340e6a65 100644 --- a/src/whop_sdk/resources/webhooks.py +++ b/src/whop_sdk/resources/webhooks.py @@ -34,8 +34,6 @@ class WebhooksResource(SyncAPIResource): - """Webhooks""" - @cached_property def with_raw_response(self) -> WebhooksResourceWithRawResponse: """ @@ -348,8 +346,6 @@ def unwrap(self, payload: str, *, headers: Mapping[str, str], key: str | bytes | class AsyncWebhooksResource(AsyncAPIResource): - """Webhooks""" - @cached_property def with_raw_response(self) -> AsyncWebhooksResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/withdrawals.py b/src/whop_sdk/resources/withdrawals.py index 3e6895cb..51b74257 100644 --- a/src/whop_sdk/resources/withdrawals.py +++ b/src/whop_sdk/resources/withdrawals.py @@ -29,8 +29,6 @@ class WithdrawalsResource(SyncAPIResource): - """Withdrawals""" - @cached_property def with_raw_response(self) -> WithdrawalsResourceWithRawResponse: """ @@ -231,8 +229,6 @@ def list( class AsyncWithdrawalsResource(AsyncAPIResource): - """Withdrawals""" - @cached_property def with_raw_response(self) -> AsyncWithdrawalsResourceWithRawResponse: """ diff --git a/src/whop_sdk/types/__init__.py b/src/whop_sdk/types/__init__.py index c2af8893..6d305f1a 100644 --- a/src/whop_sdk/types/__init__.py +++ b/src/whop_sdk/types/__init__.py @@ -139,11 +139,9 @@ from .payment_method_types import PaymentMethodTypes as PaymentMethodTypes from .plan_delete_response import PlanDeleteResponse as PlanDeleteResponse from .reaction_list_params import ReactionListParams as ReactionListParams -from .receipt_tax_behavior import ReceiptTaxBehavior as ReceiptTaxBehavior from .refund_list_response import RefundListResponse as RefundListResponse from .review_list_response import ReviewListResponse as ReviewListResponse from .shipment_list_params import ShipmentListParams as ShipmentListParams -from .social_link_websites import SocialLinkWebsites as SocialLinkWebsites from .transfer_list_params import TransferListParams as TransferListParams from .unwrap_webhook_event import UnwrapWebhookEvent as UnwrapWebhookEvent from .withdrawal_fee_types import WithdrawalFeeTypes as WithdrawalFeeTypes @@ -280,8 +278,6 @@ from .payment_method_list_response import PaymentMethodListResponse as PaymentMethodListResponse from .refund_created_webhook_event import RefundCreatedWebhookEvent as RefundCreatedWebhookEvent from .refund_updated_webhook_event import RefundUpdatedWebhookEvent as RefundUpdatedWebhookEvent -from .authorized_user_create_params import AuthorizedUserCreateParams as AuthorizedUserCreateParams -from .authorized_user_delete_params import AuthorizedUserDeleteParams as AuthorizedUserDeleteParams from .authorized_user_list_response import AuthorizedUserListResponse as AuthorizedUserListResponse from .course_lesson_delete_response import CourseLessonDeleteResponse as CourseLessonDeleteResponse from .dispute_created_webhook_event import DisputeCreatedWebhookEvent as DisputeCreatedWebhookEvent @@ -297,10 +293,7 @@ from .invoice_past_due_webhook_event import InvoicePastDueWebhookEvent as InvoicePastDueWebhookEvent from .payment_method_retrieve_params import PaymentMethodRetrieveParams as PaymentMethodRetrieveParams from .verification_retrieve_response import VerificationRetrieveResponse as VerificationRetrieveResponse -from .authorized_user_create_response import AuthorizedUserCreateResponse as AuthorizedUserCreateResponse -from .authorized_user_delete_response import AuthorizedUserDeleteResponse as AuthorizedUserDeleteResponse from .dispute_alert_retrieve_response import DisputeAlertRetrieveResponse as DisputeAlertRetrieveResponse -from .membership_add_free_days_params import MembershipAddFreeDaysParams as MembershipAddFreeDaysParams from .payment_succeeded_webhook_event import PaymentSucceededWebhookEvent as PaymentSucceededWebhookEvent from .payout_method_retrieve_response import PayoutMethodRetrieveResponse as PayoutMethodRetrieveResponse from .course_student_retrieve_response import CourseStudentRetrieveResponse as CourseStudentRetrieveResponse diff --git a/src/whop_sdk/types/ai_chat_create_params.py b/src/whop_sdk/types/ai_chat_create_params.py index 4eee3a32..9b147c0e 100644 --- a/src/whop_sdk/types/ai_chat_create_params.py +++ b/src/whop_sdk/types/ai_chat_create_params.py @@ -27,12 +27,6 @@ class AIChatCreateParams(TypedDict, total=False): message_source: Optional[Literal["manual", "suggestion", "link"]] """The source of an AI chat message""" - suggestion_type: Optional[str] - """ - The type of suggestion prompt that was clicked, when message_source is - 'suggestion'. - """ - title: Optional[str] """An optional display title for the AI chat thread (e.g., "Help with billing").""" diff --git a/src/whop_sdk/types/authorized_user_create_params.py b/src/whop_sdk/types/authorized_user_create_params.py deleted file mode 100644 index b2b538a5..00000000 --- a/src/whop_sdk/types/authorized_user_create_params.py +++ /dev/null @@ -1,27 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing import Optional -from typing_extensions import Required, TypedDict - -from .shared.authorized_user_roles import AuthorizedUserRoles - -__all__ = ["AuthorizedUserCreateParams"] - - -class AuthorizedUserCreateParams(TypedDict, total=False): - company_id: Required[str] - """The ID of the company to add the authorized user to.""" - - role: Required[AuthorizedUserRoles] - """The role to assign to the authorized user within the company. - - Supported roles: 'moderator', 'sales_manager'. - """ - - user_id: Required[str] - """The ID of the user to add as an authorized user.""" - - send_emails: Optional[bool] - """Whether to send notification emails to the user on creation.""" diff --git a/src/whop_sdk/types/authorized_user_create_response.py b/src/whop_sdk/types/authorized_user_create_response.py deleted file mode 100644 index 1bf69abd..00000000 --- a/src/whop_sdk/types/authorized_user_create_response.py +++ /dev/null @@ -1,55 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing import Optional - -from .._models import BaseModel -from .shared.authorized_user_roles import AuthorizedUserRoles - -__all__ = ["AuthorizedUserCreateResponse", "Company", "User"] - - -class Company(BaseModel): - """The company this authorized user has access to.""" - - id: str - """The unique identifier for the company.""" - - title: str - """The display name of the company shown to customers.""" - - -class User(BaseModel): - """The user account linked to this authorized user record.""" - - id: str - """The unique identifier for the user.""" - - email: Optional[str] = None - """The user's email address. - - Requires the member:email:read permission to access. Null if not authorized. - """ - - name: Optional[str] = None - """The user's display name shown on their public profile.""" - - username: str - """The user's unique username shown on their public profile.""" - - -class AuthorizedUserCreateResponse(BaseModel): - """ - A user who has been granted administrative access to manage a company's dashboard and settings. - """ - - id: str - """The unique identifier for the authorized user.""" - - company: Company - """The company this authorized user has access to.""" - - role: AuthorizedUserRoles - """The permission role assigned to this authorized user within the company.""" - - user: User - """The user account linked to this authorized user record.""" diff --git a/src/whop_sdk/types/authorized_user_delete_params.py b/src/whop_sdk/types/authorized_user_delete_params.py deleted file mode 100644 index ead84a1b..00000000 --- a/src/whop_sdk/types/authorized_user_delete_params.py +++ /dev/null @@ -1,16 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing import Optional -from typing_extensions import TypedDict - -__all__ = ["AuthorizedUserDeleteParams"] - - -class AuthorizedUserDeleteParams(TypedDict, total=False): - company_id: Optional[str] - """The ID of the company the authorized user belongs to. - - Optional if the authorized user ID is provided. - """ diff --git a/src/whop_sdk/types/authorized_user_delete_response.py b/src/whop_sdk/types/authorized_user_delete_response.py deleted file mode 100644 index b71b66f0..00000000 --- a/src/whop_sdk/types/authorized_user_delete_response.py +++ /dev/null @@ -1,7 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing_extensions import TypeAlias - -__all__ = ["AuthorizedUserDeleteResponse"] - -AuthorizedUserDeleteResponse: TypeAlias = bool diff --git a/src/whop_sdk/types/company_update_params.py b/src/whop_sdk/types/company_update_params.py index 089fdafe..c475d5fb 100644 --- a/src/whop_sdk/types/company_update_params.py +++ b/src/whop_sdk/types/company_update_params.py @@ -2,12 +2,10 @@ from __future__ import annotations -from typing import Iterable, Optional +from typing import Optional from typing_extensions import Required, TypedDict -from .social_link_websites import SocialLinkWebsites - -__all__ = ["CompanyUpdateParams", "BannerImage", "Logo", "SocialLink", "SocialLinkImage"] +__all__ = ["CompanyUpdateParams", "BannerImage", "Logo"] class CompanyUpdateParams(TypedDict, total=False): @@ -36,13 +34,6 @@ class CompanyUpdateParams(TypedDict, total=False): customers on behalf of this company. """ - social_links: Optional[Iterable[SocialLink]] - """The social media links to display on the company's store page. - - Pass the full list of desired social links — any existing links not included - will be removed. - """ - target_audience: Optional[str] """ The target audience for this company (e.g., 'beginner day traders aged 18-25 @@ -65,32 +56,3 @@ class Logo(TypedDict, total=False): id: Required[str] """The ID of an existing file object.""" - - -class SocialLinkImage(TypedDict, total=False): - """The custom image for the social link""" - - id: Required[str] - """The ID of an existing file object.""" - - -class SocialLink(TypedDict, total=False): - """Input for creating a social link for a company""" - - url: Required[str] - """The URL of the social link""" - - website: Required[SocialLinkWebsites] - """The website this link is for""" - - image: Optional[SocialLinkImage] - """The custom image for the social link""" - - order: Optional[str] - """The order of the social link""" - - title: Optional[str] - """The title of the social link""" - - website_order: Optional[str] - """The order of the website social link""" diff --git a/src/whop_sdk/types/forum_post_create_params.py b/src/whop_sdk/types/forum_post_create_params.py index 6b8281a8..217521fc 100644 --- a/src/whop_sdk/types/forum_post_create_params.py +++ b/src/whop_sdk/types/forum_post_create_params.py @@ -63,12 +63,6 @@ class ForumPostCreateParams(TypedDict, total=False): poll: Optional[Poll] """A poll to attach to this post, allowing members to vote on options.""" - rich_content: Optional[str] - """The rich content of the post in Tiptap JSON format. - - When provided, takes priority over the markdown content field for rendering. - """ - title: Optional[str] """The title of the post, displayed prominently at the top. diff --git a/src/whop_sdk/types/forum_post_list_response.py b/src/whop_sdk/types/forum_post_list_response.py index 4cbd7083..4bb4f301 100644 --- a/src/whop_sdk/types/forum_post_list_response.py +++ b/src/whop_sdk/types/forum_post_list_response.py @@ -1,37 +1,11 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -from typing import List, Optional +from typing import Optional from datetime import datetime from .._models import BaseModel -__all__ = ["ForumPostListResponse", "Attachment", "User"] - - -class Attachment(BaseModel): - """Represents an image attachment""" - - id: str - """Represents a unique identifier that is Base64 obfuscated. - - It is often used to refetch an object or as key for a cache. The ID type appears - in a JSON response as a String; however, it is not intended to be - human-readable. When expected as an input type, any string (such as - `"VXNlci0xMA=="`) or integer (such as `4`) input value will be accepted as an - ID. - """ - - content_type: Optional[str] = None - """The MIME type of the uploaded file (e.g., image/jpeg, video/mp4, audio/mpeg).""" - - filename: Optional[str] = None - """The original filename of the uploaded attachment, including its file extension.""" - - url: Optional[str] = None - """A pre-optimized URL for rendering this attachment on the client. - - This should be used for displaying attachments in apps. - """ +__all__ = ["ForumPostListResponse", "User"] class User(BaseModel): @@ -62,9 +36,6 @@ class ForumPostListResponse(BaseModel): ID. """ - attachments: List[Attachment] - """All file attachments on this post, such as images, documents, and videos.""" - comment_count: int """The total number of direct comments on this post.""" diff --git a/src/whop_sdk/types/forum_update_params.py b/src/whop_sdk/types/forum_update_params.py index 259496ec..2e2a97bc 100644 --- a/src/whop_sdk/types/forum_update_params.py +++ b/src/whop_sdk/types/forum_update_params.py @@ -3,22 +3,16 @@ from __future__ import annotations from typing import Optional -from typing_extensions import Required, TypedDict +from typing_extensions import TypedDict from .shared.who_can_post_types import WhoCanPostTypes from .shared.who_can_comment_types import WhoCanCommentTypes from .shared.email_notification_preferences import EmailNotificationPreferences -__all__ = ["ForumUpdateParams", "BannerImage"] +__all__ = ["ForumUpdateParams"] class ForumUpdateParams(TypedDict, total=False): - banner_image: Optional[BannerImage] - """The banner image displayed at the top of the forum page. - - Pass null to remove the existing banner. - """ - email_notification_preference: Optional[EmailNotificationPreferences] """Email notification preference option for a forum feed""" @@ -27,13 +21,3 @@ class ForumUpdateParams(TypedDict, total=False): who_can_post: Optional[WhoCanPostTypes] """Who can post on a forum feed""" - - -class BannerImage(TypedDict, total=False): - """The banner image displayed at the top of the forum page. - - Pass null to remove the existing banner. - """ - - id: Required[str] - """The ID of an existing file object.""" diff --git a/src/whop_sdk/types/invoice_create_params.py b/src/whop_sdk/types/invoice_create_params.py index 65c36fae..a3c6104b 100644 --- a/src/whop_sdk/types/invoice_create_params.py +++ b/src/whop_sdk/types/invoice_create_params.py @@ -2,14 +2,13 @@ from __future__ import annotations -from typing import List, Union, Iterable, Optional +from typing import Union, Iterable, Optional from datetime import datetime from typing_extensions import Literal, Required, Annotated, TypeAlias, TypedDict from .._utils import PropertyInfo from .shared.plan_type import PlanType from .shared.visibility import Visibility -from .payment_method_types import PaymentMethodTypes from .shared.release_method import ReleaseMethod from .shared.collection_method import CollectionMethod @@ -18,21 +17,17 @@ "CreateInvoiceInputWithProductAndMemberID", "CreateInvoiceInputWithProductAndMemberIDPlan", "CreateInvoiceInputWithProductAndMemberIDPlanCustomField", - "CreateInvoiceInputWithProductAndMemberIDPlanPaymentMethodConfiguration", "CreateInvoiceInputWithProductAndMemberIDProduct", "CreateInvoiceInputWithProductAndEmailAddress", "CreateInvoiceInputWithProductAndEmailAddressPlan", "CreateInvoiceInputWithProductAndEmailAddressPlanCustomField", - "CreateInvoiceInputWithProductAndEmailAddressPlanPaymentMethodConfiguration", "CreateInvoiceInputWithProductAndEmailAddressProduct", "CreateInvoiceInputWithProductIDAndMemberID", "CreateInvoiceInputWithProductIDAndMemberIDPlan", "CreateInvoiceInputWithProductIDAndMemberIDPlanCustomField", - "CreateInvoiceInputWithProductIDAndMemberIDPlanPaymentMethodConfiguration", "CreateInvoiceInputWithProductIDAndEmailAddress", "CreateInvoiceInputWithProductIDAndEmailAddressPlan", "CreateInvoiceInputWithProductIDAndEmailAddressPlanCustomField", - "CreateInvoiceInputWithProductIDAndEmailAddressPlanPaymentMethodConfiguration", ] @@ -118,34 +113,6 @@ class CreateInvoiceInputWithProductAndMemberIDPlanCustomField(TypedDict, total=F """Whether or not the field is required.""" -class CreateInvoiceInputWithProductAndMemberIDPlanPaymentMethodConfiguration(TypedDict, total=False): - """The explicit payment method configuration for the plan. - - If not provided, the platform or company's defaults will apply. - """ - - disabled: Required[List[PaymentMethodTypes]] - """An array of payment method identifiers that are explicitly disabled. - - Only applies if the include_platform_defaults is true. - """ - - enabled: Required[List[PaymentMethodTypes]] - """An array of payment method identifiers that are explicitly enabled. - - This means these payment methods will be shown on checkout. Example use case is - to only enable a specific payment method like cashapp, or extending the platform - defaults with additional methods. - """ - - include_platform_defaults: Required[bool] - """ - Whether Whop's platform default payment method enablement settings are included - in this configuration. The full list of default payment methods can be found in - the documentation at docs.whop.com/payments. - """ - - class CreateInvoiceInputWithProductAndMemberIDPlan(TypedDict, total=False): """ The plan attributes defining the price, currency, and billing interval for this invoice. @@ -177,15 +144,6 @@ class CreateInvoiceInputWithProductAndMemberIDPlan(TypedDict, total=False): internal_notes: Optional[str] """A personal description or notes section for the business.""" - legacy_payment_method_controls: Optional[bool] - """Whether this plan uses legacy payment method controls""" - - payment_method_configuration: Optional[CreateInvoiceInputWithProductAndMemberIDPlanPaymentMethodConfiguration] - """The explicit payment method configuration for the plan. - - If not provided, the platform or company's defaults will apply. - """ - plan_type: Optional[PlanType] """The type of plan that can be attached to a product""" @@ -311,34 +269,6 @@ class CreateInvoiceInputWithProductAndEmailAddressPlanCustomField(TypedDict, tot """Whether or not the field is required.""" -class CreateInvoiceInputWithProductAndEmailAddressPlanPaymentMethodConfiguration(TypedDict, total=False): - """The explicit payment method configuration for the plan. - - If not provided, the platform or company's defaults will apply. - """ - - disabled: Required[List[PaymentMethodTypes]] - """An array of payment method identifiers that are explicitly disabled. - - Only applies if the include_platform_defaults is true. - """ - - enabled: Required[List[PaymentMethodTypes]] - """An array of payment method identifiers that are explicitly enabled. - - This means these payment methods will be shown on checkout. Example use case is - to only enable a specific payment method like cashapp, or extending the platform - defaults with additional methods. - """ - - include_platform_defaults: Required[bool] - """ - Whether Whop's platform default payment method enablement settings are included - in this configuration. The full list of default payment methods can be found in - the documentation at docs.whop.com/payments. - """ - - class CreateInvoiceInputWithProductAndEmailAddressPlan(TypedDict, total=False): """ The plan attributes defining the price, currency, and billing interval for this invoice. @@ -370,15 +300,6 @@ class CreateInvoiceInputWithProductAndEmailAddressPlan(TypedDict, total=False): internal_notes: Optional[str] """A personal description or notes section for the business.""" - legacy_payment_method_controls: Optional[bool] - """Whether this plan uses legacy payment method controls""" - - payment_method_configuration: Optional[CreateInvoiceInputWithProductAndEmailAddressPlanPaymentMethodConfiguration] - """The explicit payment method configuration for the plan. - - If not provided, the platform or company's defaults will apply. - """ - plan_type: Optional[PlanType] """The type of plan that can be attached to a product""" @@ -500,34 +421,6 @@ class CreateInvoiceInputWithProductIDAndMemberIDPlanCustomField(TypedDict, total """Whether or not the field is required.""" -class CreateInvoiceInputWithProductIDAndMemberIDPlanPaymentMethodConfiguration(TypedDict, total=False): - """The explicit payment method configuration for the plan. - - If not provided, the platform or company's defaults will apply. - """ - - disabled: Required[List[PaymentMethodTypes]] - """An array of payment method identifiers that are explicitly disabled. - - Only applies if the include_platform_defaults is true. - """ - - enabled: Required[List[PaymentMethodTypes]] - """An array of payment method identifiers that are explicitly enabled. - - This means these payment methods will be shown on checkout. Example use case is - to only enable a specific payment method like cashapp, or extending the platform - defaults with additional methods. - """ - - include_platform_defaults: Required[bool] - """ - Whether Whop's platform default payment method enablement settings are included - in this configuration. The full list of default payment methods can be found in - the documentation at docs.whop.com/payments. - """ - - class CreateInvoiceInputWithProductIDAndMemberIDPlan(TypedDict, total=False): """ The plan attributes defining the price, currency, and billing interval for this invoice. @@ -559,15 +452,6 @@ class CreateInvoiceInputWithProductIDAndMemberIDPlan(TypedDict, total=False): internal_notes: Optional[str] """A personal description or notes section for the business.""" - legacy_payment_method_controls: Optional[bool] - """Whether this plan uses legacy payment method controls""" - - payment_method_configuration: Optional[CreateInvoiceInputWithProductIDAndMemberIDPlanPaymentMethodConfiguration] - """The explicit payment method configuration for the plan. - - If not provided, the platform or company's defaults will apply. - """ - plan_type: Optional[PlanType] """The type of plan that can be attached to a product""" @@ -677,34 +561,6 @@ class CreateInvoiceInputWithProductIDAndEmailAddressPlanCustomField(TypedDict, t """Whether or not the field is required.""" -class CreateInvoiceInputWithProductIDAndEmailAddressPlanPaymentMethodConfiguration(TypedDict, total=False): - """The explicit payment method configuration for the plan. - - If not provided, the platform or company's defaults will apply. - """ - - disabled: Required[List[PaymentMethodTypes]] - """An array of payment method identifiers that are explicitly disabled. - - Only applies if the include_platform_defaults is true. - """ - - enabled: Required[List[PaymentMethodTypes]] - """An array of payment method identifiers that are explicitly enabled. - - This means these payment methods will be shown on checkout. Example use case is - to only enable a specific payment method like cashapp, or extending the platform - defaults with additional methods. - """ - - include_platform_defaults: Required[bool] - """ - Whether Whop's platform default payment method enablement settings are included - in this configuration. The full list of default payment methods can be found in - the documentation at docs.whop.com/payments. - """ - - class CreateInvoiceInputWithProductIDAndEmailAddressPlan(TypedDict, total=False): """ The plan attributes defining the price, currency, and billing interval for this invoice. @@ -736,15 +592,6 @@ class CreateInvoiceInputWithProductIDAndEmailAddressPlan(TypedDict, total=False) internal_notes: Optional[str] """A personal description or notes section for the business.""" - legacy_payment_method_controls: Optional[bool] - """Whether this plan uses legacy payment method controls""" - - payment_method_configuration: Optional[CreateInvoiceInputWithProductIDAndEmailAddressPlanPaymentMethodConfiguration] - """The explicit payment method configuration for the plan. - - If not provided, the platform or company's defaults will apply. - """ - plan_type: Optional[PlanType] """The type of plan that can be attached to a product""" diff --git a/src/whop_sdk/types/invoice_list_params.py b/src/whop_sdk/types/invoice_list_params.py index 2adb1912..d1a4da26 100644 --- a/src/whop_sdk/types/invoice_list_params.py +++ b/src/whop_sdk/types/invoice_list_params.py @@ -4,7 +4,7 @@ from typing import List, Union, Optional from datetime import datetime -from typing_extensions import Literal, Annotated, TypedDict +from typing_extensions import Literal, Required, Annotated, TypedDict from .._types import SequenceNotStr from .._utils import PropertyInfo @@ -16,6 +16,9 @@ class InvoiceListParams(TypedDict, total=False): + company_id: Required[str] + """The unique identifier of the company to list invoices for.""" + after: Optional[str] """Returns the elements in the list that come after the specified cursor.""" @@ -25,9 +28,6 @@ class InvoiceListParams(TypedDict, total=False): collection_methods: Optional[List[CollectionMethod]] """Filter invoices by their collection method.""" - company_id: Optional[str] - """The unique identifier of the company to list invoices for.""" - created_after: Annotated[Union[str, datetime, None], PropertyInfo(format="iso8601")] """Only return invoices created after this timestamp.""" diff --git a/src/whop_sdk/types/membership_add_free_days_params.py b/src/whop_sdk/types/membership_add_free_days_params.py deleted file mode 100644 index 568b654b..00000000 --- a/src/whop_sdk/types/membership_add_free_days_params.py +++ /dev/null @@ -1,16 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing_extensions import Required, TypedDict - -__all__ = ["MembershipAddFreeDaysParams"] - - -class MembershipAddFreeDaysParams(TypedDict, total=False): - free_days: Required[int] - """The number of free days to add (1-1095). - - Extends the billing period, expiration date, or Stripe trial depending on plan - type. - """ diff --git a/src/whop_sdk/types/message_list_response.py b/src/whop_sdk/types/message_list_response.py index f6652e99..92e9660e 100644 --- a/src/whop_sdk/types/message_list_response.py +++ b/src/whop_sdk/types/message_list_response.py @@ -87,15 +87,6 @@ class MessageListResponse(BaseModel): is_pinned: bool """Whether this message is pinned to the top of the channel for easy access.""" - mentions: List[str] - """A list of user IDs that are explicitly mentioned in this message.""" - - mentions_everyone: bool - """ - Whether the message includes an @everyone mention that notifies all channel - members. - """ - message_type: DmsPostTypes """The classification of this message: regular, system, or automated.""" diff --git a/src/whop_sdk/types/payment_list_response.py b/src/whop_sdk/types/payment_list_response.py index 6ba171dd..438f5ecd 100644 --- a/src/whop_sdk/types/payment_list_response.py +++ b/src/whop_sdk/types/payment_list_response.py @@ -9,7 +9,6 @@ from .shared.currency import Currency from .shared.promo_type import PromoType from .payment_method_types import PaymentMethodTypes -from .receipt_tax_behavior import ReceiptTaxBehavior from .shared.receipt_status import ReceiptStatus from .shared.membership_status import MembershipStatus from .shared.friendly_receipt_status import FriendlyReceiptStatus @@ -346,15 +345,6 @@ class PaymentListResponse(BaseModel): subtotal: Optional[float] = None """The subtotal to show to the creator (excluding buyer fees).""" - tax_amount: Optional[float] = None - """The calculated amount of the sales/VAT tax (if applicable).""" - - tax_behavior: Optional[ReceiptTaxBehavior] = None - """ - The type of tax inclusivity applied to the receipt, for determining whether the - tax is included in the final price, or paid on top. - """ - total: Optional[float] = None """The total to show to the creator (excluding buyer fees).""" diff --git a/src/whop_sdk/types/payment_method_types.py b/src/whop_sdk/types/payment_method_types.py index 1a74b27a..c61cc63f 100644 --- a/src/whop_sdk/types/payment_method_types.py +++ b/src/whop_sdk/types/payment_method_types.py @@ -25,7 +25,6 @@ "cashapp", "claritypay", "coinbase", - "coinflow", "crypto", "custom", "customer_balance", diff --git a/src/whop_sdk/types/payment_provider.py b/src/whop_sdk/types/payment_provider.py index 748a6e2f..c2ba590b 100644 --- a/src/whop_sdk/types/payment_provider.py +++ b/src/whop_sdk/types/payment_provider.py @@ -17,5 +17,4 @@ "claritypay", "checkout_dot_com", "airwallex", - "coinflow", ] diff --git a/src/whop_sdk/types/receipt_tax_behavior.py b/src/whop_sdk/types/receipt_tax_behavior.py deleted file mode 100644 index 3d0ea68a..00000000 --- a/src/whop_sdk/types/receipt_tax_behavior.py +++ /dev/null @@ -1,7 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing_extensions import Literal, TypeAlias - -__all__ = ["ReceiptTaxBehavior"] - -ReceiptTaxBehavior: TypeAlias = Literal["exclusive", "inclusive", "unspecified", "unable_to_collect"] diff --git a/src/whop_sdk/types/refund_created_webhook_event.py b/src/whop_sdk/types/refund_created_webhook_event.py index 3d2d9655..cd83e28c 100644 --- a/src/whop_sdk/types/refund_created_webhook_event.py +++ b/src/whop_sdk/types/refund_created_webhook_event.py @@ -11,7 +11,6 @@ from .shared.currency import Currency from .payment_provider import PaymentProvider from .payment_method_types import PaymentMethodTypes -from .receipt_tax_behavior import ReceiptTaxBehavior from .refund_reference_type import RefundReferenceType from .refund_reference_status import RefundReferenceStatus from .shared.membership_status import MembershipStatus @@ -113,18 +112,6 @@ class DataPayment(BaseModel): subtotal: Optional[float] = None """The subtotal to show to the creator (excluding buyer fees).""" - tax_amount: Optional[float] = None - """The calculated amount of the sales/VAT tax (if applicable).""" - - tax_behavior: Optional[ReceiptTaxBehavior] = None - """ - The type of tax inclusivity applied to the receipt, for determining whether the - tax is included in the final price, or paid on top. - """ - - tax_refunded_amount: Optional[float] = None - """The amount of tax that has been refunded (if applicable).""" - total: Optional[float] = None """The total to show to the creator (excluding buyer fees).""" diff --git a/src/whop_sdk/types/refund_retrieve_response.py b/src/whop_sdk/types/refund_retrieve_response.py index 57fc6384..973ec6c3 100644 --- a/src/whop_sdk/types/refund_retrieve_response.py +++ b/src/whop_sdk/types/refund_retrieve_response.py @@ -10,7 +10,6 @@ from .shared.currency import Currency from .payment_provider import PaymentProvider from .payment_method_types import PaymentMethodTypes -from .receipt_tax_behavior import ReceiptTaxBehavior from .refund_reference_type import RefundReferenceType from .refund_reference_status import RefundReferenceStatus from .shared.membership_status import MembershipStatus @@ -105,18 +104,6 @@ class Payment(BaseModel): subtotal: Optional[float] = None """The subtotal to show to the creator (excluding buyer fees).""" - tax_amount: Optional[float] = None - """The calculated amount of the sales/VAT tax (if applicable).""" - - tax_behavior: Optional[ReceiptTaxBehavior] = None - """ - The type of tax inclusivity applied to the receipt, for determining whether the - tax is included in the final price, or paid on top. - """ - - tax_refunded_amount: Optional[float] = None - """The amount of tax that has been refunded (if applicable).""" - total: Optional[float] = None """The total to show to the creator (excluding buyer fees).""" diff --git a/src/whop_sdk/types/refund_updated_webhook_event.py b/src/whop_sdk/types/refund_updated_webhook_event.py index c5000b31..c7d7c86e 100644 --- a/src/whop_sdk/types/refund_updated_webhook_event.py +++ b/src/whop_sdk/types/refund_updated_webhook_event.py @@ -11,7 +11,6 @@ from .shared.currency import Currency from .payment_provider import PaymentProvider from .payment_method_types import PaymentMethodTypes -from .receipt_tax_behavior import ReceiptTaxBehavior from .refund_reference_type import RefundReferenceType from .refund_reference_status import RefundReferenceStatus from .shared.membership_status import MembershipStatus @@ -113,18 +112,6 @@ class DataPayment(BaseModel): subtotal: Optional[float] = None """The subtotal to show to the creator (excluding buyer fees).""" - tax_amount: Optional[float] = None - """The calculated amount of the sales/VAT tax (if applicable).""" - - tax_behavior: Optional[ReceiptTaxBehavior] = None - """ - The type of tax inclusivity applied to the receipt, for determining whether the - tax is included in the final price, or paid on top. - """ - - tax_refunded_amount: Optional[float] = None - """The amount of tax that has been refunded (if applicable).""" - total: Optional[float] = None """The total to show to the creator (excluding buyer fees).""" diff --git a/src/whop_sdk/types/shared/authorized_user_roles.py b/src/whop_sdk/types/shared/authorized_user_roles.py index 10d0fe2c..877db6d2 100644 --- a/src/whop_sdk/types/shared/authorized_user_roles.py +++ b/src/whop_sdk/types/shared/authorized_user_roles.py @@ -5,5 +5,5 @@ __all__ = ["AuthorizedUserRoles"] AuthorizedUserRoles: TypeAlias = Literal[ - "owner", "admin", "sales_manager", "moderator", "app_manager", "support", "manager", "custom" + "owner", "admin", "sales_manager", "moderator", "app_manager", "support", "manager" ] diff --git a/src/whop_sdk/types/shared/company.py b/src/whop_sdk/types/shared/company.py index 6f4bf53e..e30b8c1d 100644 --- a/src/whop_sdk/types/shared/company.py +++ b/src/whop_sdk/types/shared/company.py @@ -2,9 +2,9 @@ from typing import Dict, List, Optional from datetime import datetime +from typing_extensions import Literal from ..._models import BaseModel -from ..social_link_websites import SocialLinkWebsites __all__ = ["Company", "Logo", "OwnerUser", "SocialLink"] @@ -41,7 +41,7 @@ class SocialLink(BaseModel): url: str """The URL of the social media profile or external link.""" - website: SocialLinkWebsites + website: Literal["x", "instagram", "facebook", "tiktok", "youtube", "linkedin", "twitch", "website", "custom"] """The website""" diff --git a/src/whop_sdk/types/shared/forum_post.py b/src/whop_sdk/types/shared/forum_post.py index 7a6136d7..d3af3981 100644 --- a/src/whop_sdk/types/shared/forum_post.py +++ b/src/whop_sdk/types/shared/forum_post.py @@ -1,37 +1,11 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -from typing import List, Optional +from typing import Optional from datetime import datetime from ..._models import BaseModel -__all__ = ["ForumPost", "Attachment", "User"] - - -class Attachment(BaseModel): - """Represents an image attachment""" - - id: str - """Represents a unique identifier that is Base64 obfuscated. - - It is often used to refetch an object or as key for a cache. The ID type appears - in a JSON response as a String; however, it is not intended to be - human-readable. When expected as an input type, any string (such as - `"VXNlci0xMA=="`) or integer (such as `4`) input value will be accepted as an - ID. - """ - - content_type: Optional[str] = None - """The MIME type of the uploaded file (e.g., image/jpeg, video/mp4, audio/mpeg).""" - - filename: Optional[str] = None - """The original filename of the uploaded attachment, including its file extension.""" - - url: Optional[str] = None - """A pre-optimized URL for rendering this attachment on the client. - - This should be used for displaying attachments in apps. - """ +__all__ = ["ForumPost", "User"] class User(BaseModel): @@ -62,9 +36,6 @@ class ForumPost(BaseModel): ID. """ - attachments: List[Attachment] - """All file attachments on this post, such as images, documents, and videos.""" - comment_count: int """The total number of direct comments on this post.""" diff --git a/src/whop_sdk/types/shared/message.py b/src/whop_sdk/types/shared/message.py index a24f502d..5b0ad97d 100644 --- a/src/whop_sdk/types/shared/message.py +++ b/src/whop_sdk/types/shared/message.py @@ -87,15 +87,6 @@ class Message(BaseModel): is_pinned: bool """Whether this message is pinned to the top of the channel for easy access.""" - mentions: List[str] - """A list of user IDs that are explicitly mentioned in this message.""" - - mentions_everyone: bool - """ - Whether the message includes an @everyone mention that notifies all channel - members. - """ - message_type: DmsPostTypes """The classification of this message: regular, system, or automated.""" diff --git a/src/whop_sdk/types/shared/payment.py b/src/whop_sdk/types/shared/payment.py index 6993b54d..07f5c8d5 100644 --- a/src/whop_sdk/types/shared/payment.py +++ b/src/whop_sdk/types/shared/payment.py @@ -13,7 +13,6 @@ from ..dispute_statuses import DisputeStatuses from .membership_status import MembershipStatus from ..payment_method_types import PaymentMethodTypes -from ..receipt_tax_behavior import ReceiptTaxBehavior from .friendly_receipt_status import FriendlyReceiptStatus __all__ = [ @@ -510,18 +509,6 @@ class Payment(BaseModel): subtotal: Optional[float] = None """The subtotal to show to the creator (excluding buyer fees).""" - tax_amount: Optional[float] = None - """The calculated amount of the sales/VAT tax (if applicable).""" - - tax_behavior: Optional[ReceiptTaxBehavior] = None - """ - The type of tax inclusivity applied to the receipt, for determining whether the - tax is included in the final price, or paid on top. - """ - - tax_refunded_amount: Optional[float] = None - """The amount of tax that has been refunded (if applicable).""" - total: Optional[float] = None """The total to show to the creator (excluding buyer fees).""" diff --git a/src/whop_sdk/types/shared_params/authorized_user_roles.py b/src/whop_sdk/types/shared_params/authorized_user_roles.py index c61f3cc6..2235fde7 100644 --- a/src/whop_sdk/types/shared_params/authorized_user_roles.py +++ b/src/whop_sdk/types/shared_params/authorized_user_roles.py @@ -7,5 +7,5 @@ __all__ = ["AuthorizedUserRoles"] AuthorizedUserRoles: TypeAlias = Literal[ - "owner", "admin", "sales_manager", "moderator", "app_manager", "support", "manager", "custom" + "owner", "admin", "sales_manager", "moderator", "app_manager", "support", "manager" ] diff --git a/src/whop_sdk/types/social_link_websites.py b/src/whop_sdk/types/social_link_websites.py deleted file mode 100644 index 7e96a15d..00000000 --- a/src/whop_sdk/types/social_link_websites.py +++ /dev/null @@ -1,9 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing_extensions import Literal, TypeAlias - -__all__ = ["SocialLinkWebsites"] - -SocialLinkWebsites: TypeAlias = Literal[ - "x", "instagram", "facebook", "tiktok", "youtube", "linkedin", "twitch", "website", "custom" -] diff --git a/tests/api_resources/test_ai_chats.py b/tests/api_resources/test_ai_chats.py index 3f155d29..8681f573 100644 --- a/tests/api_resources/test_ai_chats.py +++ b/tests/api_resources/test_ai_chats.py @@ -38,7 +38,6 @@ def test_method_create_with_all_params(self, client: Whop) -> None: current_company_id="current_company_id", message_attachments=[{"id": "id"}], message_source="manual", - suggestion_type="suggestion_type", title="title", ) assert_matches_type(AIChat, ai_chat, path=["response"]) @@ -266,7 +265,6 @@ async def test_method_create_with_all_params(self, async_client: AsyncWhop) -> N current_company_id="current_company_id", message_attachments=[{"id": "id"}], message_source="manual", - suggestion_type="suggestion_type", title="title", ) assert_matches_type(AIChat, ai_chat, path=["response"]) diff --git a/tests/api_resources/test_authorized_users.py b/tests/api_resources/test_authorized_users.py index 945730cd..a0e6a63f 100644 --- a/tests/api_resources/test_authorized_users.py +++ b/tests/api_resources/test_authorized_users.py @@ -11,8 +11,6 @@ from tests.utils import assert_matches_type from whop_sdk.types import ( AuthorizedUserListResponse, - AuthorizedUserCreateResponse, - AuthorizedUserDeleteResponse, AuthorizedUserRetrieveResponse, ) from whop_sdk._utils import parse_datetime @@ -24,57 +22,6 @@ class TestAuthorizedUsers: parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"]) - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_create(self, client: Whop) -> None: - authorized_user = client.authorized_users.create( - company_id="biz_xxxxxxxxxxxxxx", - role="owner", - user_id="user_xxxxxxxxxxxxx", - ) - assert_matches_type(AuthorizedUserCreateResponse, authorized_user, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_create_with_all_params(self, client: Whop) -> None: - authorized_user = client.authorized_users.create( - company_id="biz_xxxxxxxxxxxxxx", - role="owner", - user_id="user_xxxxxxxxxxxxx", - send_emails=True, - ) - assert_matches_type(AuthorizedUserCreateResponse, authorized_user, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_create(self, client: Whop) -> None: - response = client.authorized_users.with_raw_response.create( - company_id="biz_xxxxxxxxxxxxxx", - role="owner", - user_id="user_xxxxxxxxxxxxx", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - authorized_user = response.parse() - assert_matches_type(AuthorizedUserCreateResponse, authorized_user, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_create(self, client: Whop) -> None: - with client.authorized_users.with_streaming_response.create( - company_id="biz_xxxxxxxxxxxxxx", - role="owner", - user_id="user_xxxxxxxxxxxxx", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - authorized_user = response.parse() - assert_matches_type(AuthorizedUserCreateResponse, authorized_user, path=["response"]) - - assert cast(Any, response.is_closed) is True - @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_method_retrieve(self, client: Whop) -> None: @@ -161,114 +108,12 @@ def test_streaming_response_list(self, client: Whop) -> None: assert cast(Any, response.is_closed) is True - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_delete(self, client: Whop) -> None: - authorized_user = client.authorized_users.delete( - id="ausr_xxxxxxxxxxxxx", - ) - assert_matches_type(AuthorizedUserDeleteResponse, authorized_user, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_delete_with_all_params(self, client: Whop) -> None: - authorized_user = client.authorized_users.delete( - id="ausr_xxxxxxxxxxxxx", - company_id="biz_xxxxxxxxxxxxxx", - ) - assert_matches_type(AuthorizedUserDeleteResponse, authorized_user, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_delete(self, client: Whop) -> None: - response = client.authorized_users.with_raw_response.delete( - id="ausr_xxxxxxxxxxxxx", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - authorized_user = response.parse() - assert_matches_type(AuthorizedUserDeleteResponse, authorized_user, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_delete(self, client: Whop) -> None: - with client.authorized_users.with_streaming_response.delete( - id="ausr_xxxxxxxxxxxxx", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - authorized_user = response.parse() - assert_matches_type(AuthorizedUserDeleteResponse, authorized_user, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_path_params_delete(self, client: Whop) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"): - client.authorized_users.with_raw_response.delete( - id="", - ) - class TestAsyncAuthorizedUsers: parametrize = pytest.mark.parametrize( "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"] ) - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_create(self, async_client: AsyncWhop) -> None: - authorized_user = await async_client.authorized_users.create( - company_id="biz_xxxxxxxxxxxxxx", - role="owner", - user_id="user_xxxxxxxxxxxxx", - ) - assert_matches_type(AuthorizedUserCreateResponse, authorized_user, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_create_with_all_params(self, async_client: AsyncWhop) -> None: - authorized_user = await async_client.authorized_users.create( - company_id="biz_xxxxxxxxxxxxxx", - role="owner", - user_id="user_xxxxxxxxxxxxx", - send_emails=True, - ) - assert_matches_type(AuthorizedUserCreateResponse, authorized_user, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_create(self, async_client: AsyncWhop) -> None: - response = await async_client.authorized_users.with_raw_response.create( - company_id="biz_xxxxxxxxxxxxxx", - role="owner", - user_id="user_xxxxxxxxxxxxx", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - authorized_user = await response.parse() - assert_matches_type(AuthorizedUserCreateResponse, authorized_user, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_create(self, async_client: AsyncWhop) -> None: - async with async_client.authorized_users.with_streaming_response.create( - company_id="biz_xxxxxxxxxxxxxx", - role="owner", - user_id="user_xxxxxxxxxxxxx", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - authorized_user = await response.parse() - assert_matches_type(AuthorizedUserCreateResponse, authorized_user, path=["response"]) - - assert cast(Any, response.is_closed) is True - @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_method_retrieve(self, async_client: AsyncWhop) -> None: @@ -354,54 +199,3 @@ async def test_streaming_response_list(self, async_client: AsyncWhop) -> None: assert_matches_type(AsyncCursorPage[AuthorizedUserListResponse], authorized_user, path=["response"]) assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_delete(self, async_client: AsyncWhop) -> None: - authorized_user = await async_client.authorized_users.delete( - id="ausr_xxxxxxxxxxxxx", - ) - assert_matches_type(AuthorizedUserDeleteResponse, authorized_user, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_delete_with_all_params(self, async_client: AsyncWhop) -> None: - authorized_user = await async_client.authorized_users.delete( - id="ausr_xxxxxxxxxxxxx", - company_id="biz_xxxxxxxxxxxxxx", - ) - assert_matches_type(AuthorizedUserDeleteResponse, authorized_user, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_delete(self, async_client: AsyncWhop) -> None: - response = await async_client.authorized_users.with_raw_response.delete( - id="ausr_xxxxxxxxxxxxx", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - authorized_user = await response.parse() - assert_matches_type(AuthorizedUserDeleteResponse, authorized_user, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_delete(self, async_client: AsyncWhop) -> None: - async with async_client.authorized_users.with_streaming_response.delete( - id="ausr_xxxxxxxxxxxxx", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - authorized_user = await response.parse() - assert_matches_type(AuthorizedUserDeleteResponse, authorized_user, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_path_params_delete(self, async_client: AsyncWhop) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"): - await async_client.authorized_users.with_raw_response.delete( - id="", - ) diff --git a/tests/api_resources/test_companies.py b/tests/api_resources/test_companies.py index 707ad468..30eb5ebd 100644 --- a/tests/api_resources/test_companies.py +++ b/tests/api_resources/test_companies.py @@ -130,16 +130,6 @@ def test_method_update_with_all_params(self, client: Whop) -> None: logo={"id": "id"}, route="route", send_customer_emails=True, - social_links=[ - { - "url": "https://example.com/path", - "website": "x", - "image": {"id": "id"}, - "order": "123.45", - "title": "title", - "website_order": "123.45", - } - ], target_audience="target_audience", title="title", ) @@ -336,16 +326,6 @@ async def test_method_update_with_all_params(self, async_client: AsyncWhop) -> N logo={"id": "id"}, route="route", send_customer_emails=True, - social_links=[ - { - "url": "https://example.com/path", - "website": "x", - "image": {"id": "id"}, - "order": "123.45", - "title": "title", - "website_order": "123.45", - } - ], target_audience="target_audience", title="title", ) diff --git a/tests/api_resources/test_forum_posts.py b/tests/api_resources/test_forum_posts.py index c02f5b99..ead26f5a 100644 --- a/tests/api_resources/test_forum_posts.py +++ b/tests/api_resources/test_forum_posts.py @@ -50,7 +50,6 @@ def test_method_create_with_all_params(self, client: Whop) -> None: } ] }, - rich_content="rich_content", title="title", visibility="members_only", ) @@ -262,7 +261,6 @@ async def test_method_create_with_all_params(self, async_client: AsyncWhop) -> N } ] }, - rich_content="rich_content", title="title", visibility="members_only", ) diff --git a/tests/api_resources/test_forums.py b/tests/api_resources/test_forums.py index 1b1fdfea..eef1173c 100644 --- a/tests/api_resources/test_forums.py +++ b/tests/api_resources/test_forums.py @@ -74,7 +74,6 @@ def test_method_update(self, client: Whop) -> None: def test_method_update_with_all_params(self, client: Whop) -> None: forum = client.forums.update( id="id", - banner_image={"id": "id"}, email_notification_preference="all_admin_posts", who_can_comment="everyone", who_can_post="everyone", @@ -223,7 +222,6 @@ async def test_method_update(self, async_client: AsyncWhop) -> None: async def test_method_update_with_all_params(self, async_client: AsyncWhop) -> None: forum = await async_client.forums.update( id="id", - banner_image={"id": "id"}, email_notification_preference="all_admin_posts", who_can_comment="everyone", who_can_post="everyone", diff --git a/tests/api_resources/test_invoices.py b/tests/api_resources/test_invoices.py index 8ff6287c..7db7c125 100644 --- a/tests/api_resources/test_invoices.py +++ b/tests/api_resources/test_invoices.py @@ -57,12 +57,6 @@ def test_method_create_with_all_params_overload_1(self, client: Whop) -> None: "expiration_days": 42, "initial_price": 6.9, "internal_notes": "internal_notes", - "legacy_payment_method_controls": True, - "payment_method_configuration": { - "disabled": ["acss_debit"], - "enabled": ["acss_debit"], - "include_platform_defaults": True, - }, "plan_type": "renewal", "release_method": "buy_now", "renewal_price": 6.9, @@ -156,12 +150,6 @@ def test_method_create_with_all_params_overload_2(self, client: Whop) -> None: "expiration_days": 42, "initial_price": 6.9, "internal_notes": "internal_notes", - "legacy_payment_method_controls": True, - "payment_method_configuration": { - "disabled": ["acss_debit"], - "enabled": ["acss_debit"], - "include_platform_defaults": True, - }, "plan_type": "renewal", "release_method": "buy_now", "renewal_price": 6.9, @@ -255,12 +243,6 @@ def test_method_create_with_all_params_overload_3(self, client: Whop) -> None: "expiration_days": 42, "initial_price": 6.9, "internal_notes": "internal_notes", - "legacy_payment_method_controls": True, - "payment_method_configuration": { - "disabled": ["acss_debit"], - "enabled": ["acss_debit"], - "include_platform_defaults": True, - }, "plan_type": "renewal", "release_method": "buy_now", "renewal_price": 6.9, @@ -351,12 +333,6 @@ def test_method_create_with_all_params_overload_4(self, client: Whop) -> None: "expiration_days": 42, "initial_price": 6.9, "internal_notes": "internal_notes", - "legacy_payment_method_controls": True, - "payment_method_configuration": { - "disabled": ["acss_debit"], - "enabled": ["acss_debit"], - "include_platform_defaults": True, - }, "plan_type": "renewal", "release_method": "buy_now", "renewal_price": 6.9, @@ -455,17 +431,19 @@ def test_path_params_retrieve(self, client: Whop) -> None: @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_method_list(self, client: Whop) -> None: - invoice = client.invoices.list() + invoice = client.invoices.list( + company_id="biz_xxxxxxxxxxxxxx", + ) assert_matches_type(SyncCursorPage[InvoiceListItem], invoice, path=["response"]) @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_method_list_with_all_params(self, client: Whop) -> None: invoice = client.invoices.list( + company_id="biz_xxxxxxxxxxxxxx", after="after", before="before", collection_methods=["send_invoice"], - company_id="biz_xxxxxxxxxxxxxx", created_after=parse_datetime("2023-12-01T05:00:00.401Z"), created_before=parse_datetime("2023-12-01T05:00:00.401Z"), direction="asc", @@ -480,7 +458,9 @@ def test_method_list_with_all_params(self, client: Whop) -> None: @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_raw_response_list(self, client: Whop) -> None: - response = client.invoices.with_raw_response.list() + response = client.invoices.with_raw_response.list( + company_id="biz_xxxxxxxxxxxxxx", + ) assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -490,7 +470,9 @@ def test_raw_response_list(self, client: Whop) -> None: @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_streaming_response_list(self, client: Whop) -> None: - with client.invoices.with_streaming_response.list() as response: + with client.invoices.with_streaming_response.list( + company_id="biz_xxxxxxxxxxxxxx", + ) as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -584,12 +566,6 @@ async def test_method_create_with_all_params_overload_1(self, async_client: Asyn "expiration_days": 42, "initial_price": 6.9, "internal_notes": "internal_notes", - "legacy_payment_method_controls": True, - "payment_method_configuration": { - "disabled": ["acss_debit"], - "enabled": ["acss_debit"], - "include_platform_defaults": True, - }, "plan_type": "renewal", "release_method": "buy_now", "renewal_price": 6.9, @@ -683,12 +659,6 @@ async def test_method_create_with_all_params_overload_2(self, async_client: Asyn "expiration_days": 42, "initial_price": 6.9, "internal_notes": "internal_notes", - "legacy_payment_method_controls": True, - "payment_method_configuration": { - "disabled": ["acss_debit"], - "enabled": ["acss_debit"], - "include_platform_defaults": True, - }, "plan_type": "renewal", "release_method": "buy_now", "renewal_price": 6.9, @@ -782,12 +752,6 @@ async def test_method_create_with_all_params_overload_3(self, async_client: Asyn "expiration_days": 42, "initial_price": 6.9, "internal_notes": "internal_notes", - "legacy_payment_method_controls": True, - "payment_method_configuration": { - "disabled": ["acss_debit"], - "enabled": ["acss_debit"], - "include_platform_defaults": True, - }, "plan_type": "renewal", "release_method": "buy_now", "renewal_price": 6.9, @@ -878,12 +842,6 @@ async def test_method_create_with_all_params_overload_4(self, async_client: Asyn "expiration_days": 42, "initial_price": 6.9, "internal_notes": "internal_notes", - "legacy_payment_method_controls": True, - "payment_method_configuration": { - "disabled": ["acss_debit"], - "enabled": ["acss_debit"], - "include_platform_defaults": True, - }, "plan_type": "renewal", "release_method": "buy_now", "renewal_price": 6.9, @@ -982,17 +940,19 @@ async def test_path_params_retrieve(self, async_client: AsyncWhop) -> None: @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_method_list(self, async_client: AsyncWhop) -> None: - invoice = await async_client.invoices.list() + invoice = await async_client.invoices.list( + company_id="biz_xxxxxxxxxxxxxx", + ) assert_matches_type(AsyncCursorPage[InvoiceListItem], invoice, path=["response"]) @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_method_list_with_all_params(self, async_client: AsyncWhop) -> None: invoice = await async_client.invoices.list( + company_id="biz_xxxxxxxxxxxxxx", after="after", before="before", collection_methods=["send_invoice"], - company_id="biz_xxxxxxxxxxxxxx", created_after=parse_datetime("2023-12-01T05:00:00.401Z"), created_before=parse_datetime("2023-12-01T05:00:00.401Z"), direction="asc", @@ -1007,7 +967,9 @@ async def test_method_list_with_all_params(self, async_client: AsyncWhop) -> Non @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_raw_response_list(self, async_client: AsyncWhop) -> None: - response = await async_client.invoices.with_raw_response.list() + response = await async_client.invoices.with_raw_response.list( + company_id="biz_xxxxxxxxxxxxxx", + ) assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -1017,7 +979,9 @@ async def test_raw_response_list(self, async_client: AsyncWhop) -> None: @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_streaming_response_list(self, async_client: AsyncWhop) -> None: - async with async_client.invoices.with_streaming_response.list() as response: + async with async_client.invoices.with_streaming_response.list( + company_id="biz_xxxxxxxxxxxxxx", + ) as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" diff --git a/tests/api_resources/test_memberships.py b/tests/api_resources/test_memberships.py index 69df8fcd..2972632c 100644 --- a/tests/api_resources/test_memberships.py +++ b/tests/api_resources/test_memberships.py @@ -165,52 +165,6 @@ def test_streaming_response_list(self, client: Whop) -> None: assert cast(Any, response.is_closed) is True - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_add_free_days(self, client: Whop) -> None: - membership = client.memberships.add_free_days( - id="mem_xxxxxxxxxxxxxx", - free_days=42, - ) - assert_matches_type(Membership, membership, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_add_free_days(self, client: Whop) -> None: - response = client.memberships.with_raw_response.add_free_days( - id="mem_xxxxxxxxxxxxxx", - free_days=42, - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - membership = response.parse() - assert_matches_type(Membership, membership, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_add_free_days(self, client: Whop) -> None: - with client.memberships.with_streaming_response.add_free_days( - id="mem_xxxxxxxxxxxxxx", - free_days=42, - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - membership = response.parse() - assert_matches_type(Membership, membership, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_path_params_add_free_days(self, client: Whop) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"): - client.memberships.with_raw_response.add_free_days( - id="", - free_days=42, - ) - @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_method_cancel(self, client: Whop) -> None: @@ -546,52 +500,6 @@ async def test_streaming_response_list(self, async_client: AsyncWhop) -> None: assert cast(Any, response.is_closed) is True - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_add_free_days(self, async_client: AsyncWhop) -> None: - membership = await async_client.memberships.add_free_days( - id="mem_xxxxxxxxxxxxxx", - free_days=42, - ) - assert_matches_type(Membership, membership, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_add_free_days(self, async_client: AsyncWhop) -> None: - response = await async_client.memberships.with_raw_response.add_free_days( - id="mem_xxxxxxxxxxxxxx", - free_days=42, - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - membership = await response.parse() - assert_matches_type(Membership, membership, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_add_free_days(self, async_client: AsyncWhop) -> None: - async with async_client.memberships.with_streaming_response.add_free_days( - id="mem_xxxxxxxxxxxxxx", - free_days=42, - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - membership = await response.parse() - assert_matches_type(Membership, membership, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_path_params_add_free_days(self, async_client: AsyncWhop) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"): - await async_client.memberships.with_raw_response.add_free_days( - id="", - free_days=42, - ) - @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_method_cancel(self, async_client: AsyncWhop) -> None: diff --git a/tests/api_resources/test_webhooks.py b/tests/api_resources/test_webhooks.py index fb41f430..be74c103 100644 --- a/tests/api_resources/test_webhooks.py +++ b/tests/api_resources/test_webhooks.py @@ -257,20 +257,9 @@ def test_path_params_delete(self, client: Whop) -> None: "", ) - @pytest.mark.parametrize( - "client_opt,method_opt", - [ - ("whsec_c2VjcmV0Cg==", None), - ("wrong", b"secret\n"), - ("wrong", "whsec_c2VjcmV0Cg=="), - (None, b"secret\n"), - (None, "whsec_c2VjcmV0Cg=="), - ], - ) - def test_method_unwrap(self, client: Whop, client_opt: str | None, method_opt: str | bytes | None) -> None: - hook = standardwebhooks.Webhook(b"secret\n") - - client = client.with_options(webhook_key=client_opt) + def test_method_unwrap(self, client: Whop) -> None: + key = b"secret" + hook = standardwebhooks.Webhook(key) data = """{"id":"msg_xxxxxxxxxxxxxxxxxxxxxxxx","api_version":"v1","data":{"id":"inv_xxxxxxxxxxxxxx","created_at":"2023-12-01T05:00:00.401Z","current_plan":{"id":"plan_xxxxxxxxxxxxx","currency":"usd","formatted_price":"$10.00"},"due_date":"2023-12-01T05:00:00.401Z","email_address":"customer@example.com","fetch_invoice_token":"eyJhbGciOiJIUzI1NiJ9...","number":"#0001","status":"draft","user":{"id":"user_xxxxxxxxxxxxx","name":"John Doe","username":"johndoe42"}},"timestamp":"2025-01-01T00:00:00.000Z","type":"invoice.created","company_id":"biz_xxxxxxxxxxxxxx"}""" msg_id = "1" @@ -283,7 +272,7 @@ def test_method_unwrap(self, client: Whop, client_opt: str | None, method_opt: s } try: - _ = client.webhooks.unwrap(data, headers=headers, key=method_opt) + _ = client.webhooks.unwrap(data, headers=headers, key=key) except standardwebhooks.WebhookVerificationError as e: raise AssertionError("Failed to unwrap valid webhook") from e @@ -294,7 +283,7 @@ def test_method_unwrap(self, client: Whop, client_opt: str | None, method_opt: s ] for bad_header in bad_headers: with pytest.raises(standardwebhooks.WebhookVerificationError): - _ = client.webhooks.unwrap(data, headers=bad_header, key=method_opt) + _ = client.webhooks.unwrap(data, headers=bad_header, key=key) class TestAsyncWebhooks: @@ -534,20 +523,9 @@ async def test_path_params_delete(self, async_client: AsyncWhop) -> None: "", ) - @pytest.mark.parametrize( - "client_opt,method_opt", - [ - ("whsec_c2VjcmV0Cg==", None), - ("wrong", b"secret\n"), - ("wrong", "whsec_c2VjcmV0Cg=="), - (None, b"secret\n"), - (None, "whsec_c2VjcmV0Cg=="), - ], - ) - def test_method_unwrap(self, async_client: Whop, client_opt: str | None, method_opt: str | bytes | None) -> None: - hook = standardwebhooks.Webhook(b"secret\n") - - async_client = async_client.with_options(webhook_key=client_opt) + def test_method_unwrap(self, client: Whop) -> None: + key = b"secret" + hook = standardwebhooks.Webhook(key) data = """{"id":"msg_xxxxxxxxxxxxxxxxxxxxxxxx","api_version":"v1","data":{"id":"inv_xxxxxxxxxxxxxx","created_at":"2023-12-01T05:00:00.401Z","current_plan":{"id":"plan_xxxxxxxxxxxxx","currency":"usd","formatted_price":"$10.00"},"due_date":"2023-12-01T05:00:00.401Z","email_address":"customer@example.com","fetch_invoice_token":"eyJhbGciOiJIUzI1NiJ9...","number":"#0001","status":"draft","user":{"id":"user_xxxxxxxxxxxxx","name":"John Doe","username":"johndoe42"}},"timestamp":"2025-01-01T00:00:00.000Z","type":"invoice.created","company_id":"biz_xxxxxxxxxxxxxx"}""" msg_id = "1" @@ -560,7 +538,7 @@ def test_method_unwrap(self, async_client: Whop, client_opt: str | None, method_ } try: - _ = async_client.webhooks.unwrap(data, headers=headers, key=method_opt) + _ = client.webhooks.unwrap(data, headers=headers, key=key) except standardwebhooks.WebhookVerificationError as e: raise AssertionError("Failed to unwrap valid webhook") from e @@ -571,4 +549,4 @@ def test_method_unwrap(self, async_client: Whop, client_opt: str | None, method_ ] for bad_header in bad_headers: with pytest.raises(standardwebhooks.WebhookVerificationError): - _ = async_client.webhooks.unwrap(data, headers=bad_header, key=method_opt) + _ = client.webhooks.unwrap(data, headers=bad_header, key=key) From 8adab9a9303dfe91d51f2efa072e13d2cefd5d56 Mon Sep 17 00:00:00 2001 From: Connor Stevens Date: Wed, 11 Mar 2026 14:32:27 -0400 Subject: [PATCH 2/3] Reapply "release: 0.1.0 (#35)" This reverts commit 805453f39f9c24f42ce6209e6a721c188c2c0fdf. --- .github/workflows/ci.yml | 8 +- .release-please-manifest.json | 2 +- .stats.yml | 8 +- CHANGELOG.md | 27 ++ api.md | 13 +- pyproject.toml | 2 +- src/whop_sdk/_client.py | 300 ++++++++++++++++++ src/whop_sdk/_version.py | 2 +- src/whop_sdk/resources/access_tokens.py | 4 + src/whop_sdk/resources/account_links.py | 4 + src/whop_sdk/resources/ai_chats.py | 14 + src/whop_sdk/resources/app_builds.py | 4 + src/whop_sdk/resources/apps.py | 4 + src/whop_sdk/resources/authorized_users.py | 244 +++++++++++++- src/whop_sdk/resources/chat_channels.py | 4 + .../resources/checkout_configurations.py | 4 + src/whop_sdk/resources/companies.py | 16 +- .../resources/company_token_transactions.py | 4 + src/whop_sdk/resources/course_chapters.py | 4 + .../resources/course_lesson_interactions.py | 4 + src/whop_sdk/resources/course_lessons.py | 4 + src/whop_sdk/resources/course_students.py | 4 + src/whop_sdk/resources/courses.py | 4 + src/whop_sdk/resources/dispute_alerts.py | 4 + src/whop_sdk/resources/disputes.py | 4 + src/whop_sdk/resources/dm_channels.py | 4 + src/whop_sdk/resources/dm_members.py | 4 + src/whop_sdk/resources/entries.py | 4 + src/whop_sdk/resources/experiences.py | 4 + src/whop_sdk/resources/fee_markups.py | 4 + src/whop_sdk/resources/files.py | 4 + src/whop_sdk/resources/forum_posts.py | 14 + src/whop_sdk/resources/forums.py | 14 + src/whop_sdk/resources/invoices.py | 32 +- src/whop_sdk/resources/leads.py | 4 + src/whop_sdk/resources/ledger_accounts.py | 4 + src/whop_sdk/resources/members.py | 4 + src/whop_sdk/resources/memberships.py | 113 ++++++- src/whop_sdk/resources/messages.py | 4 + src/whop_sdk/resources/notifications.py | 4 + src/whop_sdk/resources/payment_methods.py | 4 + src/whop_sdk/resources/payments.py | 4 + src/whop_sdk/resources/payout_methods.py | 4 + src/whop_sdk/resources/plans.py | 4 + src/whop_sdk/resources/products.py | 4 + src/whop_sdk/resources/promo_codes.py | 4 + src/whop_sdk/resources/reactions.py | 4 + src/whop_sdk/resources/refunds.py | 4 + src/whop_sdk/resources/reviews.py | 4 + src/whop_sdk/resources/setup_intents.py | 4 + src/whop_sdk/resources/shipments.py | 4 + src/whop_sdk/resources/support_channels.py | 4 + src/whop_sdk/resources/topups.py | 4 + src/whop_sdk/resources/transfers.py | 4 + src/whop_sdk/resources/users.py | 4 + src/whop_sdk/resources/verifications.py | 4 + src/whop_sdk/resources/webhooks.py | 4 + src/whop_sdk/resources/withdrawals.py | 4 + src/whop_sdk/types/__init__.py | 7 + src/whop_sdk/types/ai_chat_create_params.py | 6 + .../types/authorized_user_create_params.py | 27 ++ .../types/authorized_user_create_response.py | 55 ++++ .../types/authorized_user_delete_params.py | 16 + .../types/authorized_user_delete_response.py | 7 + src/whop_sdk/types/company_update_params.py | 42 ++- .../types/forum_post_create_params.py | 6 + .../types/forum_post_list_response.py | 33 +- src/whop_sdk/types/forum_update_params.py | 20 +- src/whop_sdk/types/invoice_create_params.py | 155 ++++++++- src/whop_sdk/types/invoice_list_params.py | 8 +- .../types/membership_add_free_days_params.py | 16 + src/whop_sdk/types/message_list_response.py | 9 + src/whop_sdk/types/payment_list_response.py | 10 + src/whop_sdk/types/payment_method_types.py | 1 + src/whop_sdk/types/payment_provider.py | 1 + src/whop_sdk/types/receipt_tax_behavior.py | 7 + .../types/refund_created_webhook_event.py | 13 + .../types/refund_retrieve_response.py | 13 + .../types/refund_updated_webhook_event.py | 13 + .../types/shared/authorized_user_roles.py | 2 +- src/whop_sdk/types/shared/company.py | 4 +- src/whop_sdk/types/shared/forum_post.py | 33 +- src/whop_sdk/types/shared/message.py | 9 + src/whop_sdk/types/shared/payment.py | 13 + .../shared_params/authorized_user_roles.py | 2 +- src/whop_sdk/types/social_link_websites.py | 9 + tests/api_resources/test_ai_chats.py | 2 + tests/api_resources/test_authorized_users.py | 206 ++++++++++++ tests/api_resources/test_companies.py | 20 ++ tests/api_resources/test_forum_posts.py | 2 + tests/api_resources/test_forums.py | 2 + tests/api_resources/test_invoices.py | 76 +++-- tests/api_resources/test_memberships.py | 92 ++++++ tests/api_resources/test_webhooks.py | 42 ++- 94 files changed, 1877 insertions(+), 83 deletions(-) create mode 100644 src/whop_sdk/types/authorized_user_create_params.py create mode 100644 src/whop_sdk/types/authorized_user_create_response.py create mode 100644 src/whop_sdk/types/authorized_user_delete_params.py create mode 100644 src/whop_sdk/types/authorized_user_delete_response.py create mode 100644 src/whop_sdk/types/membership_add_free_days_params.py create mode 100644 src/whop_sdk/types/receipt_tax_behavior.py create mode 100644 src/whop_sdk/types/social_link_websites.py diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index eefc48ef..f93be0ea 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -61,14 +61,18 @@ jobs: run: rye build - name: Get GitHub OIDC Token - if: github.repository == 'stainless-sdks/whopsdk-python' + if: |- + github.repository == 'stainless-sdks/whopsdk-python' && + !startsWith(github.ref, 'refs/heads/stl/') id: github-oidc uses: actions/github-script@v8 with: script: core.setOutput('github_token', await core.getIDToken()); - name: Upload tarball - if: github.repository == 'stainless-sdks/whopsdk-python' + if: |- + github.repository == 'stainless-sdks/whopsdk-python' && + !startsWith(github.ref, 'refs/heads/stl/') env: URL: https://pkg.stainless.com/s AUTH: ${{ steps.github-oidc.outputs.github_token }} diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 34ac707c..3d2ac0bd 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.0.30" + ".": "0.1.0" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index f91f6ee2..cbc67135 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ -configured_endpoints: 173 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/frostedinc%2Fwhopsdk-cc6caefebc5d0c5b09a38a2ca3de9b07a8af8017a45a3a8ae4687eea30e5df93.yml -openapi_spec_hash: 384c511adb0c53319ac3ece08843f485 -config_hash: 8ac153ea57fa6460b13cded3f7c9c7a6 +configured_endpoints: 176 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/frostedinc%2Fwhopsdk-f49331e3fb23d1041f941c72c6ee9924dfa47634889ed5209244207c8ea0586e.yml +openapi_spec_hash: 93d6cef1312ed0cbe6b2b6616c535ebf +config_hash: 71004ac2f2a6283ca55db1065c47e5f6 diff --git a/CHANGELOG.md b/CHANGELOG.md index dd2e1246..eb73b72b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,32 @@ # Changelog +## 0.1.0 (2026-03-10) + +Full Changelog: [v0.0.30...v0.1.0](https://github.com/whopio/whopsdk-python/compare/v0.0.30...v0.1.0) + +### Features + +* **api:** api update ([99175a1](https://github.com/whopio/whopsdk-python/commit/99175a149a05f6c54b225447a163b958af8ae61c)) +* **api:** api update ([fe17d66](https://github.com/whopio/whopsdk-python/commit/fe17d66f82035b4e58f474bfd136bf78114aaeab)) +* **api:** api update ([2ee7fe7](https://github.com/whopio/whopsdk-python/commit/2ee7fe71e837e7f91ed021b58217abaf89782879)) +* **api:** api update ([260853e](https://github.com/whopio/whopsdk-python/commit/260853e5ec3e85481b25da49ec4252b8b773e81a)) +* **api:** api update ([dcef405](https://github.com/whopio/whopsdk-python/commit/dcef4059c4ce8e9fdffa7d2aba850f325c53fb57)) +* **api:** api update ([abc268f](https://github.com/whopio/whopsdk-python/commit/abc268f2c7a2d59ed01e6fd595aaf3559b831302)) +* **api:** api update ([2f4cd94](https://github.com/whopio/whopsdk-python/commit/2f4cd94cdca591d743dd905f9b325d25fe45acb8)) +* **api:** api update ([ad1d5b7](https://github.com/whopio/whopsdk-python/commit/ad1d5b78546c5efd4214e22c42aa7a64227bc34c)) +* **api:** api update ([c2f142d](https://github.com/whopio/whopsdk-python/commit/c2f142d7aebad6ec2b140d70a8b93aa3205290ec)) +* **api:** api update ([d62a4b7](https://github.com/whopio/whopsdk-python/commit/d62a4b7961c1264d9c4055a026238a72822b8b19)) +* **api:** api update ([c60ab1e](https://github.com/whopio/whopsdk-python/commit/c60ab1e6568cef6910ec61773887c8b9546c52d4)) +* **api:** api update ([020c181](https://github.com/whopio/whopsdk-python/commit/020c181cf53f7811401fe01d4382fe490e6e5398)) +* **api:** manual updates ([b162886](https://github.com/whopio/whopsdk-python/commit/b1628865df13ae4d703571e46e738405652ad150)) + + +### Chores + +* **ci:** skip uploading artifacts on stainless-internal branches ([04a3a6d](https://github.com/whopio/whopsdk-python/commit/04a3a6d8263e34b42b476380846af4d4f31deedd)) +* **docs:** add missing descriptions ([beeb9ef](https://github.com/whopio/whopsdk-python/commit/beeb9efca946b1bc2e565239ac96d3d2d8642b6f)) +* **tests:** update webhook tests ([f740d3c](https://github.com/whopio/whopsdk-python/commit/f740d3c6d32e332ecea2ec902e9903c36055443e)) + ## 0.0.30 (2026-02-26) Full Changelog: [v0.0.29...v0.0.30](https://github.com/whopio/whopsdk-python/compare/v0.0.29...v0.0.30) diff --git a/api.md b/api.md index 679a9af1..cb3e0091 100644 --- a/api.md +++ b/api.md @@ -121,7 +121,7 @@ Methods: Types: ```python -from whop_sdk.types import CompanyListResponse +from whop_sdk.types import SocialLinkWebsites, CompanyListResponse ``` Methods: @@ -268,6 +268,7 @@ Methods: - client.memberships.retrieve(id) -> Membership - client.memberships.update(id, \*\*params) -> Membership - client.memberships.list(\*\*params) -> SyncCursorPage[MembershipListResponse] +- client.memberships.add_free_days(id, \*\*params) -> Membership - client.memberships.cancel(id, \*\*params) -> Membership - client.memberships.pause(id, \*\*params) -> Membership - client.memberships.resume(id) -> Membership @@ -278,13 +279,20 @@ Methods: Types: ```python -from whop_sdk.types import AuthorizedUserRetrieveResponse, AuthorizedUserListResponse +from whop_sdk.types import ( + AuthorizedUserCreateResponse, + AuthorizedUserRetrieveResponse, + AuthorizedUserListResponse, + AuthorizedUserDeleteResponse, +) ``` Methods: +- client.authorized_users.create(\*\*params) -> AuthorizedUserCreateResponse - client.authorized_users.retrieve(id) -> AuthorizedUserRetrieveResponse - client.authorized_users.list(\*\*params) -> SyncCursorPage[AuthorizedUserListResponse] +- client.authorized_users.delete(id, \*\*params) -> AuthorizedUserDeleteResponse # AppBuilds @@ -382,6 +390,7 @@ from whop_sdk.types import ( BillingReasons, CardBrands, PaymentMethodTypes, + ReceiptTaxBehavior, PaymentListResponse, PaymentListFeesResponse, ) diff --git a/pyproject.toml b/pyproject.toml index 80fe5263..9279b720 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "whop-sdk" -version = "0.0.30" +version = "0.1.0" description = "The official Python library for the Whop API" dynamic = ["readme"] license = "Apache-2.0" diff --git a/src/whop_sdk/_client.py b/src/whop_sdk/_client.py index 65a4f492..ae5d5c9f 100644 --- a/src/whop_sdk/_client.py +++ b/src/whop_sdk/_client.py @@ -215,300 +215,350 @@ def __init__( @cached_property def apps(self) -> AppsResource: + """Apps""" from .resources.apps import AppsResource return AppsResource(self) @cached_property def invoices(self) -> InvoicesResource: + """Invoices""" from .resources.invoices import InvoicesResource return InvoicesResource(self) @cached_property def course_lesson_interactions(self) -> CourseLessonInteractionsResource: + """Course lesson interactions""" from .resources.course_lesson_interactions import CourseLessonInteractionsResource return CourseLessonInteractionsResource(self) @cached_property def products(self) -> ProductsResource: + """Products""" from .resources.products import ProductsResource return ProductsResource(self) @cached_property def companies(self) -> CompaniesResource: + """Companies""" from .resources.companies import CompaniesResource return CompaniesResource(self) @cached_property def webhooks(self) -> WebhooksResource: + """Webhooks""" from .resources.webhooks import WebhooksResource return WebhooksResource(self) @cached_property def plans(self) -> PlansResource: + """Plans""" from .resources.plans import PlansResource return PlansResource(self) @cached_property def entries(self) -> EntriesResource: + """Entries""" from .resources.entries import EntriesResource return EntriesResource(self) @cached_property def forum_posts(self) -> ForumPostsResource: + """Forum posts""" from .resources.forum_posts import ForumPostsResource return ForumPostsResource(self) @cached_property def transfers(self) -> TransfersResource: + """Transfers""" from .resources.transfers import TransfersResource return TransfersResource(self) @cached_property def ledger_accounts(self) -> LedgerAccountsResource: + """Ledger accounts""" from .resources.ledger_accounts import LedgerAccountsResource return LedgerAccountsResource(self) @cached_property def memberships(self) -> MembershipsResource: + """Memberships""" from .resources.memberships import MembershipsResource return MembershipsResource(self) @cached_property def authorized_users(self) -> AuthorizedUsersResource: + """Authorized users""" from .resources.authorized_users import AuthorizedUsersResource return AuthorizedUsersResource(self) @cached_property def app_builds(self) -> AppBuildsResource: + """App builds""" from .resources.app_builds import AppBuildsResource return AppBuildsResource(self) @cached_property def shipments(self) -> ShipmentsResource: + """Shipments""" from .resources.shipments import ShipmentsResource return ShipmentsResource(self) @cached_property def checkout_configurations(self) -> CheckoutConfigurationsResource: + """Checkout configurations""" from .resources.checkout_configurations import CheckoutConfigurationsResource return CheckoutConfigurationsResource(self) @cached_property def messages(self) -> MessagesResource: + """Messages""" from .resources.messages import MessagesResource return MessagesResource(self) @cached_property def chat_channels(self) -> ChatChannelsResource: + """Chat channels""" from .resources.chat_channels import ChatChannelsResource return ChatChannelsResource(self) @cached_property def users(self) -> UsersResource: + """Users""" from .resources.users import UsersResource return UsersResource(self) @cached_property def payments(self) -> PaymentsResource: + """Payments""" from .resources.payments import PaymentsResource return PaymentsResource(self) @cached_property def support_channels(self) -> SupportChannelsResource: + """Support channels""" from .resources.support_channels import SupportChannelsResource return SupportChannelsResource(self) @cached_property def experiences(self) -> ExperiencesResource: + """Experiences""" from .resources.experiences import ExperiencesResource return ExperiencesResource(self) @cached_property def reactions(self) -> ReactionsResource: + """Reactions""" from .resources.reactions import ReactionsResource return ReactionsResource(self) @cached_property def members(self) -> MembersResource: + """Members""" from .resources.members import MembersResource return MembersResource(self) @cached_property def forums(self) -> ForumsResource: + """Forums""" from .resources.forums import ForumsResource return ForumsResource(self) @cached_property def promo_codes(self) -> PromoCodesResource: + """Promo codes""" from .resources.promo_codes import PromoCodesResource return PromoCodesResource(self) @cached_property def courses(self) -> CoursesResource: + """Courses""" from .resources.courses import CoursesResource return CoursesResource(self) @cached_property def course_chapters(self) -> CourseChaptersResource: + """Course chapters""" from .resources.course_chapters import CourseChaptersResource return CourseChaptersResource(self) @cached_property def course_lessons(self) -> CourseLessonsResource: + """Course lessons""" from .resources.course_lessons import CourseLessonsResource return CourseLessonsResource(self) @cached_property def reviews(self) -> ReviewsResource: + """Reviews""" from .resources.reviews import ReviewsResource return ReviewsResource(self) @cached_property def course_students(self) -> CourseStudentsResource: + """Course students""" from .resources.course_students import CourseStudentsResource return CourseStudentsResource(self) @cached_property def access_tokens(self) -> AccessTokensResource: + """Access tokens""" from .resources.access_tokens import AccessTokensResource return AccessTokensResource(self) @cached_property def notifications(self) -> NotificationsResource: + """Notifications""" from .resources.notifications import NotificationsResource return NotificationsResource(self) @cached_property def disputes(self) -> DisputesResource: + """Disputes""" from .resources.disputes import DisputesResource return DisputesResource(self) @cached_property def refunds(self) -> RefundsResource: + """Refunds""" from .resources.refunds import RefundsResource return RefundsResource(self) @cached_property def withdrawals(self) -> WithdrawalsResource: + """Withdrawals""" from .resources.withdrawals import WithdrawalsResource return WithdrawalsResource(self) @cached_property def account_links(self) -> AccountLinksResource: + """Account links""" from .resources.account_links import AccountLinksResource return AccountLinksResource(self) @cached_property def setup_intents(self) -> SetupIntentsResource: + """Setup intents""" from .resources.setup_intents import SetupIntentsResource return SetupIntentsResource(self) @cached_property def payment_methods(self) -> PaymentMethodsResource: + """Payment methods""" from .resources.payment_methods import PaymentMethodsResource return PaymentMethodsResource(self) @cached_property def fee_markups(self) -> FeeMarkupsResource: + """Fee markups""" from .resources.fee_markups import FeeMarkupsResource return FeeMarkupsResource(self) @cached_property def payout_methods(self) -> PayoutMethodsResource: + """Payout methods""" from .resources.payout_methods import PayoutMethodsResource return PayoutMethodsResource(self) @cached_property def verifications(self) -> VerificationsResource: + """Verifications""" from .resources.verifications import VerificationsResource return VerificationsResource(self) @cached_property def leads(self) -> LeadsResource: + """Leads""" from .resources.leads import LeadsResource return LeadsResource(self) @cached_property def topups(self) -> TopupsResource: + """Topups""" from .resources.topups import TopupsResource return TopupsResource(self) @cached_property def files(self) -> FilesResource: + """Files""" from .resources.files import FilesResource return FilesResource(self) @cached_property def company_token_transactions(self) -> CompanyTokenTransactionsResource: + """Company token transactions""" from .resources.company_token_transactions import CompanyTokenTransactionsResource return CompanyTokenTransactionsResource(self) @cached_property def dm_members(self) -> DmMembersResource: + """Dm members""" from .resources.dm_members import DmMembersResource return DmMembersResource(self) @cached_property def ai_chats(self) -> AIChatsResource: + """Ai chats""" from .resources.ai_chats import AIChatsResource return AIChatsResource(self) @cached_property def dm_channels(self) -> DmChannelsResource: + """Dm channels""" from .resources.dm_channels import DmChannelsResource return DmChannelsResource(self) @cached_property def dispute_alerts(self) -> DisputeAlertsResource: + """Dispute alerts""" from .resources.dispute_alerts import DisputeAlertsResource return DisputeAlertsResource(self) @@ -703,300 +753,350 @@ def __init__( @cached_property def apps(self) -> AsyncAppsResource: + """Apps""" from .resources.apps import AsyncAppsResource return AsyncAppsResource(self) @cached_property def invoices(self) -> AsyncInvoicesResource: + """Invoices""" from .resources.invoices import AsyncInvoicesResource return AsyncInvoicesResource(self) @cached_property def course_lesson_interactions(self) -> AsyncCourseLessonInteractionsResource: + """Course lesson interactions""" from .resources.course_lesson_interactions import AsyncCourseLessonInteractionsResource return AsyncCourseLessonInteractionsResource(self) @cached_property def products(self) -> AsyncProductsResource: + """Products""" from .resources.products import AsyncProductsResource return AsyncProductsResource(self) @cached_property def companies(self) -> AsyncCompaniesResource: + """Companies""" from .resources.companies import AsyncCompaniesResource return AsyncCompaniesResource(self) @cached_property def webhooks(self) -> AsyncWebhooksResource: + """Webhooks""" from .resources.webhooks import AsyncWebhooksResource return AsyncWebhooksResource(self) @cached_property def plans(self) -> AsyncPlansResource: + """Plans""" from .resources.plans import AsyncPlansResource return AsyncPlansResource(self) @cached_property def entries(self) -> AsyncEntriesResource: + """Entries""" from .resources.entries import AsyncEntriesResource return AsyncEntriesResource(self) @cached_property def forum_posts(self) -> AsyncForumPostsResource: + """Forum posts""" from .resources.forum_posts import AsyncForumPostsResource return AsyncForumPostsResource(self) @cached_property def transfers(self) -> AsyncTransfersResource: + """Transfers""" from .resources.transfers import AsyncTransfersResource return AsyncTransfersResource(self) @cached_property def ledger_accounts(self) -> AsyncLedgerAccountsResource: + """Ledger accounts""" from .resources.ledger_accounts import AsyncLedgerAccountsResource return AsyncLedgerAccountsResource(self) @cached_property def memberships(self) -> AsyncMembershipsResource: + """Memberships""" from .resources.memberships import AsyncMembershipsResource return AsyncMembershipsResource(self) @cached_property def authorized_users(self) -> AsyncAuthorizedUsersResource: + """Authorized users""" from .resources.authorized_users import AsyncAuthorizedUsersResource return AsyncAuthorizedUsersResource(self) @cached_property def app_builds(self) -> AsyncAppBuildsResource: + """App builds""" from .resources.app_builds import AsyncAppBuildsResource return AsyncAppBuildsResource(self) @cached_property def shipments(self) -> AsyncShipmentsResource: + """Shipments""" from .resources.shipments import AsyncShipmentsResource return AsyncShipmentsResource(self) @cached_property def checkout_configurations(self) -> AsyncCheckoutConfigurationsResource: + """Checkout configurations""" from .resources.checkout_configurations import AsyncCheckoutConfigurationsResource return AsyncCheckoutConfigurationsResource(self) @cached_property def messages(self) -> AsyncMessagesResource: + """Messages""" from .resources.messages import AsyncMessagesResource return AsyncMessagesResource(self) @cached_property def chat_channels(self) -> AsyncChatChannelsResource: + """Chat channels""" from .resources.chat_channels import AsyncChatChannelsResource return AsyncChatChannelsResource(self) @cached_property def users(self) -> AsyncUsersResource: + """Users""" from .resources.users import AsyncUsersResource return AsyncUsersResource(self) @cached_property def payments(self) -> AsyncPaymentsResource: + """Payments""" from .resources.payments import AsyncPaymentsResource return AsyncPaymentsResource(self) @cached_property def support_channels(self) -> AsyncSupportChannelsResource: + """Support channels""" from .resources.support_channels import AsyncSupportChannelsResource return AsyncSupportChannelsResource(self) @cached_property def experiences(self) -> AsyncExperiencesResource: + """Experiences""" from .resources.experiences import AsyncExperiencesResource return AsyncExperiencesResource(self) @cached_property def reactions(self) -> AsyncReactionsResource: + """Reactions""" from .resources.reactions import AsyncReactionsResource return AsyncReactionsResource(self) @cached_property def members(self) -> AsyncMembersResource: + """Members""" from .resources.members import AsyncMembersResource return AsyncMembersResource(self) @cached_property def forums(self) -> AsyncForumsResource: + """Forums""" from .resources.forums import AsyncForumsResource return AsyncForumsResource(self) @cached_property def promo_codes(self) -> AsyncPromoCodesResource: + """Promo codes""" from .resources.promo_codes import AsyncPromoCodesResource return AsyncPromoCodesResource(self) @cached_property def courses(self) -> AsyncCoursesResource: + """Courses""" from .resources.courses import AsyncCoursesResource return AsyncCoursesResource(self) @cached_property def course_chapters(self) -> AsyncCourseChaptersResource: + """Course chapters""" from .resources.course_chapters import AsyncCourseChaptersResource return AsyncCourseChaptersResource(self) @cached_property def course_lessons(self) -> AsyncCourseLessonsResource: + """Course lessons""" from .resources.course_lessons import AsyncCourseLessonsResource return AsyncCourseLessonsResource(self) @cached_property def reviews(self) -> AsyncReviewsResource: + """Reviews""" from .resources.reviews import AsyncReviewsResource return AsyncReviewsResource(self) @cached_property def course_students(self) -> AsyncCourseStudentsResource: + """Course students""" from .resources.course_students import AsyncCourseStudentsResource return AsyncCourseStudentsResource(self) @cached_property def access_tokens(self) -> AsyncAccessTokensResource: + """Access tokens""" from .resources.access_tokens import AsyncAccessTokensResource return AsyncAccessTokensResource(self) @cached_property def notifications(self) -> AsyncNotificationsResource: + """Notifications""" from .resources.notifications import AsyncNotificationsResource return AsyncNotificationsResource(self) @cached_property def disputes(self) -> AsyncDisputesResource: + """Disputes""" from .resources.disputes import AsyncDisputesResource return AsyncDisputesResource(self) @cached_property def refunds(self) -> AsyncRefundsResource: + """Refunds""" from .resources.refunds import AsyncRefundsResource return AsyncRefundsResource(self) @cached_property def withdrawals(self) -> AsyncWithdrawalsResource: + """Withdrawals""" from .resources.withdrawals import AsyncWithdrawalsResource return AsyncWithdrawalsResource(self) @cached_property def account_links(self) -> AsyncAccountLinksResource: + """Account links""" from .resources.account_links import AsyncAccountLinksResource return AsyncAccountLinksResource(self) @cached_property def setup_intents(self) -> AsyncSetupIntentsResource: + """Setup intents""" from .resources.setup_intents import AsyncSetupIntentsResource return AsyncSetupIntentsResource(self) @cached_property def payment_methods(self) -> AsyncPaymentMethodsResource: + """Payment methods""" from .resources.payment_methods import AsyncPaymentMethodsResource return AsyncPaymentMethodsResource(self) @cached_property def fee_markups(self) -> AsyncFeeMarkupsResource: + """Fee markups""" from .resources.fee_markups import AsyncFeeMarkupsResource return AsyncFeeMarkupsResource(self) @cached_property def payout_methods(self) -> AsyncPayoutMethodsResource: + """Payout methods""" from .resources.payout_methods import AsyncPayoutMethodsResource return AsyncPayoutMethodsResource(self) @cached_property def verifications(self) -> AsyncVerificationsResource: + """Verifications""" from .resources.verifications import AsyncVerificationsResource return AsyncVerificationsResource(self) @cached_property def leads(self) -> AsyncLeadsResource: + """Leads""" from .resources.leads import AsyncLeadsResource return AsyncLeadsResource(self) @cached_property def topups(self) -> AsyncTopupsResource: + """Topups""" from .resources.topups import AsyncTopupsResource return AsyncTopupsResource(self) @cached_property def files(self) -> AsyncFilesResource: + """Files""" from .resources.files import AsyncFilesResource return AsyncFilesResource(self) @cached_property def company_token_transactions(self) -> AsyncCompanyTokenTransactionsResource: + """Company token transactions""" from .resources.company_token_transactions import AsyncCompanyTokenTransactionsResource return AsyncCompanyTokenTransactionsResource(self) @cached_property def dm_members(self) -> AsyncDmMembersResource: + """Dm members""" from .resources.dm_members import AsyncDmMembersResource return AsyncDmMembersResource(self) @cached_property def ai_chats(self) -> AsyncAIChatsResource: + """Ai chats""" from .resources.ai_chats import AsyncAIChatsResource return AsyncAIChatsResource(self) @cached_property def dm_channels(self) -> AsyncDmChannelsResource: + """Dm channels""" from .resources.dm_channels import AsyncDmChannelsResource return AsyncDmChannelsResource(self) @cached_property def dispute_alerts(self) -> AsyncDisputeAlertsResource: + """Dispute alerts""" from .resources.dispute_alerts import AsyncDisputeAlertsResource return AsyncDisputeAlertsResource(self) @@ -1127,300 +1227,350 @@ def __init__(self, client: Whop) -> None: @cached_property def apps(self) -> apps.AppsResourceWithRawResponse: + """Apps""" from .resources.apps import AppsResourceWithRawResponse return AppsResourceWithRawResponse(self._client.apps) @cached_property def invoices(self) -> invoices.InvoicesResourceWithRawResponse: + """Invoices""" from .resources.invoices import InvoicesResourceWithRawResponse return InvoicesResourceWithRawResponse(self._client.invoices) @cached_property def course_lesson_interactions(self) -> course_lesson_interactions.CourseLessonInteractionsResourceWithRawResponse: + """Course lesson interactions""" from .resources.course_lesson_interactions import CourseLessonInteractionsResourceWithRawResponse return CourseLessonInteractionsResourceWithRawResponse(self._client.course_lesson_interactions) @cached_property def products(self) -> products.ProductsResourceWithRawResponse: + """Products""" from .resources.products import ProductsResourceWithRawResponse return ProductsResourceWithRawResponse(self._client.products) @cached_property def companies(self) -> companies.CompaniesResourceWithRawResponse: + """Companies""" from .resources.companies import CompaniesResourceWithRawResponse return CompaniesResourceWithRawResponse(self._client.companies) @cached_property def webhooks(self) -> webhooks.WebhooksResourceWithRawResponse: + """Webhooks""" from .resources.webhooks import WebhooksResourceWithRawResponse return WebhooksResourceWithRawResponse(self._client.webhooks) @cached_property def plans(self) -> plans.PlansResourceWithRawResponse: + """Plans""" from .resources.plans import PlansResourceWithRawResponse return PlansResourceWithRawResponse(self._client.plans) @cached_property def entries(self) -> entries.EntriesResourceWithRawResponse: + """Entries""" from .resources.entries import EntriesResourceWithRawResponse return EntriesResourceWithRawResponse(self._client.entries) @cached_property def forum_posts(self) -> forum_posts.ForumPostsResourceWithRawResponse: + """Forum posts""" from .resources.forum_posts import ForumPostsResourceWithRawResponse return ForumPostsResourceWithRawResponse(self._client.forum_posts) @cached_property def transfers(self) -> transfers.TransfersResourceWithRawResponse: + """Transfers""" from .resources.transfers import TransfersResourceWithRawResponse return TransfersResourceWithRawResponse(self._client.transfers) @cached_property def ledger_accounts(self) -> ledger_accounts.LedgerAccountsResourceWithRawResponse: + """Ledger accounts""" from .resources.ledger_accounts import LedgerAccountsResourceWithRawResponse return LedgerAccountsResourceWithRawResponse(self._client.ledger_accounts) @cached_property def memberships(self) -> memberships.MembershipsResourceWithRawResponse: + """Memberships""" from .resources.memberships import MembershipsResourceWithRawResponse return MembershipsResourceWithRawResponse(self._client.memberships) @cached_property def authorized_users(self) -> authorized_users.AuthorizedUsersResourceWithRawResponse: + """Authorized users""" from .resources.authorized_users import AuthorizedUsersResourceWithRawResponse return AuthorizedUsersResourceWithRawResponse(self._client.authorized_users) @cached_property def app_builds(self) -> app_builds.AppBuildsResourceWithRawResponse: + """App builds""" from .resources.app_builds import AppBuildsResourceWithRawResponse return AppBuildsResourceWithRawResponse(self._client.app_builds) @cached_property def shipments(self) -> shipments.ShipmentsResourceWithRawResponse: + """Shipments""" from .resources.shipments import ShipmentsResourceWithRawResponse return ShipmentsResourceWithRawResponse(self._client.shipments) @cached_property def checkout_configurations(self) -> checkout_configurations.CheckoutConfigurationsResourceWithRawResponse: + """Checkout configurations""" from .resources.checkout_configurations import CheckoutConfigurationsResourceWithRawResponse return CheckoutConfigurationsResourceWithRawResponse(self._client.checkout_configurations) @cached_property def messages(self) -> messages.MessagesResourceWithRawResponse: + """Messages""" from .resources.messages import MessagesResourceWithRawResponse return MessagesResourceWithRawResponse(self._client.messages) @cached_property def chat_channels(self) -> chat_channels.ChatChannelsResourceWithRawResponse: + """Chat channels""" from .resources.chat_channels import ChatChannelsResourceWithRawResponse return ChatChannelsResourceWithRawResponse(self._client.chat_channels) @cached_property def users(self) -> users.UsersResourceWithRawResponse: + """Users""" from .resources.users import UsersResourceWithRawResponse return UsersResourceWithRawResponse(self._client.users) @cached_property def payments(self) -> payments.PaymentsResourceWithRawResponse: + """Payments""" from .resources.payments import PaymentsResourceWithRawResponse return PaymentsResourceWithRawResponse(self._client.payments) @cached_property def support_channels(self) -> support_channels.SupportChannelsResourceWithRawResponse: + """Support channels""" from .resources.support_channels import SupportChannelsResourceWithRawResponse return SupportChannelsResourceWithRawResponse(self._client.support_channels) @cached_property def experiences(self) -> experiences.ExperiencesResourceWithRawResponse: + """Experiences""" from .resources.experiences import ExperiencesResourceWithRawResponse return ExperiencesResourceWithRawResponse(self._client.experiences) @cached_property def reactions(self) -> reactions.ReactionsResourceWithRawResponse: + """Reactions""" from .resources.reactions import ReactionsResourceWithRawResponse return ReactionsResourceWithRawResponse(self._client.reactions) @cached_property def members(self) -> members.MembersResourceWithRawResponse: + """Members""" from .resources.members import MembersResourceWithRawResponse return MembersResourceWithRawResponse(self._client.members) @cached_property def forums(self) -> forums.ForumsResourceWithRawResponse: + """Forums""" from .resources.forums import ForumsResourceWithRawResponse return ForumsResourceWithRawResponse(self._client.forums) @cached_property def promo_codes(self) -> promo_codes.PromoCodesResourceWithRawResponse: + """Promo codes""" from .resources.promo_codes import PromoCodesResourceWithRawResponse return PromoCodesResourceWithRawResponse(self._client.promo_codes) @cached_property def courses(self) -> courses.CoursesResourceWithRawResponse: + """Courses""" from .resources.courses import CoursesResourceWithRawResponse return CoursesResourceWithRawResponse(self._client.courses) @cached_property def course_chapters(self) -> course_chapters.CourseChaptersResourceWithRawResponse: + """Course chapters""" from .resources.course_chapters import CourseChaptersResourceWithRawResponse return CourseChaptersResourceWithRawResponse(self._client.course_chapters) @cached_property def course_lessons(self) -> course_lessons.CourseLessonsResourceWithRawResponse: + """Course lessons""" from .resources.course_lessons import CourseLessonsResourceWithRawResponse return CourseLessonsResourceWithRawResponse(self._client.course_lessons) @cached_property def reviews(self) -> reviews.ReviewsResourceWithRawResponse: + """Reviews""" from .resources.reviews import ReviewsResourceWithRawResponse return ReviewsResourceWithRawResponse(self._client.reviews) @cached_property def course_students(self) -> course_students.CourseStudentsResourceWithRawResponse: + """Course students""" from .resources.course_students import CourseStudentsResourceWithRawResponse return CourseStudentsResourceWithRawResponse(self._client.course_students) @cached_property def access_tokens(self) -> access_tokens.AccessTokensResourceWithRawResponse: + """Access tokens""" from .resources.access_tokens import AccessTokensResourceWithRawResponse return AccessTokensResourceWithRawResponse(self._client.access_tokens) @cached_property def notifications(self) -> notifications.NotificationsResourceWithRawResponse: + """Notifications""" from .resources.notifications import NotificationsResourceWithRawResponse return NotificationsResourceWithRawResponse(self._client.notifications) @cached_property def disputes(self) -> disputes.DisputesResourceWithRawResponse: + """Disputes""" from .resources.disputes import DisputesResourceWithRawResponse return DisputesResourceWithRawResponse(self._client.disputes) @cached_property def refunds(self) -> refunds.RefundsResourceWithRawResponse: + """Refunds""" from .resources.refunds import RefundsResourceWithRawResponse return RefundsResourceWithRawResponse(self._client.refunds) @cached_property def withdrawals(self) -> withdrawals.WithdrawalsResourceWithRawResponse: + """Withdrawals""" from .resources.withdrawals import WithdrawalsResourceWithRawResponse return WithdrawalsResourceWithRawResponse(self._client.withdrawals) @cached_property def account_links(self) -> account_links.AccountLinksResourceWithRawResponse: + """Account links""" from .resources.account_links import AccountLinksResourceWithRawResponse return AccountLinksResourceWithRawResponse(self._client.account_links) @cached_property def setup_intents(self) -> setup_intents.SetupIntentsResourceWithRawResponse: + """Setup intents""" from .resources.setup_intents import SetupIntentsResourceWithRawResponse return SetupIntentsResourceWithRawResponse(self._client.setup_intents) @cached_property def payment_methods(self) -> payment_methods.PaymentMethodsResourceWithRawResponse: + """Payment methods""" from .resources.payment_methods import PaymentMethodsResourceWithRawResponse return PaymentMethodsResourceWithRawResponse(self._client.payment_methods) @cached_property def fee_markups(self) -> fee_markups.FeeMarkupsResourceWithRawResponse: + """Fee markups""" from .resources.fee_markups import FeeMarkupsResourceWithRawResponse return FeeMarkupsResourceWithRawResponse(self._client.fee_markups) @cached_property def payout_methods(self) -> payout_methods.PayoutMethodsResourceWithRawResponse: + """Payout methods""" from .resources.payout_methods import PayoutMethodsResourceWithRawResponse return PayoutMethodsResourceWithRawResponse(self._client.payout_methods) @cached_property def verifications(self) -> verifications.VerificationsResourceWithRawResponse: + """Verifications""" from .resources.verifications import VerificationsResourceWithRawResponse return VerificationsResourceWithRawResponse(self._client.verifications) @cached_property def leads(self) -> leads.LeadsResourceWithRawResponse: + """Leads""" from .resources.leads import LeadsResourceWithRawResponse return LeadsResourceWithRawResponse(self._client.leads) @cached_property def topups(self) -> topups.TopupsResourceWithRawResponse: + """Topups""" from .resources.topups import TopupsResourceWithRawResponse return TopupsResourceWithRawResponse(self._client.topups) @cached_property def files(self) -> files.FilesResourceWithRawResponse: + """Files""" from .resources.files import FilesResourceWithRawResponse return FilesResourceWithRawResponse(self._client.files) @cached_property def company_token_transactions(self) -> company_token_transactions.CompanyTokenTransactionsResourceWithRawResponse: + """Company token transactions""" from .resources.company_token_transactions import CompanyTokenTransactionsResourceWithRawResponse return CompanyTokenTransactionsResourceWithRawResponse(self._client.company_token_transactions) @cached_property def dm_members(self) -> dm_members.DmMembersResourceWithRawResponse: + """Dm members""" from .resources.dm_members import DmMembersResourceWithRawResponse return DmMembersResourceWithRawResponse(self._client.dm_members) @cached_property def ai_chats(self) -> ai_chats.AIChatsResourceWithRawResponse: + """Ai chats""" from .resources.ai_chats import AIChatsResourceWithRawResponse return AIChatsResourceWithRawResponse(self._client.ai_chats) @cached_property def dm_channels(self) -> dm_channels.DmChannelsResourceWithRawResponse: + """Dm channels""" from .resources.dm_channels import DmChannelsResourceWithRawResponse return DmChannelsResourceWithRawResponse(self._client.dm_channels) @cached_property def dispute_alerts(self) -> dispute_alerts.DisputeAlertsResourceWithRawResponse: + """Dispute alerts""" from .resources.dispute_alerts import DisputeAlertsResourceWithRawResponse return DisputeAlertsResourceWithRawResponse(self._client.dispute_alerts) @@ -1434,12 +1584,14 @@ def __init__(self, client: AsyncWhop) -> None: @cached_property def apps(self) -> apps.AsyncAppsResourceWithRawResponse: + """Apps""" from .resources.apps import AsyncAppsResourceWithRawResponse return AsyncAppsResourceWithRawResponse(self._client.apps) @cached_property def invoices(self) -> invoices.AsyncInvoicesResourceWithRawResponse: + """Invoices""" from .resources.invoices import AsyncInvoicesResourceWithRawResponse return AsyncInvoicesResourceWithRawResponse(self._client.invoices) @@ -1448,258 +1600,301 @@ def invoices(self) -> invoices.AsyncInvoicesResourceWithRawResponse: def course_lesson_interactions( self, ) -> course_lesson_interactions.AsyncCourseLessonInteractionsResourceWithRawResponse: + """Course lesson interactions""" from .resources.course_lesson_interactions import AsyncCourseLessonInteractionsResourceWithRawResponse return AsyncCourseLessonInteractionsResourceWithRawResponse(self._client.course_lesson_interactions) @cached_property def products(self) -> products.AsyncProductsResourceWithRawResponse: + """Products""" from .resources.products import AsyncProductsResourceWithRawResponse return AsyncProductsResourceWithRawResponse(self._client.products) @cached_property def companies(self) -> companies.AsyncCompaniesResourceWithRawResponse: + """Companies""" from .resources.companies import AsyncCompaniesResourceWithRawResponse return AsyncCompaniesResourceWithRawResponse(self._client.companies) @cached_property def webhooks(self) -> webhooks.AsyncWebhooksResourceWithRawResponse: + """Webhooks""" from .resources.webhooks import AsyncWebhooksResourceWithRawResponse return AsyncWebhooksResourceWithRawResponse(self._client.webhooks) @cached_property def plans(self) -> plans.AsyncPlansResourceWithRawResponse: + """Plans""" from .resources.plans import AsyncPlansResourceWithRawResponse return AsyncPlansResourceWithRawResponse(self._client.plans) @cached_property def entries(self) -> entries.AsyncEntriesResourceWithRawResponse: + """Entries""" from .resources.entries import AsyncEntriesResourceWithRawResponse return AsyncEntriesResourceWithRawResponse(self._client.entries) @cached_property def forum_posts(self) -> forum_posts.AsyncForumPostsResourceWithRawResponse: + """Forum posts""" from .resources.forum_posts import AsyncForumPostsResourceWithRawResponse return AsyncForumPostsResourceWithRawResponse(self._client.forum_posts) @cached_property def transfers(self) -> transfers.AsyncTransfersResourceWithRawResponse: + """Transfers""" from .resources.transfers import AsyncTransfersResourceWithRawResponse return AsyncTransfersResourceWithRawResponse(self._client.transfers) @cached_property def ledger_accounts(self) -> ledger_accounts.AsyncLedgerAccountsResourceWithRawResponse: + """Ledger accounts""" from .resources.ledger_accounts import AsyncLedgerAccountsResourceWithRawResponse return AsyncLedgerAccountsResourceWithRawResponse(self._client.ledger_accounts) @cached_property def memberships(self) -> memberships.AsyncMembershipsResourceWithRawResponse: + """Memberships""" from .resources.memberships import AsyncMembershipsResourceWithRawResponse return AsyncMembershipsResourceWithRawResponse(self._client.memberships) @cached_property def authorized_users(self) -> authorized_users.AsyncAuthorizedUsersResourceWithRawResponse: + """Authorized users""" from .resources.authorized_users import AsyncAuthorizedUsersResourceWithRawResponse return AsyncAuthorizedUsersResourceWithRawResponse(self._client.authorized_users) @cached_property def app_builds(self) -> app_builds.AsyncAppBuildsResourceWithRawResponse: + """App builds""" from .resources.app_builds import AsyncAppBuildsResourceWithRawResponse return AsyncAppBuildsResourceWithRawResponse(self._client.app_builds) @cached_property def shipments(self) -> shipments.AsyncShipmentsResourceWithRawResponse: + """Shipments""" from .resources.shipments import AsyncShipmentsResourceWithRawResponse return AsyncShipmentsResourceWithRawResponse(self._client.shipments) @cached_property def checkout_configurations(self) -> checkout_configurations.AsyncCheckoutConfigurationsResourceWithRawResponse: + """Checkout configurations""" from .resources.checkout_configurations import AsyncCheckoutConfigurationsResourceWithRawResponse return AsyncCheckoutConfigurationsResourceWithRawResponse(self._client.checkout_configurations) @cached_property def messages(self) -> messages.AsyncMessagesResourceWithRawResponse: + """Messages""" from .resources.messages import AsyncMessagesResourceWithRawResponse return AsyncMessagesResourceWithRawResponse(self._client.messages) @cached_property def chat_channels(self) -> chat_channels.AsyncChatChannelsResourceWithRawResponse: + """Chat channels""" from .resources.chat_channels import AsyncChatChannelsResourceWithRawResponse return AsyncChatChannelsResourceWithRawResponse(self._client.chat_channels) @cached_property def users(self) -> users.AsyncUsersResourceWithRawResponse: + """Users""" from .resources.users import AsyncUsersResourceWithRawResponse return AsyncUsersResourceWithRawResponse(self._client.users) @cached_property def payments(self) -> payments.AsyncPaymentsResourceWithRawResponse: + """Payments""" from .resources.payments import AsyncPaymentsResourceWithRawResponse return AsyncPaymentsResourceWithRawResponse(self._client.payments) @cached_property def support_channels(self) -> support_channels.AsyncSupportChannelsResourceWithRawResponse: + """Support channels""" from .resources.support_channels import AsyncSupportChannelsResourceWithRawResponse return AsyncSupportChannelsResourceWithRawResponse(self._client.support_channels) @cached_property def experiences(self) -> experiences.AsyncExperiencesResourceWithRawResponse: + """Experiences""" from .resources.experiences import AsyncExperiencesResourceWithRawResponse return AsyncExperiencesResourceWithRawResponse(self._client.experiences) @cached_property def reactions(self) -> reactions.AsyncReactionsResourceWithRawResponse: + """Reactions""" from .resources.reactions import AsyncReactionsResourceWithRawResponse return AsyncReactionsResourceWithRawResponse(self._client.reactions) @cached_property def members(self) -> members.AsyncMembersResourceWithRawResponse: + """Members""" from .resources.members import AsyncMembersResourceWithRawResponse return AsyncMembersResourceWithRawResponse(self._client.members) @cached_property def forums(self) -> forums.AsyncForumsResourceWithRawResponse: + """Forums""" from .resources.forums import AsyncForumsResourceWithRawResponse return AsyncForumsResourceWithRawResponse(self._client.forums) @cached_property def promo_codes(self) -> promo_codes.AsyncPromoCodesResourceWithRawResponse: + """Promo codes""" from .resources.promo_codes import AsyncPromoCodesResourceWithRawResponse return AsyncPromoCodesResourceWithRawResponse(self._client.promo_codes) @cached_property def courses(self) -> courses.AsyncCoursesResourceWithRawResponse: + """Courses""" from .resources.courses import AsyncCoursesResourceWithRawResponse return AsyncCoursesResourceWithRawResponse(self._client.courses) @cached_property def course_chapters(self) -> course_chapters.AsyncCourseChaptersResourceWithRawResponse: + """Course chapters""" from .resources.course_chapters import AsyncCourseChaptersResourceWithRawResponse return AsyncCourseChaptersResourceWithRawResponse(self._client.course_chapters) @cached_property def course_lessons(self) -> course_lessons.AsyncCourseLessonsResourceWithRawResponse: + """Course lessons""" from .resources.course_lessons import AsyncCourseLessonsResourceWithRawResponse return AsyncCourseLessonsResourceWithRawResponse(self._client.course_lessons) @cached_property def reviews(self) -> reviews.AsyncReviewsResourceWithRawResponse: + """Reviews""" from .resources.reviews import AsyncReviewsResourceWithRawResponse return AsyncReviewsResourceWithRawResponse(self._client.reviews) @cached_property def course_students(self) -> course_students.AsyncCourseStudentsResourceWithRawResponse: + """Course students""" from .resources.course_students import AsyncCourseStudentsResourceWithRawResponse return AsyncCourseStudentsResourceWithRawResponse(self._client.course_students) @cached_property def access_tokens(self) -> access_tokens.AsyncAccessTokensResourceWithRawResponse: + """Access tokens""" from .resources.access_tokens import AsyncAccessTokensResourceWithRawResponse return AsyncAccessTokensResourceWithRawResponse(self._client.access_tokens) @cached_property def notifications(self) -> notifications.AsyncNotificationsResourceWithRawResponse: + """Notifications""" from .resources.notifications import AsyncNotificationsResourceWithRawResponse return AsyncNotificationsResourceWithRawResponse(self._client.notifications) @cached_property def disputes(self) -> disputes.AsyncDisputesResourceWithRawResponse: + """Disputes""" from .resources.disputes import AsyncDisputesResourceWithRawResponse return AsyncDisputesResourceWithRawResponse(self._client.disputes) @cached_property def refunds(self) -> refunds.AsyncRefundsResourceWithRawResponse: + """Refunds""" from .resources.refunds import AsyncRefundsResourceWithRawResponse return AsyncRefundsResourceWithRawResponse(self._client.refunds) @cached_property def withdrawals(self) -> withdrawals.AsyncWithdrawalsResourceWithRawResponse: + """Withdrawals""" from .resources.withdrawals import AsyncWithdrawalsResourceWithRawResponse return AsyncWithdrawalsResourceWithRawResponse(self._client.withdrawals) @cached_property def account_links(self) -> account_links.AsyncAccountLinksResourceWithRawResponse: + """Account links""" from .resources.account_links import AsyncAccountLinksResourceWithRawResponse return AsyncAccountLinksResourceWithRawResponse(self._client.account_links) @cached_property def setup_intents(self) -> setup_intents.AsyncSetupIntentsResourceWithRawResponse: + """Setup intents""" from .resources.setup_intents import AsyncSetupIntentsResourceWithRawResponse return AsyncSetupIntentsResourceWithRawResponse(self._client.setup_intents) @cached_property def payment_methods(self) -> payment_methods.AsyncPaymentMethodsResourceWithRawResponse: + """Payment methods""" from .resources.payment_methods import AsyncPaymentMethodsResourceWithRawResponse return AsyncPaymentMethodsResourceWithRawResponse(self._client.payment_methods) @cached_property def fee_markups(self) -> fee_markups.AsyncFeeMarkupsResourceWithRawResponse: + """Fee markups""" from .resources.fee_markups import AsyncFeeMarkupsResourceWithRawResponse return AsyncFeeMarkupsResourceWithRawResponse(self._client.fee_markups) @cached_property def payout_methods(self) -> payout_methods.AsyncPayoutMethodsResourceWithRawResponse: + """Payout methods""" from .resources.payout_methods import AsyncPayoutMethodsResourceWithRawResponse return AsyncPayoutMethodsResourceWithRawResponse(self._client.payout_methods) @cached_property def verifications(self) -> verifications.AsyncVerificationsResourceWithRawResponse: + """Verifications""" from .resources.verifications import AsyncVerificationsResourceWithRawResponse return AsyncVerificationsResourceWithRawResponse(self._client.verifications) @cached_property def leads(self) -> leads.AsyncLeadsResourceWithRawResponse: + """Leads""" from .resources.leads import AsyncLeadsResourceWithRawResponse return AsyncLeadsResourceWithRawResponse(self._client.leads) @cached_property def topups(self) -> topups.AsyncTopupsResourceWithRawResponse: + """Topups""" from .resources.topups import AsyncTopupsResourceWithRawResponse return AsyncTopupsResourceWithRawResponse(self._client.topups) @cached_property def files(self) -> files.AsyncFilesResourceWithRawResponse: + """Files""" from .resources.files import AsyncFilesResourceWithRawResponse return AsyncFilesResourceWithRawResponse(self._client.files) @@ -1708,30 +1903,35 @@ def files(self) -> files.AsyncFilesResourceWithRawResponse: def company_token_transactions( self, ) -> company_token_transactions.AsyncCompanyTokenTransactionsResourceWithRawResponse: + """Company token transactions""" from .resources.company_token_transactions import AsyncCompanyTokenTransactionsResourceWithRawResponse return AsyncCompanyTokenTransactionsResourceWithRawResponse(self._client.company_token_transactions) @cached_property def dm_members(self) -> dm_members.AsyncDmMembersResourceWithRawResponse: + """Dm members""" from .resources.dm_members import AsyncDmMembersResourceWithRawResponse return AsyncDmMembersResourceWithRawResponse(self._client.dm_members) @cached_property def ai_chats(self) -> ai_chats.AsyncAIChatsResourceWithRawResponse: + """Ai chats""" from .resources.ai_chats import AsyncAIChatsResourceWithRawResponse return AsyncAIChatsResourceWithRawResponse(self._client.ai_chats) @cached_property def dm_channels(self) -> dm_channels.AsyncDmChannelsResourceWithRawResponse: + """Dm channels""" from .resources.dm_channels import AsyncDmChannelsResourceWithRawResponse return AsyncDmChannelsResourceWithRawResponse(self._client.dm_channels) @cached_property def dispute_alerts(self) -> dispute_alerts.AsyncDisputeAlertsResourceWithRawResponse: + """Dispute alerts""" from .resources.dispute_alerts import AsyncDisputeAlertsResourceWithRawResponse return AsyncDisputeAlertsResourceWithRawResponse(self._client.dispute_alerts) @@ -1745,12 +1945,14 @@ def __init__(self, client: Whop) -> None: @cached_property def apps(self) -> apps.AppsResourceWithStreamingResponse: + """Apps""" from .resources.apps import AppsResourceWithStreamingResponse return AppsResourceWithStreamingResponse(self._client.apps) @cached_property def invoices(self) -> invoices.InvoicesResourceWithStreamingResponse: + """Invoices""" from .resources.invoices import InvoicesResourceWithStreamingResponse return InvoicesResourceWithStreamingResponse(self._client.invoices) @@ -1759,258 +1961,301 @@ def invoices(self) -> invoices.InvoicesResourceWithStreamingResponse: def course_lesson_interactions( self, ) -> course_lesson_interactions.CourseLessonInteractionsResourceWithStreamingResponse: + """Course lesson interactions""" from .resources.course_lesson_interactions import CourseLessonInteractionsResourceWithStreamingResponse return CourseLessonInteractionsResourceWithStreamingResponse(self._client.course_lesson_interactions) @cached_property def products(self) -> products.ProductsResourceWithStreamingResponse: + """Products""" from .resources.products import ProductsResourceWithStreamingResponse return ProductsResourceWithStreamingResponse(self._client.products) @cached_property def companies(self) -> companies.CompaniesResourceWithStreamingResponse: + """Companies""" from .resources.companies import CompaniesResourceWithStreamingResponse return CompaniesResourceWithStreamingResponse(self._client.companies) @cached_property def webhooks(self) -> webhooks.WebhooksResourceWithStreamingResponse: + """Webhooks""" from .resources.webhooks import WebhooksResourceWithStreamingResponse return WebhooksResourceWithStreamingResponse(self._client.webhooks) @cached_property def plans(self) -> plans.PlansResourceWithStreamingResponse: + """Plans""" from .resources.plans import PlansResourceWithStreamingResponse return PlansResourceWithStreamingResponse(self._client.plans) @cached_property def entries(self) -> entries.EntriesResourceWithStreamingResponse: + """Entries""" from .resources.entries import EntriesResourceWithStreamingResponse return EntriesResourceWithStreamingResponse(self._client.entries) @cached_property def forum_posts(self) -> forum_posts.ForumPostsResourceWithStreamingResponse: + """Forum posts""" from .resources.forum_posts import ForumPostsResourceWithStreamingResponse return ForumPostsResourceWithStreamingResponse(self._client.forum_posts) @cached_property def transfers(self) -> transfers.TransfersResourceWithStreamingResponse: + """Transfers""" from .resources.transfers import TransfersResourceWithStreamingResponse return TransfersResourceWithStreamingResponse(self._client.transfers) @cached_property def ledger_accounts(self) -> ledger_accounts.LedgerAccountsResourceWithStreamingResponse: + """Ledger accounts""" from .resources.ledger_accounts import LedgerAccountsResourceWithStreamingResponse return LedgerAccountsResourceWithStreamingResponse(self._client.ledger_accounts) @cached_property def memberships(self) -> memberships.MembershipsResourceWithStreamingResponse: + """Memberships""" from .resources.memberships import MembershipsResourceWithStreamingResponse return MembershipsResourceWithStreamingResponse(self._client.memberships) @cached_property def authorized_users(self) -> authorized_users.AuthorizedUsersResourceWithStreamingResponse: + """Authorized users""" from .resources.authorized_users import AuthorizedUsersResourceWithStreamingResponse return AuthorizedUsersResourceWithStreamingResponse(self._client.authorized_users) @cached_property def app_builds(self) -> app_builds.AppBuildsResourceWithStreamingResponse: + """App builds""" from .resources.app_builds import AppBuildsResourceWithStreamingResponse return AppBuildsResourceWithStreamingResponse(self._client.app_builds) @cached_property def shipments(self) -> shipments.ShipmentsResourceWithStreamingResponse: + """Shipments""" from .resources.shipments import ShipmentsResourceWithStreamingResponse return ShipmentsResourceWithStreamingResponse(self._client.shipments) @cached_property def checkout_configurations(self) -> checkout_configurations.CheckoutConfigurationsResourceWithStreamingResponse: + """Checkout configurations""" from .resources.checkout_configurations import CheckoutConfigurationsResourceWithStreamingResponse return CheckoutConfigurationsResourceWithStreamingResponse(self._client.checkout_configurations) @cached_property def messages(self) -> messages.MessagesResourceWithStreamingResponse: + """Messages""" from .resources.messages import MessagesResourceWithStreamingResponse return MessagesResourceWithStreamingResponse(self._client.messages) @cached_property def chat_channels(self) -> chat_channels.ChatChannelsResourceWithStreamingResponse: + """Chat channels""" from .resources.chat_channels import ChatChannelsResourceWithStreamingResponse return ChatChannelsResourceWithStreamingResponse(self._client.chat_channels) @cached_property def users(self) -> users.UsersResourceWithStreamingResponse: + """Users""" from .resources.users import UsersResourceWithStreamingResponse return UsersResourceWithStreamingResponse(self._client.users) @cached_property def payments(self) -> payments.PaymentsResourceWithStreamingResponse: + """Payments""" from .resources.payments import PaymentsResourceWithStreamingResponse return PaymentsResourceWithStreamingResponse(self._client.payments) @cached_property def support_channels(self) -> support_channels.SupportChannelsResourceWithStreamingResponse: + """Support channels""" from .resources.support_channels import SupportChannelsResourceWithStreamingResponse return SupportChannelsResourceWithStreamingResponse(self._client.support_channels) @cached_property def experiences(self) -> experiences.ExperiencesResourceWithStreamingResponse: + """Experiences""" from .resources.experiences import ExperiencesResourceWithStreamingResponse return ExperiencesResourceWithStreamingResponse(self._client.experiences) @cached_property def reactions(self) -> reactions.ReactionsResourceWithStreamingResponse: + """Reactions""" from .resources.reactions import ReactionsResourceWithStreamingResponse return ReactionsResourceWithStreamingResponse(self._client.reactions) @cached_property def members(self) -> members.MembersResourceWithStreamingResponse: + """Members""" from .resources.members import MembersResourceWithStreamingResponse return MembersResourceWithStreamingResponse(self._client.members) @cached_property def forums(self) -> forums.ForumsResourceWithStreamingResponse: + """Forums""" from .resources.forums import ForumsResourceWithStreamingResponse return ForumsResourceWithStreamingResponse(self._client.forums) @cached_property def promo_codes(self) -> promo_codes.PromoCodesResourceWithStreamingResponse: + """Promo codes""" from .resources.promo_codes import PromoCodesResourceWithStreamingResponse return PromoCodesResourceWithStreamingResponse(self._client.promo_codes) @cached_property def courses(self) -> courses.CoursesResourceWithStreamingResponse: + """Courses""" from .resources.courses import CoursesResourceWithStreamingResponse return CoursesResourceWithStreamingResponse(self._client.courses) @cached_property def course_chapters(self) -> course_chapters.CourseChaptersResourceWithStreamingResponse: + """Course chapters""" from .resources.course_chapters import CourseChaptersResourceWithStreamingResponse return CourseChaptersResourceWithStreamingResponse(self._client.course_chapters) @cached_property def course_lessons(self) -> course_lessons.CourseLessonsResourceWithStreamingResponse: + """Course lessons""" from .resources.course_lessons import CourseLessonsResourceWithStreamingResponse return CourseLessonsResourceWithStreamingResponse(self._client.course_lessons) @cached_property def reviews(self) -> reviews.ReviewsResourceWithStreamingResponse: + """Reviews""" from .resources.reviews import ReviewsResourceWithStreamingResponse return ReviewsResourceWithStreamingResponse(self._client.reviews) @cached_property def course_students(self) -> course_students.CourseStudentsResourceWithStreamingResponse: + """Course students""" from .resources.course_students import CourseStudentsResourceWithStreamingResponse return CourseStudentsResourceWithStreamingResponse(self._client.course_students) @cached_property def access_tokens(self) -> access_tokens.AccessTokensResourceWithStreamingResponse: + """Access tokens""" from .resources.access_tokens import AccessTokensResourceWithStreamingResponse return AccessTokensResourceWithStreamingResponse(self._client.access_tokens) @cached_property def notifications(self) -> notifications.NotificationsResourceWithStreamingResponse: + """Notifications""" from .resources.notifications import NotificationsResourceWithStreamingResponse return NotificationsResourceWithStreamingResponse(self._client.notifications) @cached_property def disputes(self) -> disputes.DisputesResourceWithStreamingResponse: + """Disputes""" from .resources.disputes import DisputesResourceWithStreamingResponse return DisputesResourceWithStreamingResponse(self._client.disputes) @cached_property def refunds(self) -> refunds.RefundsResourceWithStreamingResponse: + """Refunds""" from .resources.refunds import RefundsResourceWithStreamingResponse return RefundsResourceWithStreamingResponse(self._client.refunds) @cached_property def withdrawals(self) -> withdrawals.WithdrawalsResourceWithStreamingResponse: + """Withdrawals""" from .resources.withdrawals import WithdrawalsResourceWithStreamingResponse return WithdrawalsResourceWithStreamingResponse(self._client.withdrawals) @cached_property def account_links(self) -> account_links.AccountLinksResourceWithStreamingResponse: + """Account links""" from .resources.account_links import AccountLinksResourceWithStreamingResponse return AccountLinksResourceWithStreamingResponse(self._client.account_links) @cached_property def setup_intents(self) -> setup_intents.SetupIntentsResourceWithStreamingResponse: + """Setup intents""" from .resources.setup_intents import SetupIntentsResourceWithStreamingResponse return SetupIntentsResourceWithStreamingResponse(self._client.setup_intents) @cached_property def payment_methods(self) -> payment_methods.PaymentMethodsResourceWithStreamingResponse: + """Payment methods""" from .resources.payment_methods import PaymentMethodsResourceWithStreamingResponse return PaymentMethodsResourceWithStreamingResponse(self._client.payment_methods) @cached_property def fee_markups(self) -> fee_markups.FeeMarkupsResourceWithStreamingResponse: + """Fee markups""" from .resources.fee_markups import FeeMarkupsResourceWithStreamingResponse return FeeMarkupsResourceWithStreamingResponse(self._client.fee_markups) @cached_property def payout_methods(self) -> payout_methods.PayoutMethodsResourceWithStreamingResponse: + """Payout methods""" from .resources.payout_methods import PayoutMethodsResourceWithStreamingResponse return PayoutMethodsResourceWithStreamingResponse(self._client.payout_methods) @cached_property def verifications(self) -> verifications.VerificationsResourceWithStreamingResponse: + """Verifications""" from .resources.verifications import VerificationsResourceWithStreamingResponse return VerificationsResourceWithStreamingResponse(self._client.verifications) @cached_property def leads(self) -> leads.LeadsResourceWithStreamingResponse: + """Leads""" from .resources.leads import LeadsResourceWithStreamingResponse return LeadsResourceWithStreamingResponse(self._client.leads) @cached_property def topups(self) -> topups.TopupsResourceWithStreamingResponse: + """Topups""" from .resources.topups import TopupsResourceWithStreamingResponse return TopupsResourceWithStreamingResponse(self._client.topups) @cached_property def files(self) -> files.FilesResourceWithStreamingResponse: + """Files""" from .resources.files import FilesResourceWithStreamingResponse return FilesResourceWithStreamingResponse(self._client.files) @@ -2019,30 +2264,35 @@ def files(self) -> files.FilesResourceWithStreamingResponse: def company_token_transactions( self, ) -> company_token_transactions.CompanyTokenTransactionsResourceWithStreamingResponse: + """Company token transactions""" from .resources.company_token_transactions import CompanyTokenTransactionsResourceWithStreamingResponse return CompanyTokenTransactionsResourceWithStreamingResponse(self._client.company_token_transactions) @cached_property def dm_members(self) -> dm_members.DmMembersResourceWithStreamingResponse: + """Dm members""" from .resources.dm_members import DmMembersResourceWithStreamingResponse return DmMembersResourceWithStreamingResponse(self._client.dm_members) @cached_property def ai_chats(self) -> ai_chats.AIChatsResourceWithStreamingResponse: + """Ai chats""" from .resources.ai_chats import AIChatsResourceWithStreamingResponse return AIChatsResourceWithStreamingResponse(self._client.ai_chats) @cached_property def dm_channels(self) -> dm_channels.DmChannelsResourceWithStreamingResponse: + """Dm channels""" from .resources.dm_channels import DmChannelsResourceWithStreamingResponse return DmChannelsResourceWithStreamingResponse(self._client.dm_channels) @cached_property def dispute_alerts(self) -> dispute_alerts.DisputeAlertsResourceWithStreamingResponse: + """Dispute alerts""" from .resources.dispute_alerts import DisputeAlertsResourceWithStreamingResponse return DisputeAlertsResourceWithStreamingResponse(self._client.dispute_alerts) @@ -2056,12 +2306,14 @@ def __init__(self, client: AsyncWhop) -> None: @cached_property def apps(self) -> apps.AsyncAppsResourceWithStreamingResponse: + """Apps""" from .resources.apps import AsyncAppsResourceWithStreamingResponse return AsyncAppsResourceWithStreamingResponse(self._client.apps) @cached_property def invoices(self) -> invoices.AsyncInvoicesResourceWithStreamingResponse: + """Invoices""" from .resources.invoices import AsyncInvoicesResourceWithStreamingResponse return AsyncInvoicesResourceWithStreamingResponse(self._client.invoices) @@ -2070,78 +2322,91 @@ def invoices(self) -> invoices.AsyncInvoicesResourceWithStreamingResponse: def course_lesson_interactions( self, ) -> course_lesson_interactions.AsyncCourseLessonInteractionsResourceWithStreamingResponse: + """Course lesson interactions""" from .resources.course_lesson_interactions import AsyncCourseLessonInteractionsResourceWithStreamingResponse return AsyncCourseLessonInteractionsResourceWithStreamingResponse(self._client.course_lesson_interactions) @cached_property def products(self) -> products.AsyncProductsResourceWithStreamingResponse: + """Products""" from .resources.products import AsyncProductsResourceWithStreamingResponse return AsyncProductsResourceWithStreamingResponse(self._client.products) @cached_property def companies(self) -> companies.AsyncCompaniesResourceWithStreamingResponse: + """Companies""" from .resources.companies import AsyncCompaniesResourceWithStreamingResponse return AsyncCompaniesResourceWithStreamingResponse(self._client.companies) @cached_property def webhooks(self) -> webhooks.AsyncWebhooksResourceWithStreamingResponse: + """Webhooks""" from .resources.webhooks import AsyncWebhooksResourceWithStreamingResponse return AsyncWebhooksResourceWithStreamingResponse(self._client.webhooks) @cached_property def plans(self) -> plans.AsyncPlansResourceWithStreamingResponse: + """Plans""" from .resources.plans import AsyncPlansResourceWithStreamingResponse return AsyncPlansResourceWithStreamingResponse(self._client.plans) @cached_property def entries(self) -> entries.AsyncEntriesResourceWithStreamingResponse: + """Entries""" from .resources.entries import AsyncEntriesResourceWithStreamingResponse return AsyncEntriesResourceWithStreamingResponse(self._client.entries) @cached_property def forum_posts(self) -> forum_posts.AsyncForumPostsResourceWithStreamingResponse: + """Forum posts""" from .resources.forum_posts import AsyncForumPostsResourceWithStreamingResponse return AsyncForumPostsResourceWithStreamingResponse(self._client.forum_posts) @cached_property def transfers(self) -> transfers.AsyncTransfersResourceWithStreamingResponse: + """Transfers""" from .resources.transfers import AsyncTransfersResourceWithStreamingResponse return AsyncTransfersResourceWithStreamingResponse(self._client.transfers) @cached_property def ledger_accounts(self) -> ledger_accounts.AsyncLedgerAccountsResourceWithStreamingResponse: + """Ledger accounts""" from .resources.ledger_accounts import AsyncLedgerAccountsResourceWithStreamingResponse return AsyncLedgerAccountsResourceWithStreamingResponse(self._client.ledger_accounts) @cached_property def memberships(self) -> memberships.AsyncMembershipsResourceWithStreamingResponse: + """Memberships""" from .resources.memberships import AsyncMembershipsResourceWithStreamingResponse return AsyncMembershipsResourceWithStreamingResponse(self._client.memberships) @cached_property def authorized_users(self) -> authorized_users.AsyncAuthorizedUsersResourceWithStreamingResponse: + """Authorized users""" from .resources.authorized_users import AsyncAuthorizedUsersResourceWithStreamingResponse return AsyncAuthorizedUsersResourceWithStreamingResponse(self._client.authorized_users) @cached_property def app_builds(self) -> app_builds.AsyncAppBuildsResourceWithStreamingResponse: + """App builds""" from .resources.app_builds import AsyncAppBuildsResourceWithStreamingResponse return AsyncAppBuildsResourceWithStreamingResponse(self._client.app_builds) @cached_property def shipments(self) -> shipments.AsyncShipmentsResourceWithStreamingResponse: + """Shipments""" from .resources.shipments import AsyncShipmentsResourceWithStreamingResponse return AsyncShipmentsResourceWithStreamingResponse(self._client.shipments) @@ -2150,180 +2415,210 @@ def shipments(self) -> shipments.AsyncShipmentsResourceWithStreamingResponse: def checkout_configurations( self, ) -> checkout_configurations.AsyncCheckoutConfigurationsResourceWithStreamingResponse: + """Checkout configurations""" from .resources.checkout_configurations import AsyncCheckoutConfigurationsResourceWithStreamingResponse return AsyncCheckoutConfigurationsResourceWithStreamingResponse(self._client.checkout_configurations) @cached_property def messages(self) -> messages.AsyncMessagesResourceWithStreamingResponse: + """Messages""" from .resources.messages import AsyncMessagesResourceWithStreamingResponse return AsyncMessagesResourceWithStreamingResponse(self._client.messages) @cached_property def chat_channels(self) -> chat_channels.AsyncChatChannelsResourceWithStreamingResponse: + """Chat channels""" from .resources.chat_channels import AsyncChatChannelsResourceWithStreamingResponse return AsyncChatChannelsResourceWithStreamingResponse(self._client.chat_channels) @cached_property def users(self) -> users.AsyncUsersResourceWithStreamingResponse: + """Users""" from .resources.users import AsyncUsersResourceWithStreamingResponse return AsyncUsersResourceWithStreamingResponse(self._client.users) @cached_property def payments(self) -> payments.AsyncPaymentsResourceWithStreamingResponse: + """Payments""" from .resources.payments import AsyncPaymentsResourceWithStreamingResponse return AsyncPaymentsResourceWithStreamingResponse(self._client.payments) @cached_property def support_channels(self) -> support_channels.AsyncSupportChannelsResourceWithStreamingResponse: + """Support channels""" from .resources.support_channels import AsyncSupportChannelsResourceWithStreamingResponse return AsyncSupportChannelsResourceWithStreamingResponse(self._client.support_channels) @cached_property def experiences(self) -> experiences.AsyncExperiencesResourceWithStreamingResponse: + """Experiences""" from .resources.experiences import AsyncExperiencesResourceWithStreamingResponse return AsyncExperiencesResourceWithStreamingResponse(self._client.experiences) @cached_property def reactions(self) -> reactions.AsyncReactionsResourceWithStreamingResponse: + """Reactions""" from .resources.reactions import AsyncReactionsResourceWithStreamingResponse return AsyncReactionsResourceWithStreamingResponse(self._client.reactions) @cached_property def members(self) -> members.AsyncMembersResourceWithStreamingResponse: + """Members""" from .resources.members import AsyncMembersResourceWithStreamingResponse return AsyncMembersResourceWithStreamingResponse(self._client.members) @cached_property def forums(self) -> forums.AsyncForumsResourceWithStreamingResponse: + """Forums""" from .resources.forums import AsyncForumsResourceWithStreamingResponse return AsyncForumsResourceWithStreamingResponse(self._client.forums) @cached_property def promo_codes(self) -> promo_codes.AsyncPromoCodesResourceWithStreamingResponse: + """Promo codes""" from .resources.promo_codes import AsyncPromoCodesResourceWithStreamingResponse return AsyncPromoCodesResourceWithStreamingResponse(self._client.promo_codes) @cached_property def courses(self) -> courses.AsyncCoursesResourceWithStreamingResponse: + """Courses""" from .resources.courses import AsyncCoursesResourceWithStreamingResponse return AsyncCoursesResourceWithStreamingResponse(self._client.courses) @cached_property def course_chapters(self) -> course_chapters.AsyncCourseChaptersResourceWithStreamingResponse: + """Course chapters""" from .resources.course_chapters import AsyncCourseChaptersResourceWithStreamingResponse return AsyncCourseChaptersResourceWithStreamingResponse(self._client.course_chapters) @cached_property def course_lessons(self) -> course_lessons.AsyncCourseLessonsResourceWithStreamingResponse: + """Course lessons""" from .resources.course_lessons import AsyncCourseLessonsResourceWithStreamingResponse return AsyncCourseLessonsResourceWithStreamingResponse(self._client.course_lessons) @cached_property def reviews(self) -> reviews.AsyncReviewsResourceWithStreamingResponse: + """Reviews""" from .resources.reviews import AsyncReviewsResourceWithStreamingResponse return AsyncReviewsResourceWithStreamingResponse(self._client.reviews) @cached_property def course_students(self) -> course_students.AsyncCourseStudentsResourceWithStreamingResponse: + """Course students""" from .resources.course_students import AsyncCourseStudentsResourceWithStreamingResponse return AsyncCourseStudentsResourceWithStreamingResponse(self._client.course_students) @cached_property def access_tokens(self) -> access_tokens.AsyncAccessTokensResourceWithStreamingResponse: + """Access tokens""" from .resources.access_tokens import AsyncAccessTokensResourceWithStreamingResponse return AsyncAccessTokensResourceWithStreamingResponse(self._client.access_tokens) @cached_property def notifications(self) -> notifications.AsyncNotificationsResourceWithStreamingResponse: + """Notifications""" from .resources.notifications import AsyncNotificationsResourceWithStreamingResponse return AsyncNotificationsResourceWithStreamingResponse(self._client.notifications) @cached_property def disputes(self) -> disputes.AsyncDisputesResourceWithStreamingResponse: + """Disputes""" from .resources.disputes import AsyncDisputesResourceWithStreamingResponse return AsyncDisputesResourceWithStreamingResponse(self._client.disputes) @cached_property def refunds(self) -> refunds.AsyncRefundsResourceWithStreamingResponse: + """Refunds""" from .resources.refunds import AsyncRefundsResourceWithStreamingResponse return AsyncRefundsResourceWithStreamingResponse(self._client.refunds) @cached_property def withdrawals(self) -> withdrawals.AsyncWithdrawalsResourceWithStreamingResponse: + """Withdrawals""" from .resources.withdrawals import AsyncWithdrawalsResourceWithStreamingResponse return AsyncWithdrawalsResourceWithStreamingResponse(self._client.withdrawals) @cached_property def account_links(self) -> account_links.AsyncAccountLinksResourceWithStreamingResponse: + """Account links""" from .resources.account_links import AsyncAccountLinksResourceWithStreamingResponse return AsyncAccountLinksResourceWithStreamingResponse(self._client.account_links) @cached_property def setup_intents(self) -> setup_intents.AsyncSetupIntentsResourceWithStreamingResponse: + """Setup intents""" from .resources.setup_intents import AsyncSetupIntentsResourceWithStreamingResponse return AsyncSetupIntentsResourceWithStreamingResponse(self._client.setup_intents) @cached_property def payment_methods(self) -> payment_methods.AsyncPaymentMethodsResourceWithStreamingResponse: + """Payment methods""" from .resources.payment_methods import AsyncPaymentMethodsResourceWithStreamingResponse return AsyncPaymentMethodsResourceWithStreamingResponse(self._client.payment_methods) @cached_property def fee_markups(self) -> fee_markups.AsyncFeeMarkupsResourceWithStreamingResponse: + """Fee markups""" from .resources.fee_markups import AsyncFeeMarkupsResourceWithStreamingResponse return AsyncFeeMarkupsResourceWithStreamingResponse(self._client.fee_markups) @cached_property def payout_methods(self) -> payout_methods.AsyncPayoutMethodsResourceWithStreamingResponse: + """Payout methods""" from .resources.payout_methods import AsyncPayoutMethodsResourceWithStreamingResponse return AsyncPayoutMethodsResourceWithStreamingResponse(self._client.payout_methods) @cached_property def verifications(self) -> verifications.AsyncVerificationsResourceWithStreamingResponse: + """Verifications""" from .resources.verifications import AsyncVerificationsResourceWithStreamingResponse return AsyncVerificationsResourceWithStreamingResponse(self._client.verifications) @cached_property def leads(self) -> leads.AsyncLeadsResourceWithStreamingResponse: + """Leads""" from .resources.leads import AsyncLeadsResourceWithStreamingResponse return AsyncLeadsResourceWithStreamingResponse(self._client.leads) @cached_property def topups(self) -> topups.AsyncTopupsResourceWithStreamingResponse: + """Topups""" from .resources.topups import AsyncTopupsResourceWithStreamingResponse return AsyncTopupsResourceWithStreamingResponse(self._client.topups) @cached_property def files(self) -> files.AsyncFilesResourceWithStreamingResponse: + """Files""" from .resources.files import AsyncFilesResourceWithStreamingResponse return AsyncFilesResourceWithStreamingResponse(self._client.files) @@ -2332,30 +2627,35 @@ def files(self) -> files.AsyncFilesResourceWithStreamingResponse: def company_token_transactions( self, ) -> company_token_transactions.AsyncCompanyTokenTransactionsResourceWithStreamingResponse: + """Company token transactions""" from .resources.company_token_transactions import AsyncCompanyTokenTransactionsResourceWithStreamingResponse return AsyncCompanyTokenTransactionsResourceWithStreamingResponse(self._client.company_token_transactions) @cached_property def dm_members(self) -> dm_members.AsyncDmMembersResourceWithStreamingResponse: + """Dm members""" from .resources.dm_members import AsyncDmMembersResourceWithStreamingResponse return AsyncDmMembersResourceWithStreamingResponse(self._client.dm_members) @cached_property def ai_chats(self) -> ai_chats.AsyncAIChatsResourceWithStreamingResponse: + """Ai chats""" from .resources.ai_chats import AsyncAIChatsResourceWithStreamingResponse return AsyncAIChatsResourceWithStreamingResponse(self._client.ai_chats) @cached_property def dm_channels(self) -> dm_channels.AsyncDmChannelsResourceWithStreamingResponse: + """Dm channels""" from .resources.dm_channels import AsyncDmChannelsResourceWithStreamingResponse return AsyncDmChannelsResourceWithStreamingResponse(self._client.dm_channels) @cached_property def dispute_alerts(self) -> dispute_alerts.AsyncDisputeAlertsResourceWithStreamingResponse: + """Dispute alerts""" from .resources.dispute_alerts import AsyncDisputeAlertsResourceWithStreamingResponse return AsyncDisputeAlertsResourceWithStreamingResponse(self._client.dispute_alerts) diff --git a/src/whop_sdk/_version.py b/src/whop_sdk/_version.py index c674ff57..162053b4 100644 --- a/src/whop_sdk/_version.py +++ b/src/whop_sdk/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "whop_sdk" -__version__ = "0.0.30" # x-release-please-version +__version__ = "0.1.0" # x-release-please-version diff --git a/src/whop_sdk/resources/access_tokens.py b/src/whop_sdk/resources/access_tokens.py index ec9b7832..1ebde168 100644 --- a/src/whop_sdk/resources/access_tokens.py +++ b/src/whop_sdk/resources/access_tokens.py @@ -25,6 +25,8 @@ class AccessTokensResource(SyncAPIResource): + """Access tokens""" + @cached_property def with_raw_response(self) -> AccessTokensResourceWithRawResponse: """ @@ -106,6 +108,8 @@ def create( class AsyncAccessTokensResource(AsyncAPIResource): + """Access tokens""" + @cached_property def with_raw_response(self) -> AsyncAccessTokensResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/account_links.py b/src/whop_sdk/resources/account_links.py index e362e3fb..ccfe5cd7 100644 --- a/src/whop_sdk/resources/account_links.py +++ b/src/whop_sdk/resources/account_links.py @@ -24,6 +24,8 @@ class AccountLinksResource(SyncAPIResource): + """Account links""" + @cached_property def with_raw_response(self) -> AccountLinksResourceWithRawResponse: """ @@ -101,6 +103,8 @@ def create( class AsyncAccountLinksResource(AsyncAPIResource): + """Account links""" + @cached_property def with_raw_response(self) -> AsyncAccountLinksResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/ai_chats.py b/src/whop_sdk/resources/ai_chats.py index cd24246c..cd1fe56a 100644 --- a/src/whop_sdk/resources/ai_chats.py +++ b/src/whop_sdk/resources/ai_chats.py @@ -28,6 +28,8 @@ class AIChatsResource(SyncAPIResource): + """Ai chats""" + @cached_property def with_raw_response(self) -> AIChatsResourceWithRawResponse: """ @@ -54,6 +56,7 @@ def create( current_company_id: Optional[str] | Omit = omit, message_attachments: Optional[Iterable[ai_chat_create_params.MessageAttachment]] | Omit = omit, message_source: Optional[Literal["manual", "suggestion", "link"]] | Omit = omit, + suggestion_type: Optional[str] | Omit = omit, title: Optional[str] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. @@ -80,6 +83,9 @@ def create( message_source: The source of an AI chat message + suggestion_type: The type of suggestion prompt that was clicked, when message_source is + 'suggestion'. + title: An optional display title for the AI chat thread (e.g., "Help with billing"). extra_headers: Send extra headers @@ -98,6 +104,7 @@ def create( "current_company_id": current_company_id, "message_attachments": message_attachments, "message_source": message_source, + "suggestion_type": suggestion_type, "title": title, }, ai_chat_create_params.AIChatCreateParams, @@ -286,6 +293,8 @@ def delete( class AsyncAIChatsResource(AsyncAPIResource): + """Ai chats""" + @cached_property def with_raw_response(self) -> AsyncAIChatsResourceWithRawResponse: """ @@ -312,6 +321,7 @@ async def create( current_company_id: Optional[str] | Omit = omit, message_attachments: Optional[Iterable[ai_chat_create_params.MessageAttachment]] | Omit = omit, message_source: Optional[Literal["manual", "suggestion", "link"]] | Omit = omit, + suggestion_type: Optional[str] | Omit = omit, title: Optional[str] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. @@ -338,6 +348,9 @@ async def create( message_source: The source of an AI chat message + suggestion_type: The type of suggestion prompt that was clicked, when message_source is + 'suggestion'. + title: An optional display title for the AI chat thread (e.g., "Help with billing"). extra_headers: Send extra headers @@ -356,6 +369,7 @@ async def create( "current_company_id": current_company_id, "message_attachments": message_attachments, "message_source": message_source, + "suggestion_type": suggestion_type, "title": title, }, ai_chat_create_params.AIChatCreateParams, diff --git a/src/whop_sdk/resources/app_builds.py b/src/whop_sdk/resources/app_builds.py index e4e0f855..967b89fd 100644 --- a/src/whop_sdk/resources/app_builds.py +++ b/src/whop_sdk/resources/app_builds.py @@ -30,6 +30,8 @@ class AppBuildsResource(SyncAPIResource): + """App builds""" + @cached_property def with_raw_response(self) -> AppBuildsResourceWithRawResponse: """ @@ -276,6 +278,8 @@ def promote( class AsyncAppBuildsResource(AsyncAPIResource): + """App builds""" + @cached_property def with_raw_response(self) -> AsyncAppBuildsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/apps.py b/src/whop_sdk/resources/apps.py index 46fd9b78..dd29aa84 100644 --- a/src/whop_sdk/resources/apps.py +++ b/src/whop_sdk/resources/apps.py @@ -31,6 +31,8 @@ class AppsResource(SyncAPIResource): + """Apps""" + @cached_property def with_raw_response(self) -> AppsResourceWithRawResponse: """ @@ -354,6 +356,8 @@ def list( class AsyncAppsResource(AsyncAPIResource): + """Apps""" + @cached_property def with_raw_response(self) -> AsyncAppsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/authorized_users.py b/src/whop_sdk/resources/authorized_users.py index 91158b83..b1f3fd19 100644 --- a/src/whop_sdk/resources/authorized_users.py +++ b/src/whop_sdk/resources/authorized_users.py @@ -7,9 +7,9 @@ import httpx -from ..types import authorized_user_list_params +from ..types import authorized_user_list_params, authorized_user_create_params, authorized_user_delete_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform +from .._utils import maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -22,12 +22,16 @@ from .._base_client import AsyncPaginator, make_request_options from ..types.shared.authorized_user_roles import AuthorizedUserRoles from ..types.authorized_user_list_response import AuthorizedUserListResponse +from ..types.authorized_user_create_response import AuthorizedUserCreateResponse +from ..types.authorized_user_delete_response import AuthorizedUserDeleteResponse from ..types.authorized_user_retrieve_response import AuthorizedUserRetrieveResponse __all__ = ["AuthorizedUsersResource", "AsyncAuthorizedUsersResource"] class AuthorizedUsersResource(SyncAPIResource): + """Authorized users""" + @cached_property def with_raw_response(self) -> AuthorizedUsersResourceWithRawResponse: """ @@ -47,6 +51,64 @@ def with_streaming_response(self) -> AuthorizedUsersResourceWithStreamingRespons """ return AuthorizedUsersResourceWithStreamingResponse(self) + def create( + self, + *, + company_id: str, + role: AuthorizedUserRoles, + user_id: str, + send_emails: Optional[bool] | Omit = omit, + # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. + # The extra values given here take precedence over values defined on the client or passed to this method. + extra_headers: Headers | None = None, + extra_query: Query | None = None, + extra_body: Body | None = None, + timeout: float | httpx.Timeout | None | NotGiven = not_given, + ) -> AuthorizedUserCreateResponse: + """ + Add a new authorized user to a company. + + Required permissions: + + - `authorized_user:create` + - `member:email:read` + + Args: + company_id: The ID of the company to add the authorized user to. + + role: + The role to assign to the authorized user within the company. Supported roles: + 'moderator', 'sales_manager'. + + user_id: The ID of the user to add as an authorized user. + + send_emails: Whether to send notification emails to the user on creation. + + extra_headers: Send extra headers + + extra_query: Add additional query parameters to the request + + extra_body: Add additional JSON properties to the request + + timeout: Override the client-level default timeout for this request, in seconds + """ + return self._post( + "/authorized_users", + body=maybe_transform( + { + "company_id": company_id, + "role": role, + "user_id": user_id, + "send_emails": send_emails, + }, + authorized_user_create_params.AuthorizedUserCreateParams, + ), + options=make_request_options( + extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout + ), + cast_to=AuthorizedUserCreateResponse, + ) + def retrieve( self, id: str, @@ -167,8 +229,57 @@ def list( model=AuthorizedUserListResponse, ) + def delete( + self, + id: str, + *, + company_id: Optional[str] | Omit = omit, + # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. + # The extra values given here take precedence over values defined on the client or passed to this method. + extra_headers: Headers | None = None, + extra_query: Query | None = None, + extra_body: Body | None = None, + timeout: float | httpx.Timeout | None | NotGiven = not_given, + ) -> AuthorizedUserDeleteResponse: + """ + Remove an authorized user from a company. + + Required permissions: + + - `authorized_user:delete` + + Args: + company_id: The ID of the company the authorized user belongs to. Optional if the authorized + user ID is provided. + + extra_headers: Send extra headers + + extra_query: Add additional query parameters to the request + + extra_body: Add additional JSON properties to the request + + timeout: Override the client-level default timeout for this request, in seconds + """ + if not id: + raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") + return self._delete( + f"/authorized_users/{id}", + options=make_request_options( + extra_headers=extra_headers, + extra_query=extra_query, + extra_body=extra_body, + timeout=timeout, + query=maybe_transform( + {"company_id": company_id}, authorized_user_delete_params.AuthorizedUserDeleteParams + ), + ), + cast_to=AuthorizedUserDeleteResponse, + ) + class AsyncAuthorizedUsersResource(AsyncAPIResource): + """Authorized users""" + @cached_property def with_raw_response(self) -> AsyncAuthorizedUsersResourceWithRawResponse: """ @@ -188,6 +299,64 @@ def with_streaming_response(self) -> AsyncAuthorizedUsersResourceWithStreamingRe """ return AsyncAuthorizedUsersResourceWithStreamingResponse(self) + async def create( + self, + *, + company_id: str, + role: AuthorizedUserRoles, + user_id: str, + send_emails: Optional[bool] | Omit = omit, + # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. + # The extra values given here take precedence over values defined on the client or passed to this method. + extra_headers: Headers | None = None, + extra_query: Query | None = None, + extra_body: Body | None = None, + timeout: float | httpx.Timeout | None | NotGiven = not_given, + ) -> AuthorizedUserCreateResponse: + """ + Add a new authorized user to a company. + + Required permissions: + + - `authorized_user:create` + - `member:email:read` + + Args: + company_id: The ID of the company to add the authorized user to. + + role: + The role to assign to the authorized user within the company. Supported roles: + 'moderator', 'sales_manager'. + + user_id: The ID of the user to add as an authorized user. + + send_emails: Whether to send notification emails to the user on creation. + + extra_headers: Send extra headers + + extra_query: Add additional query parameters to the request + + extra_body: Add additional JSON properties to the request + + timeout: Override the client-level default timeout for this request, in seconds + """ + return await self._post( + "/authorized_users", + body=await async_maybe_transform( + { + "company_id": company_id, + "role": role, + "user_id": user_id, + "send_emails": send_emails, + }, + authorized_user_create_params.AuthorizedUserCreateParams, + ), + options=make_request_options( + extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout + ), + cast_to=AuthorizedUserCreateResponse, + ) + async def retrieve( self, id: str, @@ -308,50 +477,121 @@ def list( model=AuthorizedUserListResponse, ) + async def delete( + self, + id: str, + *, + company_id: Optional[str] | Omit = omit, + # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. + # The extra values given here take precedence over values defined on the client or passed to this method. + extra_headers: Headers | None = None, + extra_query: Query | None = None, + extra_body: Body | None = None, + timeout: float | httpx.Timeout | None | NotGiven = not_given, + ) -> AuthorizedUserDeleteResponse: + """ + Remove an authorized user from a company. + + Required permissions: + + - `authorized_user:delete` + + Args: + company_id: The ID of the company the authorized user belongs to. Optional if the authorized + user ID is provided. + + extra_headers: Send extra headers + + extra_query: Add additional query parameters to the request + + extra_body: Add additional JSON properties to the request + + timeout: Override the client-level default timeout for this request, in seconds + """ + if not id: + raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") + return await self._delete( + f"/authorized_users/{id}", + options=make_request_options( + extra_headers=extra_headers, + extra_query=extra_query, + extra_body=extra_body, + timeout=timeout, + query=await async_maybe_transform( + {"company_id": company_id}, authorized_user_delete_params.AuthorizedUserDeleteParams + ), + ), + cast_to=AuthorizedUserDeleteResponse, + ) + class AuthorizedUsersResourceWithRawResponse: def __init__(self, authorized_users: AuthorizedUsersResource) -> None: self._authorized_users = authorized_users + self.create = to_raw_response_wrapper( + authorized_users.create, + ) self.retrieve = to_raw_response_wrapper( authorized_users.retrieve, ) self.list = to_raw_response_wrapper( authorized_users.list, ) + self.delete = to_raw_response_wrapper( + authorized_users.delete, + ) class AsyncAuthorizedUsersResourceWithRawResponse: def __init__(self, authorized_users: AsyncAuthorizedUsersResource) -> None: self._authorized_users = authorized_users + self.create = async_to_raw_response_wrapper( + authorized_users.create, + ) self.retrieve = async_to_raw_response_wrapper( authorized_users.retrieve, ) self.list = async_to_raw_response_wrapper( authorized_users.list, ) + self.delete = async_to_raw_response_wrapper( + authorized_users.delete, + ) class AuthorizedUsersResourceWithStreamingResponse: def __init__(self, authorized_users: AuthorizedUsersResource) -> None: self._authorized_users = authorized_users + self.create = to_streamed_response_wrapper( + authorized_users.create, + ) self.retrieve = to_streamed_response_wrapper( authorized_users.retrieve, ) self.list = to_streamed_response_wrapper( authorized_users.list, ) + self.delete = to_streamed_response_wrapper( + authorized_users.delete, + ) class AsyncAuthorizedUsersResourceWithStreamingResponse: def __init__(self, authorized_users: AsyncAuthorizedUsersResource) -> None: self._authorized_users = authorized_users + self.create = async_to_streamed_response_wrapper( + authorized_users.create, + ) self.retrieve = async_to_streamed_response_wrapper( authorized_users.retrieve, ) self.list = async_to_streamed_response_wrapper( authorized_users.list, ) + self.delete = async_to_streamed_response_wrapper( + authorized_users.delete, + ) diff --git a/src/whop_sdk/resources/chat_channels.py b/src/whop_sdk/resources/chat_channels.py index 0ed7bd7f..04382738 100644 --- a/src/whop_sdk/resources/chat_channels.py +++ b/src/whop_sdk/resources/chat_channels.py @@ -28,6 +28,8 @@ class ChatChannelsResource(SyncAPIResource): + """Chat channels""" + @cached_property def with_raw_response(self) -> ChatChannelsResourceWithRawResponse: """ @@ -224,6 +226,8 @@ def list( class AsyncChatChannelsResource(AsyncAPIResource): + """Chat channels""" + @cached_property def with_raw_response(self) -> AsyncChatChannelsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/checkout_configurations.py b/src/whop_sdk/resources/checkout_configurations.py index 01606287..8df82b2c 100644 --- a/src/whop_sdk/resources/checkout_configurations.py +++ b/src/whop_sdk/resources/checkout_configurations.py @@ -30,6 +30,8 @@ class CheckoutConfigurationsResource(SyncAPIResource): + """Checkout configurations""" + @cached_property def with_raw_response(self) -> CheckoutConfigurationsResourceWithRawResponse: """ @@ -396,6 +398,8 @@ def list( class AsyncCheckoutConfigurationsResource(AsyncAPIResource): + """Checkout configurations""" + @cached_property def with_raw_response(self) -> AsyncCheckoutConfigurationsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/companies.py b/src/whop_sdk/resources/companies.py index 37cb0775..ae00db09 100644 --- a/src/whop_sdk/resources/companies.py +++ b/src/whop_sdk/resources/companies.py @@ -2,7 +2,7 @@ from __future__ import annotations -from typing import Dict, Union, Optional +from typing import Dict, Union, Iterable, Optional from datetime import datetime import httpx @@ -28,6 +28,8 @@ class CompaniesResource(SyncAPIResource): + """Companies""" + @cached_property def with_raw_response(self) -> CompaniesResourceWithRawResponse: """ @@ -168,6 +170,7 @@ def update( logo: Optional[company_update_params.Logo] | Omit = omit, route: Optional[str] | Omit = omit, send_customer_emails: Optional[bool] | Omit = omit, + social_links: Optional[Iterable[company_update_params.SocialLink]] | Omit = omit, target_audience: Optional[str] | Omit = omit, title: Optional[str] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. @@ -200,6 +203,9 @@ def update( send_customer_emails: Whether Whop sends transactional emails (receipts, renewals, cancelations) to customers on behalf of this company. + social_links: The social media links to display on the company's store page. Pass the full + list of desired social links — any existing links not included will be removed. + target_audience: The target audience for this company (e.g., 'beginner day traders aged 18-25 looking to learn options'). @@ -224,6 +230,7 @@ def update( "logo": logo, "route": route, "send_customer_emails": send_customer_emails, + "social_links": social_links, "target_audience": target_audience, "title": title, }, @@ -317,6 +324,8 @@ def list( class AsyncCompaniesResource(AsyncAPIResource): + """Companies""" + @cached_property def with_raw_response(self) -> AsyncCompaniesResourceWithRawResponse: """ @@ -457,6 +466,7 @@ async def update( logo: Optional[company_update_params.Logo] | Omit = omit, route: Optional[str] | Omit = omit, send_customer_emails: Optional[bool] | Omit = omit, + social_links: Optional[Iterable[company_update_params.SocialLink]] | Omit = omit, target_audience: Optional[str] | Omit = omit, title: Optional[str] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. @@ -489,6 +499,9 @@ async def update( send_customer_emails: Whether Whop sends transactional emails (receipts, renewals, cancelations) to customers on behalf of this company. + social_links: The social media links to display on the company's store page. Pass the full + list of desired social links — any existing links not included will be removed. + target_audience: The target audience for this company (e.g., 'beginner day traders aged 18-25 looking to learn options'). @@ -513,6 +526,7 @@ async def update( "logo": logo, "route": route, "send_customer_emails": send_customer_emails, + "social_links": social_links, "target_audience": target_audience, "title": title, }, diff --git a/src/whop_sdk/resources/company_token_transactions.py b/src/whop_sdk/resources/company_token_transactions.py index aa7bf6ce..ff382499 100644 --- a/src/whop_sdk/resources/company_token_transactions.py +++ b/src/whop_sdk/resources/company_token_transactions.py @@ -32,6 +32,8 @@ class CompanyTokenTransactionsResource(SyncAPIResource): + """Company token transactions""" + @cached_property def with_raw_response(self) -> CompanyTokenTransactionsResourceWithRawResponse: """ @@ -365,6 +367,8 @@ def list( class AsyncCompanyTokenTransactionsResource(AsyncAPIResource): + """Company token transactions""" + @cached_property def with_raw_response(self) -> AsyncCompanyTokenTransactionsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/course_chapters.py b/src/whop_sdk/resources/course_chapters.py index 9d8345bf..13d1ba92 100644 --- a/src/whop_sdk/resources/course_chapters.py +++ b/src/whop_sdk/resources/course_chapters.py @@ -27,6 +27,8 @@ class CourseChaptersResource(SyncAPIResource): + """Course chapters""" + @cached_property def with_raw_response(self) -> CourseChaptersResourceWithRawResponse: """ @@ -274,6 +276,8 @@ def delete( class AsyncCourseChaptersResource(AsyncAPIResource): + """Course chapters""" + @cached_property def with_raw_response(self) -> AsyncCourseChaptersResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/course_lesson_interactions.py b/src/whop_sdk/resources/course_lesson_interactions.py index 19d49434..c162930e 100644 --- a/src/whop_sdk/resources/course_lesson_interactions.py +++ b/src/whop_sdk/resources/course_lesson_interactions.py @@ -26,6 +26,8 @@ class CourseLessonInteractionsResource(SyncAPIResource): + """Course lesson interactions""" + @cached_property def with_raw_response(self) -> CourseLessonInteractionsResourceWithRawResponse: """ @@ -162,6 +164,8 @@ def list( class AsyncCourseLessonInteractionsResource(AsyncAPIResource): + """Course lesson interactions""" + @cached_property def with_raw_response(self) -> AsyncCourseLessonInteractionsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/course_lessons.py b/src/whop_sdk/resources/course_lessons.py index ef47ad3e..710a739d 100644 --- a/src/whop_sdk/resources/course_lessons.py +++ b/src/whop_sdk/resources/course_lessons.py @@ -41,6 +41,8 @@ class CourseLessonsResource(SyncAPIResource): + """Course lessons""" + @cached_property def with_raw_response(self) -> CourseLessonsResourceWithRawResponse: """ @@ -493,6 +495,8 @@ def submit_assessment( class AsyncCourseLessonsResource(AsyncAPIResource): + """Course lessons""" + @cached_property def with_raw_response(self) -> AsyncCourseLessonsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/course_students.py b/src/whop_sdk/resources/course_students.py index 83c1656e..f85f1f82 100644 --- a/src/whop_sdk/resources/course_students.py +++ b/src/whop_sdk/resources/course_students.py @@ -26,6 +26,8 @@ class CourseStudentsResource(SyncAPIResource): + """Course students""" + @cached_property def with_raw_response(self) -> CourseStudentsResourceWithRawResponse: """ @@ -154,6 +156,8 @@ def list( class AsyncCourseStudentsResource(AsyncAPIResource): + """Course students""" + @cached_property def with_raw_response(self) -> AsyncCourseStudentsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/courses.py b/src/whop_sdk/resources/courses.py index a5c5b25e..9ea8d328 100644 --- a/src/whop_sdk/resources/courses.py +++ b/src/whop_sdk/resources/courses.py @@ -29,6 +29,8 @@ class CoursesResource(SyncAPIResource): + """Courses""" + @cached_property def with_raw_response(self) -> CoursesResourceWithRawResponse: """ @@ -359,6 +361,8 @@ def delete( class AsyncCoursesResource(AsyncAPIResource): + """Courses""" + @cached_property def with_raw_response(self) -> AsyncCoursesResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/dispute_alerts.py b/src/whop_sdk/resources/dispute_alerts.py index 03b47ef2..6ce07f13 100644 --- a/src/whop_sdk/resources/dispute_alerts.py +++ b/src/whop_sdk/resources/dispute_alerts.py @@ -28,6 +28,8 @@ class DisputeAlertsResource(SyncAPIResource): + """Dispute alerts""" + @cached_property def with_raw_response(self) -> DisputeAlertsResourceWithRawResponse: """ @@ -169,6 +171,8 @@ def list( class AsyncDisputeAlertsResource(AsyncAPIResource): + """Dispute alerts""" + @cached_property def with_raw_response(self) -> AsyncDisputeAlertsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/disputes.py b/src/whop_sdk/resources/disputes.py index 0baa88dc..33d308f8 100644 --- a/src/whop_sdk/resources/disputes.py +++ b/src/whop_sdk/resources/disputes.py @@ -28,6 +28,8 @@ class DisputesResource(SyncAPIResource): + """Disputes""" + @cached_property def with_raw_response(self) -> DisputesResourceWithRawResponse: """ @@ -328,6 +330,8 @@ def update_evidence( class AsyncDisputesResource(AsyncAPIResource): + """Disputes""" + @cached_property def with_raw_response(self) -> AsyncDisputesResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/dm_channels.py b/src/whop_sdk/resources/dm_channels.py index 7e51c55e..6c979300 100644 --- a/src/whop_sdk/resources/dm_channels.py +++ b/src/whop_sdk/resources/dm_channels.py @@ -27,6 +27,8 @@ class DmChannelsResource(SyncAPIResource): + """Dm channels""" + @cached_property def with_raw_response(self) -> DmChannelsResourceWithRawResponse: """ @@ -282,6 +284,8 @@ def delete( class AsyncDmChannelsResource(AsyncAPIResource): + """Dm channels""" + @cached_property def with_raw_response(self) -> AsyncDmChannelsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/dm_members.py b/src/whop_sdk/resources/dm_members.py index f1a8ca12..1681c01b 100644 --- a/src/whop_sdk/resources/dm_members.py +++ b/src/whop_sdk/resources/dm_members.py @@ -35,6 +35,8 @@ class DmMembersResource(SyncAPIResource): + """Dm members""" + @cached_property def with_raw_response(self) -> DmMembersResourceWithRawResponse: """ @@ -297,6 +299,8 @@ def delete( class AsyncDmMembersResource(AsyncAPIResource): + """Dm members""" + @cached_property def with_raw_response(self) -> AsyncDmMembersResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/entries.py b/src/whop_sdk/resources/entries.py index 41d5d23c..42e4218f 100644 --- a/src/whop_sdk/resources/entries.py +++ b/src/whop_sdk/resources/entries.py @@ -31,6 +31,8 @@ class EntriesResource(SyncAPIResource): + """Entries""" + @cached_property def with_raw_response(self) -> EntriesResourceWithRawResponse: """ @@ -261,6 +263,8 @@ def deny( class AsyncEntriesResource(AsyncAPIResource): + """Entries""" + @cached_property def with_raw_response(self) -> AsyncEntriesResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/experiences.py b/src/whop_sdk/resources/experiences.py index 50542d1d..531a200e 100644 --- a/src/whop_sdk/resources/experiences.py +++ b/src/whop_sdk/resources/experiences.py @@ -36,6 +36,8 @@ class ExperiencesResource(SyncAPIResource): + """Experiences""" + @cached_property def with_raw_response(self) -> ExperiencesResourceWithRawResponse: """ @@ -458,6 +460,8 @@ def duplicate( class AsyncExperiencesResource(AsyncAPIResource): + """Experiences""" + @cached_property def with_raw_response(self) -> AsyncExperiencesResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/fee_markups.py b/src/whop_sdk/resources/fee_markups.py index 9944dd2b..9a9e94ba 100644 --- a/src/whop_sdk/resources/fee_markups.py +++ b/src/whop_sdk/resources/fee_markups.py @@ -28,6 +28,8 @@ class FeeMarkupsResource(SyncAPIResource): + """Fee markups""" + @cached_property def with_raw_response(self) -> FeeMarkupsResourceWithRawResponse: """ @@ -219,6 +221,8 @@ def delete( class AsyncFeeMarkupsResource(AsyncAPIResource): + """Fee markups""" + @cached_property def with_raw_response(self) -> AsyncFeeMarkupsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/files.py b/src/whop_sdk/resources/files.py index 5729ec7c..d481f6e8 100644 --- a/src/whop_sdk/resources/files.py +++ b/src/whop_sdk/resources/files.py @@ -23,6 +23,8 @@ class FilesResource(SyncAPIResource): + """Files""" + @cached_property def with_raw_response(self) -> FilesResourceWithRawResponse: """ @@ -113,6 +115,8 @@ def retrieve( class AsyncFilesResource(AsyncAPIResource): + """Files""" + @cached_property def with_raw_response(self) -> AsyncFilesResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/forum_posts.py b/src/whop_sdk/resources/forum_posts.py index 0acb986e..589c172d 100644 --- a/src/whop_sdk/resources/forum_posts.py +++ b/src/whop_sdk/resources/forum_posts.py @@ -33,6 +33,8 @@ class ForumPostsResource(SyncAPIResource): + """Forum posts""" + @cached_property def with_raw_response(self) -> ForumPostsResourceWithRawResponse: """ @@ -65,6 +67,7 @@ def create( paywall_currency: Optional[Currency] | Omit = omit, pinned: Optional[bool] | Omit = omit, poll: Optional[forum_post_create_params.Poll] | Omit = omit, + rich_content: Optional[str] | Omit = omit, title: Optional[str] | Omit = omit, visibility: Optional[ForumPostVisibilityType] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. @@ -113,6 +116,9 @@ def create( poll: A poll to attach to this post, allowing members to vote on options. + rich_content: The rich content of the post in Tiptap JSON format. When provided, takes + priority over the markdown content field for rendering. + title: The title of the post, displayed prominently at the top. Required for paywalled posts as it remains visible to non-purchasers. @@ -140,6 +146,7 @@ def create( "paywall_currency": paywall_currency, "pinned": pinned, "poll": poll, + "rich_content": rich_content, "title": title, "visibility": visibility, }, @@ -327,6 +334,8 @@ def list( class AsyncForumPostsResource(AsyncAPIResource): + """Forum posts""" + @cached_property def with_raw_response(self) -> AsyncForumPostsResourceWithRawResponse: """ @@ -359,6 +368,7 @@ async def create( paywall_currency: Optional[Currency] | Omit = omit, pinned: Optional[bool] | Omit = omit, poll: Optional[forum_post_create_params.Poll] | Omit = omit, + rich_content: Optional[str] | Omit = omit, title: Optional[str] | Omit = omit, visibility: Optional[ForumPostVisibilityType] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. @@ -407,6 +417,9 @@ async def create( poll: A poll to attach to this post, allowing members to vote on options. + rich_content: The rich content of the post in Tiptap JSON format. When provided, takes + priority over the markdown content field for rendering. + title: The title of the post, displayed prominently at the top. Required for paywalled posts as it remains visible to non-purchasers. @@ -434,6 +447,7 @@ async def create( "paywall_currency": paywall_currency, "pinned": pinned, "poll": poll, + "rich_content": rich_content, "title": title, "visibility": visibility, }, diff --git a/src/whop_sdk/resources/forums.py b/src/whop_sdk/resources/forums.py index 3159079e..b4f9e476 100644 --- a/src/whop_sdk/resources/forums.py +++ b/src/whop_sdk/resources/forums.py @@ -29,6 +29,8 @@ class ForumsResource(SyncAPIResource): + """Forums""" + @cached_property def with_raw_response(self) -> ForumsResourceWithRawResponse: """ @@ -89,6 +91,7 @@ def update( self, id: str, *, + banner_image: Optional[forum_update_params.BannerImage] | Omit = omit, email_notification_preference: Optional[EmailNotificationPreferences] | Omit = omit, who_can_comment: Optional[WhoCanCommentTypes] | Omit = omit, who_can_post: Optional[WhoCanPostTypes] | Omit = omit, @@ -108,6 +111,9 @@ def update( - `forum:moderate` Args: + banner_image: The banner image displayed at the top of the forum page. Pass null to remove the + existing banner. + email_notification_preference: Email notification preference option for a forum feed who_can_comment: Who can comment on a forum feed @@ -128,6 +134,7 @@ def update( f"/forums/{id}", body=maybe_transform( { + "banner_image": banner_image, "email_notification_preference": email_notification_preference, "who_can_comment": who_can_comment, "who_can_post": who_can_post, @@ -211,6 +218,8 @@ def list( class AsyncForumsResource(AsyncAPIResource): + """Forums""" + @cached_property def with_raw_response(self) -> AsyncForumsResourceWithRawResponse: """ @@ -271,6 +280,7 @@ async def update( self, id: str, *, + banner_image: Optional[forum_update_params.BannerImage] | Omit = omit, email_notification_preference: Optional[EmailNotificationPreferences] | Omit = omit, who_can_comment: Optional[WhoCanCommentTypes] | Omit = omit, who_can_post: Optional[WhoCanPostTypes] | Omit = omit, @@ -290,6 +300,9 @@ async def update( - `forum:moderate` Args: + banner_image: The banner image displayed at the top of the forum page. Pass null to remove the + existing banner. + email_notification_preference: Email notification preference option for a forum feed who_can_comment: Who can comment on a forum feed @@ -310,6 +323,7 @@ async def update( f"/forums/{id}", body=await async_maybe_transform( { + "banner_image": banner_image, "email_notification_preference": email_notification_preference, "who_can_comment": who_can_comment, "who_can_post": who_can_post, diff --git a/src/whop_sdk/resources/invoices.py b/src/whop_sdk/resources/invoices.py index aec677fc..017fa401 100644 --- a/src/whop_sdk/resources/invoices.py +++ b/src/whop_sdk/resources/invoices.py @@ -32,6 +32,8 @@ class InvoicesResource(SyncAPIResource): + """Invoices""" + @cached_property def with_raw_response(self) -> InvoicesResourceWithRawResponse: """ @@ -81,7 +83,6 @@ def create( Required permissions: - `invoice:create` - - `plan:basic:read` Args: collection_method: How the invoice should be collected. Use charge_automatically to charge a stored @@ -155,7 +156,6 @@ def create( Required permissions: - `invoice:create` - - `plan:basic:read` Args: collection_method: How the invoice should be collected. Use charge_automatically to charge a stored @@ -229,7 +229,6 @@ def create( Required permissions: - `invoice:create` - - `plan:basic:read` Args: collection_method: How the invoice should be collected. Use charge_automatically to charge a stored @@ -302,7 +301,6 @@ def create( Required permissions: - `invoice:create` - - `plan:basic:read` Args: collection_method: How the invoice should be collected. Use charge_automatically to charge a stored @@ -422,7 +420,6 @@ def retrieve( Required permissions: - `invoice:basic:read` - - `plan:basic:read` Args: extra_headers: Send extra headers @@ -446,10 +443,10 @@ def retrieve( def list( self, *, - company_id: str, after: Optional[str] | Omit = omit, before: Optional[str] | Omit = omit, collection_methods: Optional[List[CollectionMethod]] | Omit = omit, + company_id: Optional[str] | Omit = omit, created_after: Union[str, datetime, None] | Omit = omit, created_before: Union[str, datetime, None] | Omit = omit, direction: Optional[Direction] | Omit = omit, @@ -472,17 +469,16 @@ def list( Required permissions: - `invoice:basic:read` - - `plan:basic:read` Args: - company_id: The unique identifier of the company to list invoices for. - after: Returns the elements in the list that come after the specified cursor. before: Returns the elements in the list that come before the specified cursor. collection_methods: Filter invoices by their collection method. + company_id: The unique identifier of the company to list invoices for. + created_after: Only return invoices created after this timestamp. created_before: Only return invoices created before this timestamp. @@ -518,10 +514,10 @@ def list( timeout=timeout, query=maybe_transform( { - "company_id": company_id, "after": after, "before": before, "collection_methods": collection_methods, + "company_id": company_id, "created_after": created_after, "created_before": created_before, "direction": direction, @@ -578,6 +574,8 @@ def void( class AsyncInvoicesResource(AsyncAPIResource): + """Invoices""" + @cached_property def with_raw_response(self) -> AsyncInvoicesResourceWithRawResponse: """ @@ -627,7 +625,6 @@ async def create( Required permissions: - `invoice:create` - - `plan:basic:read` Args: collection_method: How the invoice should be collected. Use charge_automatically to charge a stored @@ -701,7 +698,6 @@ async def create( Required permissions: - `invoice:create` - - `plan:basic:read` Args: collection_method: How the invoice should be collected. Use charge_automatically to charge a stored @@ -775,7 +771,6 @@ async def create( Required permissions: - `invoice:create` - - `plan:basic:read` Args: collection_method: How the invoice should be collected. Use charge_automatically to charge a stored @@ -848,7 +843,6 @@ async def create( Required permissions: - `invoice:create` - - `plan:basic:read` Args: collection_method: How the invoice should be collected. Use charge_automatically to charge a stored @@ -968,7 +962,6 @@ async def retrieve( Required permissions: - `invoice:basic:read` - - `plan:basic:read` Args: extra_headers: Send extra headers @@ -992,10 +985,10 @@ async def retrieve( def list( self, *, - company_id: str, after: Optional[str] | Omit = omit, before: Optional[str] | Omit = omit, collection_methods: Optional[List[CollectionMethod]] | Omit = omit, + company_id: Optional[str] | Omit = omit, created_after: Union[str, datetime, None] | Omit = omit, created_before: Union[str, datetime, None] | Omit = omit, direction: Optional[Direction] | Omit = omit, @@ -1018,17 +1011,16 @@ def list( Required permissions: - `invoice:basic:read` - - `plan:basic:read` Args: - company_id: The unique identifier of the company to list invoices for. - after: Returns the elements in the list that come after the specified cursor. before: Returns the elements in the list that come before the specified cursor. collection_methods: Filter invoices by their collection method. + company_id: The unique identifier of the company to list invoices for. + created_after: Only return invoices created after this timestamp. created_before: Only return invoices created before this timestamp. @@ -1064,10 +1056,10 @@ def list( timeout=timeout, query=maybe_transform( { - "company_id": company_id, "after": after, "before": before, "collection_methods": collection_methods, + "company_id": company_id, "created_after": created_after, "created_before": created_before, "direction": direction, diff --git a/src/whop_sdk/resources/leads.py b/src/whop_sdk/resources/leads.py index df6f9929..fd31d3d3 100644 --- a/src/whop_sdk/resources/leads.py +++ b/src/whop_sdk/resources/leads.py @@ -27,6 +27,8 @@ class LeadsResource(SyncAPIResource): + """Leads""" + @cached_property def with_raw_response(self) -> LeadsResourceWithRawResponse: """ @@ -288,6 +290,8 @@ def list( class AsyncLeadsResource(AsyncAPIResource): + """Leads""" + @cached_property def with_raw_response(self) -> AsyncLeadsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/ledger_accounts.py b/src/whop_sdk/resources/ledger_accounts.py index d213b5ca..cbbc4ee6 100644 --- a/src/whop_sdk/resources/ledger_accounts.py +++ b/src/whop_sdk/resources/ledger_accounts.py @@ -20,6 +20,8 @@ class LedgerAccountsResource(SyncAPIResource): + """Ledger accounts""" + @cached_property def with_raw_response(self) -> LedgerAccountsResourceWithRawResponse: """ @@ -79,6 +81,8 @@ def retrieve( class AsyncLedgerAccountsResource(AsyncAPIResource): + """Ledger accounts""" + @cached_property def with_raw_response(self) -> AsyncLedgerAccountsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/members.py b/src/whop_sdk/resources/members.py index 811f248f..a9d50568 100644 --- a/src/whop_sdk/resources/members.py +++ b/src/whop_sdk/resources/members.py @@ -32,6 +32,8 @@ class MembersResource(SyncAPIResource): + """Members""" + @cached_property def with_raw_response(self) -> MembersResourceWithRawResponse: """ @@ -208,6 +210,8 @@ def list( class AsyncMembersResource(AsyncAPIResource): + """Members""" + @cached_property def with_raw_response(self) -> AsyncMembersResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/memberships.py b/src/whop_sdk/resources/memberships.py index 22af0afb..bf123a17 100644 --- a/src/whop_sdk/resources/memberships.py +++ b/src/whop_sdk/resources/memberships.py @@ -13,6 +13,7 @@ membership_pause_params, membership_cancel_params, membership_update_params, + membership_add_free_days_params, ) from .._types import Body, Omit, Query, Headers, NotGiven, SequenceNotStr, omit, not_given from .._utils import maybe_transform, async_maybe_transform @@ -36,6 +37,8 @@ class MembershipsResource(SyncAPIResource): + """Memberships""" + @cached_property def with_raw_response(self) -> MembershipsResourceWithRawResponse: """ @@ -244,6 +247,51 @@ def list( model=MembershipListResponse, ) + def add_free_days( + self, + id: str, + *, + free_days: int, + # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. + # The extra values given here take precedence over values defined on the client or passed to this method. + extra_headers: Headers | None = None, + extra_query: Query | None = None, + extra_body: Body | None = None, + timeout: float | httpx.Timeout | None | NotGiven = not_given, + ) -> Membership: + """ + Add free days to extend a membership's current billing period, expiration date, + or Stripe trial. + + Required permissions: + + - `member:manage` + - `member:email:read` + - `member:basic:read` + + Args: + free_days: The number of free days to add (1-1095). Extends the billing period, expiration + date, or Stripe trial depending on plan type. + + extra_headers: Send extra headers + + extra_query: Add additional query parameters to the request + + extra_body: Add additional JSON properties to the request + + timeout: Override the client-level default timeout for this request, in seconds + """ + if not id: + raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") + return self._post( + f"/memberships/{id}/add_free_days", + body=maybe_transform({"free_days": free_days}, membership_add_free_days_params.MembershipAddFreeDaysParams), + options=make_request_options( + extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout + ), + cast_to=Membership, + ) + def cancel( self, id: str, @@ -262,7 +310,7 @@ def cancel( Required permissions: - - `member:manage` + - `membership:cancel` - `member:email:read` - `member:basic:read` @@ -419,6 +467,8 @@ def uncancel( class AsyncMembershipsResource(AsyncAPIResource): + """Memberships""" + @cached_property def with_raw_response(self) -> AsyncMembershipsResourceWithRawResponse: """ @@ -627,6 +677,53 @@ def list( model=MembershipListResponse, ) + async def add_free_days( + self, + id: str, + *, + free_days: int, + # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. + # The extra values given here take precedence over values defined on the client or passed to this method. + extra_headers: Headers | None = None, + extra_query: Query | None = None, + extra_body: Body | None = None, + timeout: float | httpx.Timeout | None | NotGiven = not_given, + ) -> Membership: + """ + Add free days to extend a membership's current billing period, expiration date, + or Stripe trial. + + Required permissions: + + - `member:manage` + - `member:email:read` + - `member:basic:read` + + Args: + free_days: The number of free days to add (1-1095). Extends the billing period, expiration + date, or Stripe trial depending on plan type. + + extra_headers: Send extra headers + + extra_query: Add additional query parameters to the request + + extra_body: Add additional JSON properties to the request + + timeout: Override the client-level default timeout for this request, in seconds + """ + if not id: + raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") + return await self._post( + f"/memberships/{id}/add_free_days", + body=await async_maybe_transform( + {"free_days": free_days}, membership_add_free_days_params.MembershipAddFreeDaysParams + ), + options=make_request_options( + extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout + ), + cast_to=Membership, + ) + async def cancel( self, id: str, @@ -645,7 +742,7 @@ async def cancel( Required permissions: - - `member:manage` + - `membership:cancel` - `member:email:read` - `member:basic:read` @@ -816,6 +913,9 @@ def __init__(self, memberships: MembershipsResource) -> None: self.list = to_raw_response_wrapper( memberships.list, ) + self.add_free_days = to_raw_response_wrapper( + memberships.add_free_days, + ) self.cancel = to_raw_response_wrapper( memberships.cancel, ) @@ -843,6 +943,9 @@ def __init__(self, memberships: AsyncMembershipsResource) -> None: self.list = async_to_raw_response_wrapper( memberships.list, ) + self.add_free_days = async_to_raw_response_wrapper( + memberships.add_free_days, + ) self.cancel = async_to_raw_response_wrapper( memberships.cancel, ) @@ -870,6 +973,9 @@ def __init__(self, memberships: MembershipsResource) -> None: self.list = to_streamed_response_wrapper( memberships.list, ) + self.add_free_days = to_streamed_response_wrapper( + memberships.add_free_days, + ) self.cancel = to_streamed_response_wrapper( memberships.cancel, ) @@ -897,6 +1003,9 @@ def __init__(self, memberships: AsyncMembershipsResource) -> None: self.list = async_to_streamed_response_wrapper( memberships.list, ) + self.add_free_days = async_to_streamed_response_wrapper( + memberships.add_free_days, + ) self.cancel = async_to_streamed_response_wrapper( memberships.cancel, ) diff --git a/src/whop_sdk/resources/messages.py b/src/whop_sdk/resources/messages.py index 73316027..06ba3f0b 100644 --- a/src/whop_sdk/resources/messages.py +++ b/src/whop_sdk/resources/messages.py @@ -28,6 +28,8 @@ class MessagesResource(SyncAPIResource): + """Messages""" + @cached_property def with_raw_response(self) -> MessagesResourceWithRawResponse: """ @@ -313,6 +315,8 @@ def delete( class AsyncMessagesResource(AsyncAPIResource): + """Messages""" + @cached_property def with_raw_response(self) -> AsyncMessagesResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/notifications.py b/src/whop_sdk/resources/notifications.py index f1eff29a..eaf1c066 100644 --- a/src/whop_sdk/resources/notifications.py +++ b/src/whop_sdk/resources/notifications.py @@ -25,6 +25,8 @@ class NotificationsResource(SyncAPIResource): + """Notifications""" + @cached_property def with_raw_response(self) -> NotificationsResourceWithRawResponse: """ @@ -208,6 +210,8 @@ def create( class AsyncNotificationsResource(AsyncAPIResource): + """Notifications""" + @cached_property def with_raw_response(self) -> AsyncNotificationsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/payment_methods.py b/src/whop_sdk/resources/payment_methods.py index 9e993655..9e9da3d2 100644 --- a/src/whop_sdk/resources/payment_methods.py +++ b/src/whop_sdk/resources/payment_methods.py @@ -28,6 +28,8 @@ class PaymentMethodsResource(SyncAPIResource): + """Payment methods""" + @cached_property def with_raw_response(self) -> PaymentMethodsResourceWithRawResponse: """ @@ -194,6 +196,8 @@ def list( class AsyncPaymentMethodsResource(AsyncAPIResource): + """Payment methods""" + @cached_property def with_raw_response(self) -> AsyncPaymentMethodsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/payments.py b/src/whop_sdk/resources/payments.py index d36041da..47e0be4c 100644 --- a/src/whop_sdk/resources/payments.py +++ b/src/whop_sdk/resources/payments.py @@ -34,6 +34,8 @@ class PaymentsResource(SyncAPIResource): + """Payments""" + @cached_property def with_raw_response(self) -> PaymentsResourceWithRawResponse: """ @@ -588,6 +590,8 @@ def void( class AsyncPaymentsResource(AsyncAPIResource): + """Payments""" + @cached_property def with_raw_response(self) -> AsyncPaymentsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/payout_methods.py b/src/whop_sdk/resources/payout_methods.py index 0333f57e..d0c5978d 100644 --- a/src/whop_sdk/resources/payout_methods.py +++ b/src/whop_sdk/resources/payout_methods.py @@ -26,6 +26,8 @@ class PayoutMethodsResource(SyncAPIResource): + """Payout methods""" + @cached_property def with_raw_response(self) -> PayoutMethodsResourceWithRawResponse: """ @@ -148,6 +150,8 @@ def list( class AsyncPayoutMethodsResource(AsyncAPIResource): + """Payout methods""" + @cached_property def with_raw_response(self) -> AsyncPayoutMethodsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/plans.py b/src/whop_sdk/resources/plans.py index 413c3f89..fbd116c4 100644 --- a/src/whop_sdk/resources/plans.py +++ b/src/whop_sdk/resources/plans.py @@ -36,6 +36,8 @@ class PlansResource(SyncAPIResource): + """Plans""" + @cached_property def with_raw_response(self) -> PlansResourceWithRawResponse: """ @@ -504,6 +506,8 @@ def delete( class AsyncPlansResource(AsyncAPIResource): + """Plans""" + @cached_property def with_raw_response(self) -> AsyncPlansResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/products.py b/src/whop_sdk/resources/products.py index a4b6793a..0c34deb9 100644 --- a/src/whop_sdk/resources/products.py +++ b/src/whop_sdk/resources/products.py @@ -35,6 +35,8 @@ class ProductsResource(SyncAPIResource): + """Products""" + @cached_property def with_raw_response(self) -> ProductsResourceWithRawResponse: """ @@ -453,6 +455,8 @@ def delete( class AsyncProductsResource(AsyncAPIResource): + """Products""" + @cached_property def with_raw_response(self) -> AsyncProductsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/promo_codes.py b/src/whop_sdk/resources/promo_codes.py index 4d8deb2f..5bb3b5d3 100644 --- a/src/whop_sdk/resources/promo_codes.py +++ b/src/whop_sdk/resources/promo_codes.py @@ -31,6 +31,8 @@ class PromoCodesResource(SyncAPIResource): + """Promo codes""" + @cached_property def with_raw_response(self) -> PromoCodesResourceWithRawResponse: """ @@ -325,6 +327,8 @@ def delete( class AsyncPromoCodesResource(AsyncAPIResource): + """Promo codes""" + @cached_property def with_raw_response(self) -> AsyncPromoCodesResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/reactions.py b/src/whop_sdk/resources/reactions.py index 46882546..901f51a8 100644 --- a/src/whop_sdk/resources/reactions.py +++ b/src/whop_sdk/resources/reactions.py @@ -27,6 +27,8 @@ class ReactionsResource(SyncAPIResource): + """Reactions""" + @cached_property def with_raw_response(self) -> ReactionsResourceWithRawResponse: """ @@ -252,6 +254,8 @@ def delete( class AsyncReactionsResource(AsyncAPIResource): + """Reactions""" + @cached_property def with_raw_response(self) -> AsyncReactionsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/refunds.py b/src/whop_sdk/resources/refunds.py index ed7ba09f..e9bc15a9 100644 --- a/src/whop_sdk/resources/refunds.py +++ b/src/whop_sdk/resources/refunds.py @@ -28,6 +28,8 @@ class RefundsResource(SyncAPIResource): + """Refunds""" + @cached_property def with_raw_response(self) -> RefundsResourceWithRawResponse: """ @@ -165,6 +167,8 @@ def list( class AsyncRefundsResource(AsyncAPIResource): + """Refunds""" + @cached_property def with_raw_response(self) -> AsyncRefundsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/reviews.py b/src/whop_sdk/resources/reviews.py index 3ce2c4d7..096ed767 100644 --- a/src/whop_sdk/resources/reviews.py +++ b/src/whop_sdk/resources/reviews.py @@ -27,6 +27,8 @@ class ReviewsResource(SyncAPIResource): + """Reviews""" + @cached_property def with_raw_response(self) -> ReviewsResourceWithRawResponse: """ @@ -157,6 +159,8 @@ def list( class AsyncReviewsResource(AsyncAPIResource): + """Reviews""" + @cached_property def with_raw_response(self) -> AsyncReviewsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/setup_intents.py b/src/whop_sdk/resources/setup_intents.py index e85baf44..71e5989c 100644 --- a/src/whop_sdk/resources/setup_intents.py +++ b/src/whop_sdk/resources/setup_intents.py @@ -28,6 +28,8 @@ class SetupIntentsResource(SyncAPIResource): + """Setup intents""" + @cached_property def with_raw_response(self) -> SetupIntentsResourceWithRawResponse: """ @@ -167,6 +169,8 @@ def list( class AsyncSetupIntentsResource(AsyncAPIResource): + """Setup intents""" + @cached_property def with_raw_response(self) -> AsyncSetupIntentsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/shipments.py b/src/whop_sdk/resources/shipments.py index 1b46c631..e6b88fe8 100644 --- a/src/whop_sdk/resources/shipments.py +++ b/src/whop_sdk/resources/shipments.py @@ -26,6 +26,8 @@ class ShipmentsResource(SyncAPIResource): + """Shipments""" + @cached_property def with_raw_response(self) -> ShipmentsResourceWithRawResponse: """ @@ -213,6 +215,8 @@ def list( class AsyncShipmentsResource(AsyncAPIResource): + """Shipments""" + @cached_property def with_raw_response(self) -> AsyncShipmentsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/support_channels.py b/src/whop_sdk/resources/support_channels.py index 7b5146ae..4fba5053 100644 --- a/src/whop_sdk/resources/support_channels.py +++ b/src/whop_sdk/resources/support_channels.py @@ -28,6 +28,8 @@ class SupportChannelsResource(SyncAPIResource): + """Support channels""" + @cached_property def with_raw_response(self) -> SupportChannelsResourceWithRawResponse: """ @@ -217,6 +219,8 @@ def list( class AsyncSupportChannelsResource(AsyncAPIResource): + """Support channels""" + @cached_property def with_raw_response(self) -> AsyncSupportChannelsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/topups.py b/src/whop_sdk/resources/topups.py index 858cd891..8dd55658 100644 --- a/src/whop_sdk/resources/topups.py +++ b/src/whop_sdk/resources/topups.py @@ -23,6 +23,8 @@ class TopupsResource(SyncAPIResource): + """Topups""" + @cached_property def with_raw_response(self) -> TopupsResourceWithRawResponse: """ @@ -101,6 +103,8 @@ def create( class AsyncTopupsResource(AsyncAPIResource): + """Topups""" + @cached_property def with_raw_response(self) -> AsyncTopupsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/transfers.py b/src/whop_sdk/resources/transfers.py index 6252141a..9837e10c 100644 --- a/src/whop_sdk/resources/transfers.py +++ b/src/whop_sdk/resources/transfers.py @@ -30,6 +30,8 @@ class TransfersResource(SyncAPIResource): + """Transfers""" + @cached_property def with_raw_response(self) -> TransfersResourceWithRawResponse: """ @@ -247,6 +249,8 @@ def list( class AsyncTransfersResource(AsyncAPIResource): + """Transfers""" + @cached_property def with_raw_response(self) -> AsyncTransfersResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/users.py b/src/whop_sdk/resources/users.py index 914efd00..4d01d560 100644 --- a/src/whop_sdk/resources/users.py +++ b/src/whop_sdk/resources/users.py @@ -25,6 +25,8 @@ class UsersResource(SyncAPIResource): + """Users""" + @cached_property def with_raw_response(self) -> UsersResourceWithRawResponse: """ @@ -172,6 +174,8 @@ def update_profile( class AsyncUsersResource(AsyncAPIResource): + """Users""" + @cached_property def with_raw_response(self) -> AsyncUsersResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/verifications.py b/src/whop_sdk/resources/verifications.py index 02f4b65d..829e8aa5 100644 --- a/src/whop_sdk/resources/verifications.py +++ b/src/whop_sdk/resources/verifications.py @@ -20,6 +20,8 @@ class VerificationsResource(SyncAPIResource): + """Verifications""" + @cached_property def with_raw_response(self) -> VerificationsResourceWithRawResponse: """ @@ -78,6 +80,8 @@ def retrieve( class AsyncVerificationsResource(AsyncAPIResource): + """Verifications""" + @cached_property def with_raw_response(self) -> AsyncVerificationsResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/webhooks.py b/src/whop_sdk/resources/webhooks.py index 340e6a65..b396c301 100644 --- a/src/whop_sdk/resources/webhooks.py +++ b/src/whop_sdk/resources/webhooks.py @@ -34,6 +34,8 @@ class WebhooksResource(SyncAPIResource): + """Webhooks""" + @cached_property def with_raw_response(self) -> WebhooksResourceWithRawResponse: """ @@ -346,6 +348,8 @@ def unwrap(self, payload: str, *, headers: Mapping[str, str], key: str | bytes | class AsyncWebhooksResource(AsyncAPIResource): + """Webhooks""" + @cached_property def with_raw_response(self) -> AsyncWebhooksResourceWithRawResponse: """ diff --git a/src/whop_sdk/resources/withdrawals.py b/src/whop_sdk/resources/withdrawals.py index 51b74257..3e6895cb 100644 --- a/src/whop_sdk/resources/withdrawals.py +++ b/src/whop_sdk/resources/withdrawals.py @@ -29,6 +29,8 @@ class WithdrawalsResource(SyncAPIResource): + """Withdrawals""" + @cached_property def with_raw_response(self) -> WithdrawalsResourceWithRawResponse: """ @@ -229,6 +231,8 @@ def list( class AsyncWithdrawalsResource(AsyncAPIResource): + """Withdrawals""" + @cached_property def with_raw_response(self) -> AsyncWithdrawalsResourceWithRawResponse: """ diff --git a/src/whop_sdk/types/__init__.py b/src/whop_sdk/types/__init__.py index 6d305f1a..c2af8893 100644 --- a/src/whop_sdk/types/__init__.py +++ b/src/whop_sdk/types/__init__.py @@ -139,9 +139,11 @@ from .payment_method_types import PaymentMethodTypes as PaymentMethodTypes from .plan_delete_response import PlanDeleteResponse as PlanDeleteResponse from .reaction_list_params import ReactionListParams as ReactionListParams +from .receipt_tax_behavior import ReceiptTaxBehavior as ReceiptTaxBehavior from .refund_list_response import RefundListResponse as RefundListResponse from .review_list_response import ReviewListResponse as ReviewListResponse from .shipment_list_params import ShipmentListParams as ShipmentListParams +from .social_link_websites import SocialLinkWebsites as SocialLinkWebsites from .transfer_list_params import TransferListParams as TransferListParams from .unwrap_webhook_event import UnwrapWebhookEvent as UnwrapWebhookEvent from .withdrawal_fee_types import WithdrawalFeeTypes as WithdrawalFeeTypes @@ -278,6 +280,8 @@ from .payment_method_list_response import PaymentMethodListResponse as PaymentMethodListResponse from .refund_created_webhook_event import RefundCreatedWebhookEvent as RefundCreatedWebhookEvent from .refund_updated_webhook_event import RefundUpdatedWebhookEvent as RefundUpdatedWebhookEvent +from .authorized_user_create_params import AuthorizedUserCreateParams as AuthorizedUserCreateParams +from .authorized_user_delete_params import AuthorizedUserDeleteParams as AuthorizedUserDeleteParams from .authorized_user_list_response import AuthorizedUserListResponse as AuthorizedUserListResponse from .course_lesson_delete_response import CourseLessonDeleteResponse as CourseLessonDeleteResponse from .dispute_created_webhook_event import DisputeCreatedWebhookEvent as DisputeCreatedWebhookEvent @@ -293,7 +297,10 @@ from .invoice_past_due_webhook_event import InvoicePastDueWebhookEvent as InvoicePastDueWebhookEvent from .payment_method_retrieve_params import PaymentMethodRetrieveParams as PaymentMethodRetrieveParams from .verification_retrieve_response import VerificationRetrieveResponse as VerificationRetrieveResponse +from .authorized_user_create_response import AuthorizedUserCreateResponse as AuthorizedUserCreateResponse +from .authorized_user_delete_response import AuthorizedUserDeleteResponse as AuthorizedUserDeleteResponse from .dispute_alert_retrieve_response import DisputeAlertRetrieveResponse as DisputeAlertRetrieveResponse +from .membership_add_free_days_params import MembershipAddFreeDaysParams as MembershipAddFreeDaysParams from .payment_succeeded_webhook_event import PaymentSucceededWebhookEvent as PaymentSucceededWebhookEvent from .payout_method_retrieve_response import PayoutMethodRetrieveResponse as PayoutMethodRetrieveResponse from .course_student_retrieve_response import CourseStudentRetrieveResponse as CourseStudentRetrieveResponse diff --git a/src/whop_sdk/types/ai_chat_create_params.py b/src/whop_sdk/types/ai_chat_create_params.py index 9b147c0e..4eee3a32 100644 --- a/src/whop_sdk/types/ai_chat_create_params.py +++ b/src/whop_sdk/types/ai_chat_create_params.py @@ -27,6 +27,12 @@ class AIChatCreateParams(TypedDict, total=False): message_source: Optional[Literal["manual", "suggestion", "link"]] """The source of an AI chat message""" + suggestion_type: Optional[str] + """ + The type of suggestion prompt that was clicked, when message_source is + 'suggestion'. + """ + title: Optional[str] """An optional display title for the AI chat thread (e.g., "Help with billing").""" diff --git a/src/whop_sdk/types/authorized_user_create_params.py b/src/whop_sdk/types/authorized_user_create_params.py new file mode 100644 index 00000000..b2b538a5 --- /dev/null +++ b/src/whop_sdk/types/authorized_user_create_params.py @@ -0,0 +1,27 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from __future__ import annotations + +from typing import Optional +from typing_extensions import Required, TypedDict + +from .shared.authorized_user_roles import AuthorizedUserRoles + +__all__ = ["AuthorizedUserCreateParams"] + + +class AuthorizedUserCreateParams(TypedDict, total=False): + company_id: Required[str] + """The ID of the company to add the authorized user to.""" + + role: Required[AuthorizedUserRoles] + """The role to assign to the authorized user within the company. + + Supported roles: 'moderator', 'sales_manager'. + """ + + user_id: Required[str] + """The ID of the user to add as an authorized user.""" + + send_emails: Optional[bool] + """Whether to send notification emails to the user on creation.""" diff --git a/src/whop_sdk/types/authorized_user_create_response.py b/src/whop_sdk/types/authorized_user_create_response.py new file mode 100644 index 00000000..1bf69abd --- /dev/null +++ b/src/whop_sdk/types/authorized_user_create_response.py @@ -0,0 +1,55 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from typing import Optional + +from .._models import BaseModel +from .shared.authorized_user_roles import AuthorizedUserRoles + +__all__ = ["AuthorizedUserCreateResponse", "Company", "User"] + + +class Company(BaseModel): + """The company this authorized user has access to.""" + + id: str + """The unique identifier for the company.""" + + title: str + """The display name of the company shown to customers.""" + + +class User(BaseModel): + """The user account linked to this authorized user record.""" + + id: str + """The unique identifier for the user.""" + + email: Optional[str] = None + """The user's email address. + + Requires the member:email:read permission to access. Null if not authorized. + """ + + name: Optional[str] = None + """The user's display name shown on their public profile.""" + + username: str + """The user's unique username shown on their public profile.""" + + +class AuthorizedUserCreateResponse(BaseModel): + """ + A user who has been granted administrative access to manage a company's dashboard and settings. + """ + + id: str + """The unique identifier for the authorized user.""" + + company: Company + """The company this authorized user has access to.""" + + role: AuthorizedUserRoles + """The permission role assigned to this authorized user within the company.""" + + user: User + """The user account linked to this authorized user record.""" diff --git a/src/whop_sdk/types/authorized_user_delete_params.py b/src/whop_sdk/types/authorized_user_delete_params.py new file mode 100644 index 00000000..ead84a1b --- /dev/null +++ b/src/whop_sdk/types/authorized_user_delete_params.py @@ -0,0 +1,16 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from __future__ import annotations + +from typing import Optional +from typing_extensions import TypedDict + +__all__ = ["AuthorizedUserDeleteParams"] + + +class AuthorizedUserDeleteParams(TypedDict, total=False): + company_id: Optional[str] + """The ID of the company the authorized user belongs to. + + Optional if the authorized user ID is provided. + """ diff --git a/src/whop_sdk/types/authorized_user_delete_response.py b/src/whop_sdk/types/authorized_user_delete_response.py new file mode 100644 index 00000000..b71b66f0 --- /dev/null +++ b/src/whop_sdk/types/authorized_user_delete_response.py @@ -0,0 +1,7 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from typing_extensions import TypeAlias + +__all__ = ["AuthorizedUserDeleteResponse"] + +AuthorizedUserDeleteResponse: TypeAlias = bool diff --git a/src/whop_sdk/types/company_update_params.py b/src/whop_sdk/types/company_update_params.py index c475d5fb..089fdafe 100644 --- a/src/whop_sdk/types/company_update_params.py +++ b/src/whop_sdk/types/company_update_params.py @@ -2,10 +2,12 @@ from __future__ import annotations -from typing import Optional +from typing import Iterable, Optional from typing_extensions import Required, TypedDict -__all__ = ["CompanyUpdateParams", "BannerImage", "Logo"] +from .social_link_websites import SocialLinkWebsites + +__all__ = ["CompanyUpdateParams", "BannerImage", "Logo", "SocialLink", "SocialLinkImage"] class CompanyUpdateParams(TypedDict, total=False): @@ -34,6 +36,13 @@ class CompanyUpdateParams(TypedDict, total=False): customers on behalf of this company. """ + social_links: Optional[Iterable[SocialLink]] + """The social media links to display on the company's store page. + + Pass the full list of desired social links — any existing links not included + will be removed. + """ + target_audience: Optional[str] """ The target audience for this company (e.g., 'beginner day traders aged 18-25 @@ -56,3 +65,32 @@ class Logo(TypedDict, total=False): id: Required[str] """The ID of an existing file object.""" + + +class SocialLinkImage(TypedDict, total=False): + """The custom image for the social link""" + + id: Required[str] + """The ID of an existing file object.""" + + +class SocialLink(TypedDict, total=False): + """Input for creating a social link for a company""" + + url: Required[str] + """The URL of the social link""" + + website: Required[SocialLinkWebsites] + """The website this link is for""" + + image: Optional[SocialLinkImage] + """The custom image for the social link""" + + order: Optional[str] + """The order of the social link""" + + title: Optional[str] + """The title of the social link""" + + website_order: Optional[str] + """The order of the website social link""" diff --git a/src/whop_sdk/types/forum_post_create_params.py b/src/whop_sdk/types/forum_post_create_params.py index 217521fc..6b8281a8 100644 --- a/src/whop_sdk/types/forum_post_create_params.py +++ b/src/whop_sdk/types/forum_post_create_params.py @@ -63,6 +63,12 @@ class ForumPostCreateParams(TypedDict, total=False): poll: Optional[Poll] """A poll to attach to this post, allowing members to vote on options.""" + rich_content: Optional[str] + """The rich content of the post in Tiptap JSON format. + + When provided, takes priority over the markdown content field for rendering. + """ + title: Optional[str] """The title of the post, displayed prominently at the top. diff --git a/src/whop_sdk/types/forum_post_list_response.py b/src/whop_sdk/types/forum_post_list_response.py index 4bb4f301..4cbd7083 100644 --- a/src/whop_sdk/types/forum_post_list_response.py +++ b/src/whop_sdk/types/forum_post_list_response.py @@ -1,11 +1,37 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -from typing import Optional +from typing import List, Optional from datetime import datetime from .._models import BaseModel -__all__ = ["ForumPostListResponse", "User"] +__all__ = ["ForumPostListResponse", "Attachment", "User"] + + +class Attachment(BaseModel): + """Represents an image attachment""" + + id: str + """Represents a unique identifier that is Base64 obfuscated. + + It is often used to refetch an object or as key for a cache. The ID type appears + in a JSON response as a String; however, it is not intended to be + human-readable. When expected as an input type, any string (such as + `"VXNlci0xMA=="`) or integer (such as `4`) input value will be accepted as an + ID. + """ + + content_type: Optional[str] = None + """The MIME type of the uploaded file (e.g., image/jpeg, video/mp4, audio/mpeg).""" + + filename: Optional[str] = None + """The original filename of the uploaded attachment, including its file extension.""" + + url: Optional[str] = None + """A pre-optimized URL for rendering this attachment on the client. + + This should be used for displaying attachments in apps. + """ class User(BaseModel): @@ -36,6 +62,9 @@ class ForumPostListResponse(BaseModel): ID. """ + attachments: List[Attachment] + """All file attachments on this post, such as images, documents, and videos.""" + comment_count: int """The total number of direct comments on this post.""" diff --git a/src/whop_sdk/types/forum_update_params.py b/src/whop_sdk/types/forum_update_params.py index 2e2a97bc..259496ec 100644 --- a/src/whop_sdk/types/forum_update_params.py +++ b/src/whop_sdk/types/forum_update_params.py @@ -3,16 +3,22 @@ from __future__ import annotations from typing import Optional -from typing_extensions import TypedDict +from typing_extensions import Required, TypedDict from .shared.who_can_post_types import WhoCanPostTypes from .shared.who_can_comment_types import WhoCanCommentTypes from .shared.email_notification_preferences import EmailNotificationPreferences -__all__ = ["ForumUpdateParams"] +__all__ = ["ForumUpdateParams", "BannerImage"] class ForumUpdateParams(TypedDict, total=False): + banner_image: Optional[BannerImage] + """The banner image displayed at the top of the forum page. + + Pass null to remove the existing banner. + """ + email_notification_preference: Optional[EmailNotificationPreferences] """Email notification preference option for a forum feed""" @@ -21,3 +27,13 @@ class ForumUpdateParams(TypedDict, total=False): who_can_post: Optional[WhoCanPostTypes] """Who can post on a forum feed""" + + +class BannerImage(TypedDict, total=False): + """The banner image displayed at the top of the forum page. + + Pass null to remove the existing banner. + """ + + id: Required[str] + """The ID of an existing file object.""" diff --git a/src/whop_sdk/types/invoice_create_params.py b/src/whop_sdk/types/invoice_create_params.py index a3c6104b..65c36fae 100644 --- a/src/whop_sdk/types/invoice_create_params.py +++ b/src/whop_sdk/types/invoice_create_params.py @@ -2,13 +2,14 @@ from __future__ import annotations -from typing import Union, Iterable, Optional +from typing import List, Union, Iterable, Optional from datetime import datetime from typing_extensions import Literal, Required, Annotated, TypeAlias, TypedDict from .._utils import PropertyInfo from .shared.plan_type import PlanType from .shared.visibility import Visibility +from .payment_method_types import PaymentMethodTypes from .shared.release_method import ReleaseMethod from .shared.collection_method import CollectionMethod @@ -17,17 +18,21 @@ "CreateInvoiceInputWithProductAndMemberID", "CreateInvoiceInputWithProductAndMemberIDPlan", "CreateInvoiceInputWithProductAndMemberIDPlanCustomField", + "CreateInvoiceInputWithProductAndMemberIDPlanPaymentMethodConfiguration", "CreateInvoiceInputWithProductAndMemberIDProduct", "CreateInvoiceInputWithProductAndEmailAddress", "CreateInvoiceInputWithProductAndEmailAddressPlan", "CreateInvoiceInputWithProductAndEmailAddressPlanCustomField", + "CreateInvoiceInputWithProductAndEmailAddressPlanPaymentMethodConfiguration", "CreateInvoiceInputWithProductAndEmailAddressProduct", "CreateInvoiceInputWithProductIDAndMemberID", "CreateInvoiceInputWithProductIDAndMemberIDPlan", "CreateInvoiceInputWithProductIDAndMemberIDPlanCustomField", + "CreateInvoiceInputWithProductIDAndMemberIDPlanPaymentMethodConfiguration", "CreateInvoiceInputWithProductIDAndEmailAddress", "CreateInvoiceInputWithProductIDAndEmailAddressPlan", "CreateInvoiceInputWithProductIDAndEmailAddressPlanCustomField", + "CreateInvoiceInputWithProductIDAndEmailAddressPlanPaymentMethodConfiguration", ] @@ -113,6 +118,34 @@ class CreateInvoiceInputWithProductAndMemberIDPlanCustomField(TypedDict, total=F """Whether or not the field is required.""" +class CreateInvoiceInputWithProductAndMemberIDPlanPaymentMethodConfiguration(TypedDict, total=False): + """The explicit payment method configuration for the plan. + + If not provided, the platform or company's defaults will apply. + """ + + disabled: Required[List[PaymentMethodTypes]] + """An array of payment method identifiers that are explicitly disabled. + + Only applies if the include_platform_defaults is true. + """ + + enabled: Required[List[PaymentMethodTypes]] + """An array of payment method identifiers that are explicitly enabled. + + This means these payment methods will be shown on checkout. Example use case is + to only enable a specific payment method like cashapp, or extending the platform + defaults with additional methods. + """ + + include_platform_defaults: Required[bool] + """ + Whether Whop's platform default payment method enablement settings are included + in this configuration. The full list of default payment methods can be found in + the documentation at docs.whop.com/payments. + """ + + class CreateInvoiceInputWithProductAndMemberIDPlan(TypedDict, total=False): """ The plan attributes defining the price, currency, and billing interval for this invoice. @@ -144,6 +177,15 @@ class CreateInvoiceInputWithProductAndMemberIDPlan(TypedDict, total=False): internal_notes: Optional[str] """A personal description or notes section for the business.""" + legacy_payment_method_controls: Optional[bool] + """Whether this plan uses legacy payment method controls""" + + payment_method_configuration: Optional[CreateInvoiceInputWithProductAndMemberIDPlanPaymentMethodConfiguration] + """The explicit payment method configuration for the plan. + + If not provided, the platform or company's defaults will apply. + """ + plan_type: Optional[PlanType] """The type of plan that can be attached to a product""" @@ -269,6 +311,34 @@ class CreateInvoiceInputWithProductAndEmailAddressPlanCustomField(TypedDict, tot """Whether or not the field is required.""" +class CreateInvoiceInputWithProductAndEmailAddressPlanPaymentMethodConfiguration(TypedDict, total=False): + """The explicit payment method configuration for the plan. + + If not provided, the platform or company's defaults will apply. + """ + + disabled: Required[List[PaymentMethodTypes]] + """An array of payment method identifiers that are explicitly disabled. + + Only applies if the include_platform_defaults is true. + """ + + enabled: Required[List[PaymentMethodTypes]] + """An array of payment method identifiers that are explicitly enabled. + + This means these payment methods will be shown on checkout. Example use case is + to only enable a specific payment method like cashapp, or extending the platform + defaults with additional methods. + """ + + include_platform_defaults: Required[bool] + """ + Whether Whop's platform default payment method enablement settings are included + in this configuration. The full list of default payment methods can be found in + the documentation at docs.whop.com/payments. + """ + + class CreateInvoiceInputWithProductAndEmailAddressPlan(TypedDict, total=False): """ The plan attributes defining the price, currency, and billing interval for this invoice. @@ -300,6 +370,15 @@ class CreateInvoiceInputWithProductAndEmailAddressPlan(TypedDict, total=False): internal_notes: Optional[str] """A personal description or notes section for the business.""" + legacy_payment_method_controls: Optional[bool] + """Whether this plan uses legacy payment method controls""" + + payment_method_configuration: Optional[CreateInvoiceInputWithProductAndEmailAddressPlanPaymentMethodConfiguration] + """The explicit payment method configuration for the plan. + + If not provided, the platform or company's defaults will apply. + """ + plan_type: Optional[PlanType] """The type of plan that can be attached to a product""" @@ -421,6 +500,34 @@ class CreateInvoiceInputWithProductIDAndMemberIDPlanCustomField(TypedDict, total """Whether or not the field is required.""" +class CreateInvoiceInputWithProductIDAndMemberIDPlanPaymentMethodConfiguration(TypedDict, total=False): + """The explicit payment method configuration for the plan. + + If not provided, the platform or company's defaults will apply. + """ + + disabled: Required[List[PaymentMethodTypes]] + """An array of payment method identifiers that are explicitly disabled. + + Only applies if the include_platform_defaults is true. + """ + + enabled: Required[List[PaymentMethodTypes]] + """An array of payment method identifiers that are explicitly enabled. + + This means these payment methods will be shown on checkout. Example use case is + to only enable a specific payment method like cashapp, or extending the platform + defaults with additional methods. + """ + + include_platform_defaults: Required[bool] + """ + Whether Whop's platform default payment method enablement settings are included + in this configuration. The full list of default payment methods can be found in + the documentation at docs.whop.com/payments. + """ + + class CreateInvoiceInputWithProductIDAndMemberIDPlan(TypedDict, total=False): """ The plan attributes defining the price, currency, and billing interval for this invoice. @@ -452,6 +559,15 @@ class CreateInvoiceInputWithProductIDAndMemberIDPlan(TypedDict, total=False): internal_notes: Optional[str] """A personal description or notes section for the business.""" + legacy_payment_method_controls: Optional[bool] + """Whether this plan uses legacy payment method controls""" + + payment_method_configuration: Optional[CreateInvoiceInputWithProductIDAndMemberIDPlanPaymentMethodConfiguration] + """The explicit payment method configuration for the plan. + + If not provided, the platform or company's defaults will apply. + """ + plan_type: Optional[PlanType] """The type of plan that can be attached to a product""" @@ -561,6 +677,34 @@ class CreateInvoiceInputWithProductIDAndEmailAddressPlanCustomField(TypedDict, t """Whether or not the field is required.""" +class CreateInvoiceInputWithProductIDAndEmailAddressPlanPaymentMethodConfiguration(TypedDict, total=False): + """The explicit payment method configuration for the plan. + + If not provided, the platform or company's defaults will apply. + """ + + disabled: Required[List[PaymentMethodTypes]] + """An array of payment method identifiers that are explicitly disabled. + + Only applies if the include_platform_defaults is true. + """ + + enabled: Required[List[PaymentMethodTypes]] + """An array of payment method identifiers that are explicitly enabled. + + This means these payment methods will be shown on checkout. Example use case is + to only enable a specific payment method like cashapp, or extending the platform + defaults with additional methods. + """ + + include_platform_defaults: Required[bool] + """ + Whether Whop's platform default payment method enablement settings are included + in this configuration. The full list of default payment methods can be found in + the documentation at docs.whop.com/payments. + """ + + class CreateInvoiceInputWithProductIDAndEmailAddressPlan(TypedDict, total=False): """ The plan attributes defining the price, currency, and billing interval for this invoice. @@ -592,6 +736,15 @@ class CreateInvoiceInputWithProductIDAndEmailAddressPlan(TypedDict, total=False) internal_notes: Optional[str] """A personal description or notes section for the business.""" + legacy_payment_method_controls: Optional[bool] + """Whether this plan uses legacy payment method controls""" + + payment_method_configuration: Optional[CreateInvoiceInputWithProductIDAndEmailAddressPlanPaymentMethodConfiguration] + """The explicit payment method configuration for the plan. + + If not provided, the platform or company's defaults will apply. + """ + plan_type: Optional[PlanType] """The type of plan that can be attached to a product""" diff --git a/src/whop_sdk/types/invoice_list_params.py b/src/whop_sdk/types/invoice_list_params.py index d1a4da26..2adb1912 100644 --- a/src/whop_sdk/types/invoice_list_params.py +++ b/src/whop_sdk/types/invoice_list_params.py @@ -4,7 +4,7 @@ from typing import List, Union, Optional from datetime import datetime -from typing_extensions import Literal, Required, Annotated, TypedDict +from typing_extensions import Literal, Annotated, TypedDict from .._types import SequenceNotStr from .._utils import PropertyInfo @@ -16,9 +16,6 @@ class InvoiceListParams(TypedDict, total=False): - company_id: Required[str] - """The unique identifier of the company to list invoices for.""" - after: Optional[str] """Returns the elements in the list that come after the specified cursor.""" @@ -28,6 +25,9 @@ class InvoiceListParams(TypedDict, total=False): collection_methods: Optional[List[CollectionMethod]] """Filter invoices by their collection method.""" + company_id: Optional[str] + """The unique identifier of the company to list invoices for.""" + created_after: Annotated[Union[str, datetime, None], PropertyInfo(format="iso8601")] """Only return invoices created after this timestamp.""" diff --git a/src/whop_sdk/types/membership_add_free_days_params.py b/src/whop_sdk/types/membership_add_free_days_params.py new file mode 100644 index 00000000..568b654b --- /dev/null +++ b/src/whop_sdk/types/membership_add_free_days_params.py @@ -0,0 +1,16 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from __future__ import annotations + +from typing_extensions import Required, TypedDict + +__all__ = ["MembershipAddFreeDaysParams"] + + +class MembershipAddFreeDaysParams(TypedDict, total=False): + free_days: Required[int] + """The number of free days to add (1-1095). + + Extends the billing period, expiration date, or Stripe trial depending on plan + type. + """ diff --git a/src/whop_sdk/types/message_list_response.py b/src/whop_sdk/types/message_list_response.py index 92e9660e..f6652e99 100644 --- a/src/whop_sdk/types/message_list_response.py +++ b/src/whop_sdk/types/message_list_response.py @@ -87,6 +87,15 @@ class MessageListResponse(BaseModel): is_pinned: bool """Whether this message is pinned to the top of the channel for easy access.""" + mentions: List[str] + """A list of user IDs that are explicitly mentioned in this message.""" + + mentions_everyone: bool + """ + Whether the message includes an @everyone mention that notifies all channel + members. + """ + message_type: DmsPostTypes """The classification of this message: regular, system, or automated.""" diff --git a/src/whop_sdk/types/payment_list_response.py b/src/whop_sdk/types/payment_list_response.py index 438f5ecd..6ba171dd 100644 --- a/src/whop_sdk/types/payment_list_response.py +++ b/src/whop_sdk/types/payment_list_response.py @@ -9,6 +9,7 @@ from .shared.currency import Currency from .shared.promo_type import PromoType from .payment_method_types import PaymentMethodTypes +from .receipt_tax_behavior import ReceiptTaxBehavior from .shared.receipt_status import ReceiptStatus from .shared.membership_status import MembershipStatus from .shared.friendly_receipt_status import FriendlyReceiptStatus @@ -345,6 +346,15 @@ class PaymentListResponse(BaseModel): subtotal: Optional[float] = None """The subtotal to show to the creator (excluding buyer fees).""" + tax_amount: Optional[float] = None + """The calculated amount of the sales/VAT tax (if applicable).""" + + tax_behavior: Optional[ReceiptTaxBehavior] = None + """ + The type of tax inclusivity applied to the receipt, for determining whether the + tax is included in the final price, or paid on top. + """ + total: Optional[float] = None """The total to show to the creator (excluding buyer fees).""" diff --git a/src/whop_sdk/types/payment_method_types.py b/src/whop_sdk/types/payment_method_types.py index c61cc63f..1a74b27a 100644 --- a/src/whop_sdk/types/payment_method_types.py +++ b/src/whop_sdk/types/payment_method_types.py @@ -25,6 +25,7 @@ "cashapp", "claritypay", "coinbase", + "coinflow", "crypto", "custom", "customer_balance", diff --git a/src/whop_sdk/types/payment_provider.py b/src/whop_sdk/types/payment_provider.py index c2ba590b..748a6e2f 100644 --- a/src/whop_sdk/types/payment_provider.py +++ b/src/whop_sdk/types/payment_provider.py @@ -17,4 +17,5 @@ "claritypay", "checkout_dot_com", "airwallex", + "coinflow", ] diff --git a/src/whop_sdk/types/receipt_tax_behavior.py b/src/whop_sdk/types/receipt_tax_behavior.py new file mode 100644 index 00000000..3d0ea68a --- /dev/null +++ b/src/whop_sdk/types/receipt_tax_behavior.py @@ -0,0 +1,7 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from typing_extensions import Literal, TypeAlias + +__all__ = ["ReceiptTaxBehavior"] + +ReceiptTaxBehavior: TypeAlias = Literal["exclusive", "inclusive", "unspecified", "unable_to_collect"] diff --git a/src/whop_sdk/types/refund_created_webhook_event.py b/src/whop_sdk/types/refund_created_webhook_event.py index cd83e28c..3d2d9655 100644 --- a/src/whop_sdk/types/refund_created_webhook_event.py +++ b/src/whop_sdk/types/refund_created_webhook_event.py @@ -11,6 +11,7 @@ from .shared.currency import Currency from .payment_provider import PaymentProvider from .payment_method_types import PaymentMethodTypes +from .receipt_tax_behavior import ReceiptTaxBehavior from .refund_reference_type import RefundReferenceType from .refund_reference_status import RefundReferenceStatus from .shared.membership_status import MembershipStatus @@ -112,6 +113,18 @@ class DataPayment(BaseModel): subtotal: Optional[float] = None """The subtotal to show to the creator (excluding buyer fees).""" + tax_amount: Optional[float] = None + """The calculated amount of the sales/VAT tax (if applicable).""" + + tax_behavior: Optional[ReceiptTaxBehavior] = None + """ + The type of tax inclusivity applied to the receipt, for determining whether the + tax is included in the final price, or paid on top. + """ + + tax_refunded_amount: Optional[float] = None + """The amount of tax that has been refunded (if applicable).""" + total: Optional[float] = None """The total to show to the creator (excluding buyer fees).""" diff --git a/src/whop_sdk/types/refund_retrieve_response.py b/src/whop_sdk/types/refund_retrieve_response.py index 973ec6c3..57fc6384 100644 --- a/src/whop_sdk/types/refund_retrieve_response.py +++ b/src/whop_sdk/types/refund_retrieve_response.py @@ -10,6 +10,7 @@ from .shared.currency import Currency from .payment_provider import PaymentProvider from .payment_method_types import PaymentMethodTypes +from .receipt_tax_behavior import ReceiptTaxBehavior from .refund_reference_type import RefundReferenceType from .refund_reference_status import RefundReferenceStatus from .shared.membership_status import MembershipStatus @@ -104,6 +105,18 @@ class Payment(BaseModel): subtotal: Optional[float] = None """The subtotal to show to the creator (excluding buyer fees).""" + tax_amount: Optional[float] = None + """The calculated amount of the sales/VAT tax (if applicable).""" + + tax_behavior: Optional[ReceiptTaxBehavior] = None + """ + The type of tax inclusivity applied to the receipt, for determining whether the + tax is included in the final price, or paid on top. + """ + + tax_refunded_amount: Optional[float] = None + """The amount of tax that has been refunded (if applicable).""" + total: Optional[float] = None """The total to show to the creator (excluding buyer fees).""" diff --git a/src/whop_sdk/types/refund_updated_webhook_event.py b/src/whop_sdk/types/refund_updated_webhook_event.py index c7d7c86e..c5000b31 100644 --- a/src/whop_sdk/types/refund_updated_webhook_event.py +++ b/src/whop_sdk/types/refund_updated_webhook_event.py @@ -11,6 +11,7 @@ from .shared.currency import Currency from .payment_provider import PaymentProvider from .payment_method_types import PaymentMethodTypes +from .receipt_tax_behavior import ReceiptTaxBehavior from .refund_reference_type import RefundReferenceType from .refund_reference_status import RefundReferenceStatus from .shared.membership_status import MembershipStatus @@ -112,6 +113,18 @@ class DataPayment(BaseModel): subtotal: Optional[float] = None """The subtotal to show to the creator (excluding buyer fees).""" + tax_amount: Optional[float] = None + """The calculated amount of the sales/VAT tax (if applicable).""" + + tax_behavior: Optional[ReceiptTaxBehavior] = None + """ + The type of tax inclusivity applied to the receipt, for determining whether the + tax is included in the final price, or paid on top. + """ + + tax_refunded_amount: Optional[float] = None + """The amount of tax that has been refunded (if applicable).""" + total: Optional[float] = None """The total to show to the creator (excluding buyer fees).""" diff --git a/src/whop_sdk/types/shared/authorized_user_roles.py b/src/whop_sdk/types/shared/authorized_user_roles.py index 877db6d2..10d0fe2c 100644 --- a/src/whop_sdk/types/shared/authorized_user_roles.py +++ b/src/whop_sdk/types/shared/authorized_user_roles.py @@ -5,5 +5,5 @@ __all__ = ["AuthorizedUserRoles"] AuthorizedUserRoles: TypeAlias = Literal[ - "owner", "admin", "sales_manager", "moderator", "app_manager", "support", "manager" + "owner", "admin", "sales_manager", "moderator", "app_manager", "support", "manager", "custom" ] diff --git a/src/whop_sdk/types/shared/company.py b/src/whop_sdk/types/shared/company.py index e30b8c1d..6f4bf53e 100644 --- a/src/whop_sdk/types/shared/company.py +++ b/src/whop_sdk/types/shared/company.py @@ -2,9 +2,9 @@ from typing import Dict, List, Optional from datetime import datetime -from typing_extensions import Literal from ..._models import BaseModel +from ..social_link_websites import SocialLinkWebsites __all__ = ["Company", "Logo", "OwnerUser", "SocialLink"] @@ -41,7 +41,7 @@ class SocialLink(BaseModel): url: str """The URL of the social media profile or external link.""" - website: Literal["x", "instagram", "facebook", "tiktok", "youtube", "linkedin", "twitch", "website", "custom"] + website: SocialLinkWebsites """The website""" diff --git a/src/whop_sdk/types/shared/forum_post.py b/src/whop_sdk/types/shared/forum_post.py index d3af3981..7a6136d7 100644 --- a/src/whop_sdk/types/shared/forum_post.py +++ b/src/whop_sdk/types/shared/forum_post.py @@ -1,11 +1,37 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -from typing import Optional +from typing import List, Optional from datetime import datetime from ..._models import BaseModel -__all__ = ["ForumPost", "User"] +__all__ = ["ForumPost", "Attachment", "User"] + + +class Attachment(BaseModel): + """Represents an image attachment""" + + id: str + """Represents a unique identifier that is Base64 obfuscated. + + It is often used to refetch an object or as key for a cache. The ID type appears + in a JSON response as a String; however, it is not intended to be + human-readable. When expected as an input type, any string (such as + `"VXNlci0xMA=="`) or integer (such as `4`) input value will be accepted as an + ID. + """ + + content_type: Optional[str] = None + """The MIME type of the uploaded file (e.g., image/jpeg, video/mp4, audio/mpeg).""" + + filename: Optional[str] = None + """The original filename of the uploaded attachment, including its file extension.""" + + url: Optional[str] = None + """A pre-optimized URL for rendering this attachment on the client. + + This should be used for displaying attachments in apps. + """ class User(BaseModel): @@ -36,6 +62,9 @@ class ForumPost(BaseModel): ID. """ + attachments: List[Attachment] + """All file attachments on this post, such as images, documents, and videos.""" + comment_count: int """The total number of direct comments on this post.""" diff --git a/src/whop_sdk/types/shared/message.py b/src/whop_sdk/types/shared/message.py index 5b0ad97d..a24f502d 100644 --- a/src/whop_sdk/types/shared/message.py +++ b/src/whop_sdk/types/shared/message.py @@ -87,6 +87,15 @@ class Message(BaseModel): is_pinned: bool """Whether this message is pinned to the top of the channel for easy access.""" + mentions: List[str] + """A list of user IDs that are explicitly mentioned in this message.""" + + mentions_everyone: bool + """ + Whether the message includes an @everyone mention that notifies all channel + members. + """ + message_type: DmsPostTypes """The classification of this message: regular, system, or automated.""" diff --git a/src/whop_sdk/types/shared/payment.py b/src/whop_sdk/types/shared/payment.py index 07f5c8d5..6993b54d 100644 --- a/src/whop_sdk/types/shared/payment.py +++ b/src/whop_sdk/types/shared/payment.py @@ -13,6 +13,7 @@ from ..dispute_statuses import DisputeStatuses from .membership_status import MembershipStatus from ..payment_method_types import PaymentMethodTypes +from ..receipt_tax_behavior import ReceiptTaxBehavior from .friendly_receipt_status import FriendlyReceiptStatus __all__ = [ @@ -509,6 +510,18 @@ class Payment(BaseModel): subtotal: Optional[float] = None """The subtotal to show to the creator (excluding buyer fees).""" + tax_amount: Optional[float] = None + """The calculated amount of the sales/VAT tax (if applicable).""" + + tax_behavior: Optional[ReceiptTaxBehavior] = None + """ + The type of tax inclusivity applied to the receipt, for determining whether the + tax is included in the final price, or paid on top. + """ + + tax_refunded_amount: Optional[float] = None + """The amount of tax that has been refunded (if applicable).""" + total: Optional[float] = None """The total to show to the creator (excluding buyer fees).""" diff --git a/src/whop_sdk/types/shared_params/authorized_user_roles.py b/src/whop_sdk/types/shared_params/authorized_user_roles.py index 2235fde7..c61f3cc6 100644 --- a/src/whop_sdk/types/shared_params/authorized_user_roles.py +++ b/src/whop_sdk/types/shared_params/authorized_user_roles.py @@ -7,5 +7,5 @@ __all__ = ["AuthorizedUserRoles"] AuthorizedUserRoles: TypeAlias = Literal[ - "owner", "admin", "sales_manager", "moderator", "app_manager", "support", "manager" + "owner", "admin", "sales_manager", "moderator", "app_manager", "support", "manager", "custom" ] diff --git a/src/whop_sdk/types/social_link_websites.py b/src/whop_sdk/types/social_link_websites.py new file mode 100644 index 00000000..7e96a15d --- /dev/null +++ b/src/whop_sdk/types/social_link_websites.py @@ -0,0 +1,9 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from typing_extensions import Literal, TypeAlias + +__all__ = ["SocialLinkWebsites"] + +SocialLinkWebsites: TypeAlias = Literal[ + "x", "instagram", "facebook", "tiktok", "youtube", "linkedin", "twitch", "website", "custom" +] diff --git a/tests/api_resources/test_ai_chats.py b/tests/api_resources/test_ai_chats.py index 8681f573..3f155d29 100644 --- a/tests/api_resources/test_ai_chats.py +++ b/tests/api_resources/test_ai_chats.py @@ -38,6 +38,7 @@ def test_method_create_with_all_params(self, client: Whop) -> None: current_company_id="current_company_id", message_attachments=[{"id": "id"}], message_source="manual", + suggestion_type="suggestion_type", title="title", ) assert_matches_type(AIChat, ai_chat, path=["response"]) @@ -265,6 +266,7 @@ async def test_method_create_with_all_params(self, async_client: AsyncWhop) -> N current_company_id="current_company_id", message_attachments=[{"id": "id"}], message_source="manual", + suggestion_type="suggestion_type", title="title", ) assert_matches_type(AIChat, ai_chat, path=["response"]) diff --git a/tests/api_resources/test_authorized_users.py b/tests/api_resources/test_authorized_users.py index a0e6a63f..945730cd 100644 --- a/tests/api_resources/test_authorized_users.py +++ b/tests/api_resources/test_authorized_users.py @@ -11,6 +11,8 @@ from tests.utils import assert_matches_type from whop_sdk.types import ( AuthorizedUserListResponse, + AuthorizedUserCreateResponse, + AuthorizedUserDeleteResponse, AuthorizedUserRetrieveResponse, ) from whop_sdk._utils import parse_datetime @@ -22,6 +24,57 @@ class TestAuthorizedUsers: parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"]) + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_method_create(self, client: Whop) -> None: + authorized_user = client.authorized_users.create( + company_id="biz_xxxxxxxxxxxxxx", + role="owner", + user_id="user_xxxxxxxxxxxxx", + ) + assert_matches_type(AuthorizedUserCreateResponse, authorized_user, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_method_create_with_all_params(self, client: Whop) -> None: + authorized_user = client.authorized_users.create( + company_id="biz_xxxxxxxxxxxxxx", + role="owner", + user_id="user_xxxxxxxxxxxxx", + send_emails=True, + ) + assert_matches_type(AuthorizedUserCreateResponse, authorized_user, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_raw_response_create(self, client: Whop) -> None: + response = client.authorized_users.with_raw_response.create( + company_id="biz_xxxxxxxxxxxxxx", + role="owner", + user_id="user_xxxxxxxxxxxxx", + ) + + assert response.is_closed is True + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + authorized_user = response.parse() + assert_matches_type(AuthorizedUserCreateResponse, authorized_user, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_streaming_response_create(self, client: Whop) -> None: + with client.authorized_users.with_streaming_response.create( + company_id="biz_xxxxxxxxxxxxxx", + role="owner", + user_id="user_xxxxxxxxxxxxx", + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + + authorized_user = response.parse() + assert_matches_type(AuthorizedUserCreateResponse, authorized_user, path=["response"]) + + assert cast(Any, response.is_closed) is True + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_method_retrieve(self, client: Whop) -> None: @@ -108,12 +161,114 @@ def test_streaming_response_list(self, client: Whop) -> None: assert cast(Any, response.is_closed) is True + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_method_delete(self, client: Whop) -> None: + authorized_user = client.authorized_users.delete( + id="ausr_xxxxxxxxxxxxx", + ) + assert_matches_type(AuthorizedUserDeleteResponse, authorized_user, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_method_delete_with_all_params(self, client: Whop) -> None: + authorized_user = client.authorized_users.delete( + id="ausr_xxxxxxxxxxxxx", + company_id="biz_xxxxxxxxxxxxxx", + ) + assert_matches_type(AuthorizedUserDeleteResponse, authorized_user, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_raw_response_delete(self, client: Whop) -> None: + response = client.authorized_users.with_raw_response.delete( + id="ausr_xxxxxxxxxxxxx", + ) + + assert response.is_closed is True + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + authorized_user = response.parse() + assert_matches_type(AuthorizedUserDeleteResponse, authorized_user, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_streaming_response_delete(self, client: Whop) -> None: + with client.authorized_users.with_streaming_response.delete( + id="ausr_xxxxxxxxxxxxx", + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + + authorized_user = response.parse() + assert_matches_type(AuthorizedUserDeleteResponse, authorized_user, path=["response"]) + + assert cast(Any, response.is_closed) is True + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_path_params_delete(self, client: Whop) -> None: + with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"): + client.authorized_users.with_raw_response.delete( + id="", + ) + class TestAsyncAuthorizedUsers: parametrize = pytest.mark.parametrize( "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"] ) + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_method_create(self, async_client: AsyncWhop) -> None: + authorized_user = await async_client.authorized_users.create( + company_id="biz_xxxxxxxxxxxxxx", + role="owner", + user_id="user_xxxxxxxxxxxxx", + ) + assert_matches_type(AuthorizedUserCreateResponse, authorized_user, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_method_create_with_all_params(self, async_client: AsyncWhop) -> None: + authorized_user = await async_client.authorized_users.create( + company_id="biz_xxxxxxxxxxxxxx", + role="owner", + user_id="user_xxxxxxxxxxxxx", + send_emails=True, + ) + assert_matches_type(AuthorizedUserCreateResponse, authorized_user, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_raw_response_create(self, async_client: AsyncWhop) -> None: + response = await async_client.authorized_users.with_raw_response.create( + company_id="biz_xxxxxxxxxxxxxx", + role="owner", + user_id="user_xxxxxxxxxxxxx", + ) + + assert response.is_closed is True + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + authorized_user = await response.parse() + assert_matches_type(AuthorizedUserCreateResponse, authorized_user, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_streaming_response_create(self, async_client: AsyncWhop) -> None: + async with async_client.authorized_users.with_streaming_response.create( + company_id="biz_xxxxxxxxxxxxxx", + role="owner", + user_id="user_xxxxxxxxxxxxx", + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + + authorized_user = await response.parse() + assert_matches_type(AuthorizedUserCreateResponse, authorized_user, path=["response"]) + + assert cast(Any, response.is_closed) is True + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_method_retrieve(self, async_client: AsyncWhop) -> None: @@ -199,3 +354,54 @@ async def test_streaming_response_list(self, async_client: AsyncWhop) -> None: assert_matches_type(AsyncCursorPage[AuthorizedUserListResponse], authorized_user, path=["response"]) assert cast(Any, response.is_closed) is True + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_method_delete(self, async_client: AsyncWhop) -> None: + authorized_user = await async_client.authorized_users.delete( + id="ausr_xxxxxxxxxxxxx", + ) + assert_matches_type(AuthorizedUserDeleteResponse, authorized_user, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_method_delete_with_all_params(self, async_client: AsyncWhop) -> None: + authorized_user = await async_client.authorized_users.delete( + id="ausr_xxxxxxxxxxxxx", + company_id="biz_xxxxxxxxxxxxxx", + ) + assert_matches_type(AuthorizedUserDeleteResponse, authorized_user, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_raw_response_delete(self, async_client: AsyncWhop) -> None: + response = await async_client.authorized_users.with_raw_response.delete( + id="ausr_xxxxxxxxxxxxx", + ) + + assert response.is_closed is True + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + authorized_user = await response.parse() + assert_matches_type(AuthorizedUserDeleteResponse, authorized_user, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_streaming_response_delete(self, async_client: AsyncWhop) -> None: + async with async_client.authorized_users.with_streaming_response.delete( + id="ausr_xxxxxxxxxxxxx", + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + + authorized_user = await response.parse() + assert_matches_type(AuthorizedUserDeleteResponse, authorized_user, path=["response"]) + + assert cast(Any, response.is_closed) is True + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_path_params_delete(self, async_client: AsyncWhop) -> None: + with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"): + await async_client.authorized_users.with_raw_response.delete( + id="", + ) diff --git a/tests/api_resources/test_companies.py b/tests/api_resources/test_companies.py index 30eb5ebd..707ad468 100644 --- a/tests/api_resources/test_companies.py +++ b/tests/api_resources/test_companies.py @@ -130,6 +130,16 @@ def test_method_update_with_all_params(self, client: Whop) -> None: logo={"id": "id"}, route="route", send_customer_emails=True, + social_links=[ + { + "url": "https://example.com/path", + "website": "x", + "image": {"id": "id"}, + "order": "123.45", + "title": "title", + "website_order": "123.45", + } + ], target_audience="target_audience", title="title", ) @@ -326,6 +336,16 @@ async def test_method_update_with_all_params(self, async_client: AsyncWhop) -> N logo={"id": "id"}, route="route", send_customer_emails=True, + social_links=[ + { + "url": "https://example.com/path", + "website": "x", + "image": {"id": "id"}, + "order": "123.45", + "title": "title", + "website_order": "123.45", + } + ], target_audience="target_audience", title="title", ) diff --git a/tests/api_resources/test_forum_posts.py b/tests/api_resources/test_forum_posts.py index ead26f5a..c02f5b99 100644 --- a/tests/api_resources/test_forum_posts.py +++ b/tests/api_resources/test_forum_posts.py @@ -50,6 +50,7 @@ def test_method_create_with_all_params(self, client: Whop) -> None: } ] }, + rich_content="rich_content", title="title", visibility="members_only", ) @@ -261,6 +262,7 @@ async def test_method_create_with_all_params(self, async_client: AsyncWhop) -> N } ] }, + rich_content="rich_content", title="title", visibility="members_only", ) diff --git a/tests/api_resources/test_forums.py b/tests/api_resources/test_forums.py index eef1173c..1b1fdfea 100644 --- a/tests/api_resources/test_forums.py +++ b/tests/api_resources/test_forums.py @@ -74,6 +74,7 @@ def test_method_update(self, client: Whop) -> None: def test_method_update_with_all_params(self, client: Whop) -> None: forum = client.forums.update( id="id", + banner_image={"id": "id"}, email_notification_preference="all_admin_posts", who_can_comment="everyone", who_can_post="everyone", @@ -222,6 +223,7 @@ async def test_method_update(self, async_client: AsyncWhop) -> None: async def test_method_update_with_all_params(self, async_client: AsyncWhop) -> None: forum = await async_client.forums.update( id="id", + banner_image={"id": "id"}, email_notification_preference="all_admin_posts", who_can_comment="everyone", who_can_post="everyone", diff --git a/tests/api_resources/test_invoices.py b/tests/api_resources/test_invoices.py index 7db7c125..8ff6287c 100644 --- a/tests/api_resources/test_invoices.py +++ b/tests/api_resources/test_invoices.py @@ -57,6 +57,12 @@ def test_method_create_with_all_params_overload_1(self, client: Whop) -> None: "expiration_days": 42, "initial_price": 6.9, "internal_notes": "internal_notes", + "legacy_payment_method_controls": True, + "payment_method_configuration": { + "disabled": ["acss_debit"], + "enabled": ["acss_debit"], + "include_platform_defaults": True, + }, "plan_type": "renewal", "release_method": "buy_now", "renewal_price": 6.9, @@ -150,6 +156,12 @@ def test_method_create_with_all_params_overload_2(self, client: Whop) -> None: "expiration_days": 42, "initial_price": 6.9, "internal_notes": "internal_notes", + "legacy_payment_method_controls": True, + "payment_method_configuration": { + "disabled": ["acss_debit"], + "enabled": ["acss_debit"], + "include_platform_defaults": True, + }, "plan_type": "renewal", "release_method": "buy_now", "renewal_price": 6.9, @@ -243,6 +255,12 @@ def test_method_create_with_all_params_overload_3(self, client: Whop) -> None: "expiration_days": 42, "initial_price": 6.9, "internal_notes": "internal_notes", + "legacy_payment_method_controls": True, + "payment_method_configuration": { + "disabled": ["acss_debit"], + "enabled": ["acss_debit"], + "include_platform_defaults": True, + }, "plan_type": "renewal", "release_method": "buy_now", "renewal_price": 6.9, @@ -333,6 +351,12 @@ def test_method_create_with_all_params_overload_4(self, client: Whop) -> None: "expiration_days": 42, "initial_price": 6.9, "internal_notes": "internal_notes", + "legacy_payment_method_controls": True, + "payment_method_configuration": { + "disabled": ["acss_debit"], + "enabled": ["acss_debit"], + "include_platform_defaults": True, + }, "plan_type": "renewal", "release_method": "buy_now", "renewal_price": 6.9, @@ -431,19 +455,17 @@ def test_path_params_retrieve(self, client: Whop) -> None: @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_method_list(self, client: Whop) -> None: - invoice = client.invoices.list( - company_id="biz_xxxxxxxxxxxxxx", - ) + invoice = client.invoices.list() assert_matches_type(SyncCursorPage[InvoiceListItem], invoice, path=["response"]) @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_method_list_with_all_params(self, client: Whop) -> None: invoice = client.invoices.list( - company_id="biz_xxxxxxxxxxxxxx", after="after", before="before", collection_methods=["send_invoice"], + company_id="biz_xxxxxxxxxxxxxx", created_after=parse_datetime("2023-12-01T05:00:00.401Z"), created_before=parse_datetime("2023-12-01T05:00:00.401Z"), direction="asc", @@ -458,9 +480,7 @@ def test_method_list_with_all_params(self, client: Whop) -> None: @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_raw_response_list(self, client: Whop) -> None: - response = client.invoices.with_raw_response.list( - company_id="biz_xxxxxxxxxxxxxx", - ) + response = client.invoices.with_raw_response.list() assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -470,9 +490,7 @@ def test_raw_response_list(self, client: Whop) -> None: @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_streaming_response_list(self, client: Whop) -> None: - with client.invoices.with_streaming_response.list( - company_id="biz_xxxxxxxxxxxxxx", - ) as response: + with client.invoices.with_streaming_response.list() as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -566,6 +584,12 @@ async def test_method_create_with_all_params_overload_1(self, async_client: Asyn "expiration_days": 42, "initial_price": 6.9, "internal_notes": "internal_notes", + "legacy_payment_method_controls": True, + "payment_method_configuration": { + "disabled": ["acss_debit"], + "enabled": ["acss_debit"], + "include_platform_defaults": True, + }, "plan_type": "renewal", "release_method": "buy_now", "renewal_price": 6.9, @@ -659,6 +683,12 @@ async def test_method_create_with_all_params_overload_2(self, async_client: Asyn "expiration_days": 42, "initial_price": 6.9, "internal_notes": "internal_notes", + "legacy_payment_method_controls": True, + "payment_method_configuration": { + "disabled": ["acss_debit"], + "enabled": ["acss_debit"], + "include_platform_defaults": True, + }, "plan_type": "renewal", "release_method": "buy_now", "renewal_price": 6.9, @@ -752,6 +782,12 @@ async def test_method_create_with_all_params_overload_3(self, async_client: Asyn "expiration_days": 42, "initial_price": 6.9, "internal_notes": "internal_notes", + "legacy_payment_method_controls": True, + "payment_method_configuration": { + "disabled": ["acss_debit"], + "enabled": ["acss_debit"], + "include_platform_defaults": True, + }, "plan_type": "renewal", "release_method": "buy_now", "renewal_price": 6.9, @@ -842,6 +878,12 @@ async def test_method_create_with_all_params_overload_4(self, async_client: Asyn "expiration_days": 42, "initial_price": 6.9, "internal_notes": "internal_notes", + "legacy_payment_method_controls": True, + "payment_method_configuration": { + "disabled": ["acss_debit"], + "enabled": ["acss_debit"], + "include_platform_defaults": True, + }, "plan_type": "renewal", "release_method": "buy_now", "renewal_price": 6.9, @@ -940,19 +982,17 @@ async def test_path_params_retrieve(self, async_client: AsyncWhop) -> None: @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_method_list(self, async_client: AsyncWhop) -> None: - invoice = await async_client.invoices.list( - company_id="biz_xxxxxxxxxxxxxx", - ) + invoice = await async_client.invoices.list() assert_matches_type(AsyncCursorPage[InvoiceListItem], invoice, path=["response"]) @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_method_list_with_all_params(self, async_client: AsyncWhop) -> None: invoice = await async_client.invoices.list( - company_id="biz_xxxxxxxxxxxxxx", after="after", before="before", collection_methods=["send_invoice"], + company_id="biz_xxxxxxxxxxxxxx", created_after=parse_datetime("2023-12-01T05:00:00.401Z"), created_before=parse_datetime("2023-12-01T05:00:00.401Z"), direction="asc", @@ -967,9 +1007,7 @@ async def test_method_list_with_all_params(self, async_client: AsyncWhop) -> Non @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_raw_response_list(self, async_client: AsyncWhop) -> None: - response = await async_client.invoices.with_raw_response.list( - company_id="biz_xxxxxxxxxxxxxx", - ) + response = await async_client.invoices.with_raw_response.list() assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -979,9 +1017,7 @@ async def test_raw_response_list(self, async_client: AsyncWhop) -> None: @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_streaming_response_list(self, async_client: AsyncWhop) -> None: - async with async_client.invoices.with_streaming_response.list( - company_id="biz_xxxxxxxxxxxxxx", - ) as response: + async with async_client.invoices.with_streaming_response.list() as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" diff --git a/tests/api_resources/test_memberships.py b/tests/api_resources/test_memberships.py index 2972632c..69df8fcd 100644 --- a/tests/api_resources/test_memberships.py +++ b/tests/api_resources/test_memberships.py @@ -165,6 +165,52 @@ def test_streaming_response_list(self, client: Whop) -> None: assert cast(Any, response.is_closed) is True + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_method_add_free_days(self, client: Whop) -> None: + membership = client.memberships.add_free_days( + id="mem_xxxxxxxxxxxxxx", + free_days=42, + ) + assert_matches_type(Membership, membership, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_raw_response_add_free_days(self, client: Whop) -> None: + response = client.memberships.with_raw_response.add_free_days( + id="mem_xxxxxxxxxxxxxx", + free_days=42, + ) + + assert response.is_closed is True + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + membership = response.parse() + assert_matches_type(Membership, membership, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_streaming_response_add_free_days(self, client: Whop) -> None: + with client.memberships.with_streaming_response.add_free_days( + id="mem_xxxxxxxxxxxxxx", + free_days=42, + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + + membership = response.parse() + assert_matches_type(Membership, membership, path=["response"]) + + assert cast(Any, response.is_closed) is True + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_path_params_add_free_days(self, client: Whop) -> None: + with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"): + client.memberships.with_raw_response.add_free_days( + id="", + free_days=42, + ) + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_method_cancel(self, client: Whop) -> None: @@ -500,6 +546,52 @@ async def test_streaming_response_list(self, async_client: AsyncWhop) -> None: assert cast(Any, response.is_closed) is True + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_method_add_free_days(self, async_client: AsyncWhop) -> None: + membership = await async_client.memberships.add_free_days( + id="mem_xxxxxxxxxxxxxx", + free_days=42, + ) + assert_matches_type(Membership, membership, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_raw_response_add_free_days(self, async_client: AsyncWhop) -> None: + response = await async_client.memberships.with_raw_response.add_free_days( + id="mem_xxxxxxxxxxxxxx", + free_days=42, + ) + + assert response.is_closed is True + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + membership = await response.parse() + assert_matches_type(Membership, membership, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_streaming_response_add_free_days(self, async_client: AsyncWhop) -> None: + async with async_client.memberships.with_streaming_response.add_free_days( + id="mem_xxxxxxxxxxxxxx", + free_days=42, + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + + membership = await response.parse() + assert_matches_type(Membership, membership, path=["response"]) + + assert cast(Any, response.is_closed) is True + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_path_params_add_free_days(self, async_client: AsyncWhop) -> None: + with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"): + await async_client.memberships.with_raw_response.add_free_days( + id="", + free_days=42, + ) + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_method_cancel(self, async_client: AsyncWhop) -> None: diff --git a/tests/api_resources/test_webhooks.py b/tests/api_resources/test_webhooks.py index be74c103..fb41f430 100644 --- a/tests/api_resources/test_webhooks.py +++ b/tests/api_resources/test_webhooks.py @@ -257,9 +257,20 @@ def test_path_params_delete(self, client: Whop) -> None: "", ) - def test_method_unwrap(self, client: Whop) -> None: - key = b"secret" - hook = standardwebhooks.Webhook(key) + @pytest.mark.parametrize( + "client_opt,method_opt", + [ + ("whsec_c2VjcmV0Cg==", None), + ("wrong", b"secret\n"), + ("wrong", "whsec_c2VjcmV0Cg=="), + (None, b"secret\n"), + (None, "whsec_c2VjcmV0Cg=="), + ], + ) + def test_method_unwrap(self, client: Whop, client_opt: str | None, method_opt: str | bytes | None) -> None: + hook = standardwebhooks.Webhook(b"secret\n") + + client = client.with_options(webhook_key=client_opt) data = """{"id":"msg_xxxxxxxxxxxxxxxxxxxxxxxx","api_version":"v1","data":{"id":"inv_xxxxxxxxxxxxxx","created_at":"2023-12-01T05:00:00.401Z","current_plan":{"id":"plan_xxxxxxxxxxxxx","currency":"usd","formatted_price":"$10.00"},"due_date":"2023-12-01T05:00:00.401Z","email_address":"customer@example.com","fetch_invoice_token":"eyJhbGciOiJIUzI1NiJ9...","number":"#0001","status":"draft","user":{"id":"user_xxxxxxxxxxxxx","name":"John Doe","username":"johndoe42"}},"timestamp":"2025-01-01T00:00:00.000Z","type":"invoice.created","company_id":"biz_xxxxxxxxxxxxxx"}""" msg_id = "1" @@ -272,7 +283,7 @@ def test_method_unwrap(self, client: Whop) -> None: } try: - _ = client.webhooks.unwrap(data, headers=headers, key=key) + _ = client.webhooks.unwrap(data, headers=headers, key=method_opt) except standardwebhooks.WebhookVerificationError as e: raise AssertionError("Failed to unwrap valid webhook") from e @@ -283,7 +294,7 @@ def test_method_unwrap(self, client: Whop) -> None: ] for bad_header in bad_headers: with pytest.raises(standardwebhooks.WebhookVerificationError): - _ = client.webhooks.unwrap(data, headers=bad_header, key=key) + _ = client.webhooks.unwrap(data, headers=bad_header, key=method_opt) class TestAsyncWebhooks: @@ -523,9 +534,20 @@ async def test_path_params_delete(self, async_client: AsyncWhop) -> None: "", ) - def test_method_unwrap(self, client: Whop) -> None: - key = b"secret" - hook = standardwebhooks.Webhook(key) + @pytest.mark.parametrize( + "client_opt,method_opt", + [ + ("whsec_c2VjcmV0Cg==", None), + ("wrong", b"secret\n"), + ("wrong", "whsec_c2VjcmV0Cg=="), + (None, b"secret\n"), + (None, "whsec_c2VjcmV0Cg=="), + ], + ) + def test_method_unwrap(self, async_client: Whop, client_opt: str | None, method_opt: str | bytes | None) -> None: + hook = standardwebhooks.Webhook(b"secret\n") + + async_client = async_client.with_options(webhook_key=client_opt) data = """{"id":"msg_xxxxxxxxxxxxxxxxxxxxxxxx","api_version":"v1","data":{"id":"inv_xxxxxxxxxxxxxx","created_at":"2023-12-01T05:00:00.401Z","current_plan":{"id":"plan_xxxxxxxxxxxxx","currency":"usd","formatted_price":"$10.00"},"due_date":"2023-12-01T05:00:00.401Z","email_address":"customer@example.com","fetch_invoice_token":"eyJhbGciOiJIUzI1NiJ9...","number":"#0001","status":"draft","user":{"id":"user_xxxxxxxxxxxxx","name":"John Doe","username":"johndoe42"}},"timestamp":"2025-01-01T00:00:00.000Z","type":"invoice.created","company_id":"biz_xxxxxxxxxxxxxx"}""" msg_id = "1" @@ -538,7 +560,7 @@ def test_method_unwrap(self, client: Whop) -> None: } try: - _ = client.webhooks.unwrap(data, headers=headers, key=key) + _ = async_client.webhooks.unwrap(data, headers=headers, key=method_opt) except standardwebhooks.WebhookVerificationError as e: raise AssertionError("Failed to unwrap valid webhook") from e @@ -549,4 +571,4 @@ def test_method_unwrap(self, client: Whop) -> None: ] for bad_header in bad_headers: with pytest.raises(standardwebhooks.WebhookVerificationError): - _ = client.webhooks.unwrap(data, headers=bad_header, key=key) + _ = async_client.webhooks.unwrap(data, headers=bad_header, key=method_opt) From eb97b1e11478e7af610bca9d1d245cef395faf37 Mon Sep 17 00:00:00 2001 From: Connor Stevens Date: Wed, 11 Mar 2026 14:33:09 -0400 Subject: [PATCH 3/3] fix: reset version to 0.0.30 after reverting accidental 0.1.0 release The 0.1.0 release was never published. This restores the version to 0.0.30 while keeping the code changes from that commit. Co-Authored-By: Claude Opus 4.6 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 27 --------------------------- pyproject.toml | 2 +- src/whop_sdk/_version.py | 2 +- 4 files changed, 3 insertions(+), 30 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 3d2ac0bd..34ac707c 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.1.0" + ".": "0.0.30" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index eb73b72b..dd2e1246 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,32 +1,5 @@ # Changelog -## 0.1.0 (2026-03-10) - -Full Changelog: [v0.0.30...v0.1.0](https://github.com/whopio/whopsdk-python/compare/v0.0.30...v0.1.0) - -### Features - -* **api:** api update ([99175a1](https://github.com/whopio/whopsdk-python/commit/99175a149a05f6c54b225447a163b958af8ae61c)) -* **api:** api update ([fe17d66](https://github.com/whopio/whopsdk-python/commit/fe17d66f82035b4e58f474bfd136bf78114aaeab)) -* **api:** api update ([2ee7fe7](https://github.com/whopio/whopsdk-python/commit/2ee7fe71e837e7f91ed021b58217abaf89782879)) -* **api:** api update ([260853e](https://github.com/whopio/whopsdk-python/commit/260853e5ec3e85481b25da49ec4252b8b773e81a)) -* **api:** api update ([dcef405](https://github.com/whopio/whopsdk-python/commit/dcef4059c4ce8e9fdffa7d2aba850f325c53fb57)) -* **api:** api update ([abc268f](https://github.com/whopio/whopsdk-python/commit/abc268f2c7a2d59ed01e6fd595aaf3559b831302)) -* **api:** api update ([2f4cd94](https://github.com/whopio/whopsdk-python/commit/2f4cd94cdca591d743dd905f9b325d25fe45acb8)) -* **api:** api update ([ad1d5b7](https://github.com/whopio/whopsdk-python/commit/ad1d5b78546c5efd4214e22c42aa7a64227bc34c)) -* **api:** api update ([c2f142d](https://github.com/whopio/whopsdk-python/commit/c2f142d7aebad6ec2b140d70a8b93aa3205290ec)) -* **api:** api update ([d62a4b7](https://github.com/whopio/whopsdk-python/commit/d62a4b7961c1264d9c4055a026238a72822b8b19)) -* **api:** api update ([c60ab1e](https://github.com/whopio/whopsdk-python/commit/c60ab1e6568cef6910ec61773887c8b9546c52d4)) -* **api:** api update ([020c181](https://github.com/whopio/whopsdk-python/commit/020c181cf53f7811401fe01d4382fe490e6e5398)) -* **api:** manual updates ([b162886](https://github.com/whopio/whopsdk-python/commit/b1628865df13ae4d703571e46e738405652ad150)) - - -### Chores - -* **ci:** skip uploading artifacts on stainless-internal branches ([04a3a6d](https://github.com/whopio/whopsdk-python/commit/04a3a6d8263e34b42b476380846af4d4f31deedd)) -* **docs:** add missing descriptions ([beeb9ef](https://github.com/whopio/whopsdk-python/commit/beeb9efca946b1bc2e565239ac96d3d2d8642b6f)) -* **tests:** update webhook tests ([f740d3c](https://github.com/whopio/whopsdk-python/commit/f740d3c6d32e332ecea2ec902e9903c36055443e)) - ## 0.0.30 (2026-02-26) Full Changelog: [v0.0.29...v0.0.30](https://github.com/whopio/whopsdk-python/compare/v0.0.29...v0.0.30) diff --git a/pyproject.toml b/pyproject.toml index 9279b720..80fe5263 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "whop-sdk" -version = "0.1.0" +version = "0.0.30" description = "The official Python library for the Whop API" dynamic = ["readme"] license = "Apache-2.0" diff --git a/src/whop_sdk/_version.py b/src/whop_sdk/_version.py index 162053b4..c674ff57 100644 --- a/src/whop_sdk/_version.py +++ b/src/whop_sdk/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "whop_sdk" -__version__ = "0.1.0" # x-release-please-version +__version__ = "0.0.30" # x-release-please-version