whop-sdk 0.0.10__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- whop_sdk/__init__.py +94 -0
- whop_sdk/_base_client.py +1995 -0
- whop_sdk/_client.py +800 -0
- whop_sdk/_compat.py +219 -0
- whop_sdk/_constants.py +14 -0
- whop_sdk/_exceptions.py +112 -0
- whop_sdk/_files.py +123 -0
- whop_sdk/_models.py +857 -0
- whop_sdk/_qs.py +150 -0
- whop_sdk/_resource.py +43 -0
- whop_sdk/_response.py +830 -0
- whop_sdk/_streaming.py +333 -0
- whop_sdk/_types.py +260 -0
- whop_sdk/_utils/__init__.py +64 -0
- whop_sdk/_utils/_compat.py +45 -0
- whop_sdk/_utils/_datetime_parse.py +136 -0
- whop_sdk/_utils/_logs.py +25 -0
- whop_sdk/_utils/_proxy.py +65 -0
- whop_sdk/_utils/_reflection.py +42 -0
- whop_sdk/_utils/_resources_proxy.py +24 -0
- whop_sdk/_utils/_streams.py +12 -0
- whop_sdk/_utils/_sync.py +58 -0
- whop_sdk/_utils/_transform.py +457 -0
- whop_sdk/_utils/_typing.py +156 -0
- whop_sdk/_utils/_utils.py +421 -0
- whop_sdk/_version.py +4 -0
- whop_sdk/lib/.keep +4 -0
- whop_sdk/pagination.py +61 -0
- whop_sdk/py.typed +0 -0
- whop_sdk/resources/__init__.py +540 -0
- whop_sdk/resources/access_tokens.py +341 -0
- whop_sdk/resources/account_links.py +211 -0
- whop_sdk/resources/app_builds.py +587 -0
- whop_sdk/resources/apps.py +684 -0
- whop_sdk/resources/authorized_users.py +353 -0
- whop_sdk/resources/chat_channels.py +469 -0
- whop_sdk/resources/checkout_configurations.py +776 -0
- whop_sdk/resources/companies.py +465 -0
- whop_sdk/resources/course_chapters.py +602 -0
- whop_sdk/resources/course_lesson_interactions.py +343 -0
- whop_sdk/resources/course_lessons.py +1040 -0
- whop_sdk/resources/course_students.py +327 -0
- whop_sdk/resources/courses.py +776 -0
- whop_sdk/resources/disputes.py +693 -0
- whop_sdk/resources/entries.py +556 -0
- whop_sdk/resources/experiences.py +983 -0
- whop_sdk/resources/forum_posts.py +656 -0
- whop_sdk/resources/forums.py +446 -0
- whop_sdk/resources/invoices.py +1099 -0
- whop_sdk/resources/ledger_accounts.py +171 -0
- whop_sdk/resources/members.py +429 -0
- whop_sdk/resources/memberships.py +818 -0
- whop_sdk/resources/messages.py +558 -0
- whop_sdk/resources/notifications.py +388 -0
- whop_sdk/resources/payment_tokens.py +359 -0
- whop_sdk/resources/payments.py +1040 -0
- whop_sdk/resources/plans.py +1001 -0
- whop_sdk/resources/products.py +970 -0
- whop_sdk/resources/promo_codes.py +668 -0
- whop_sdk/resources/reactions.py +423 -0
- whop_sdk/resources/refunds.py +347 -0
- whop_sdk/resources/reviews.py +332 -0
- whop_sdk/resources/setup_intents.py +349 -0
- whop_sdk/resources/shipments.py +451 -0
- whop_sdk/resources/support_channels.py +455 -0
- whop_sdk/resources/transfers.py +513 -0
- whop_sdk/resources/users.py +248 -0
- whop_sdk/resources/webhooks.py +69 -0
- whop_sdk/resources/withdrawals.py +341 -0
- whop_sdk/types/__init__.py +262 -0
- whop_sdk/types/access_token_create_params.py +64 -0
- whop_sdk/types/access_token_create_response.py +15 -0
- whop_sdk/types/account_link_create_params.py +27 -0
- whop_sdk/types/account_link_create_response.py +15 -0
- whop_sdk/types/app_build_create_params.py +72 -0
- whop_sdk/types/app_build_list_params.py +42 -0
- whop_sdk/types/app_build_list_response.py +50 -0
- whop_sdk/types/app_create_params.py +19 -0
- whop_sdk/types/app_list_params.py +59 -0
- whop_sdk/types/app_list_response.py +110 -0
- whop_sdk/types/app_type.py +7 -0
- whop_sdk/types/app_update_params.py +67 -0
- whop_sdk/types/assessment_question_types.py +7 -0
- whop_sdk/types/authorized_user_list_params.py +41 -0
- whop_sdk/types/authorized_user_list_response.py +33 -0
- whop_sdk/types/authorized_user_retrieve_response.py +33 -0
- whop_sdk/types/billing_reasons.py +9 -0
- whop_sdk/types/card_brands.py +25 -0
- whop_sdk/types/chat_channel_list_params.py +28 -0
- whop_sdk/types/chat_channel_list_response.py +43 -0
- whop_sdk/types/chat_channel_update_params.py +32 -0
- whop_sdk/types/checkout_configuration_create_params.py +373 -0
- whop_sdk/types/checkout_configuration_list_params.py +41 -0
- whop_sdk/types/checkout_configuration_list_response.py +104 -0
- whop_sdk/types/checkout_modes.py +7 -0
- whop_sdk/types/company_create_params.py +22 -0
- whop_sdk/types/company_list_params.py +38 -0
- whop_sdk/types/company_list_response.py +76 -0
- whop_sdk/types/course.py +122 -0
- whop_sdk/types/course_chapter.py +32 -0
- whop_sdk/types/course_chapter_create_params.py +16 -0
- whop_sdk/types/course_chapter_delete_response.py +7 -0
- whop_sdk/types/course_chapter_list_params.py +25 -0
- whop_sdk/types/course_chapter_list_response.py +16 -0
- whop_sdk/types/course_chapter_update_params.py +12 -0
- whop_sdk/types/course_create_params.py +78 -0
- whop_sdk/types/course_delete_response.py +7 -0
- whop_sdk/types/course_lesson_create_params.py +63 -0
- whop_sdk/types/course_lesson_delete_response.py +7 -0
- whop_sdk/types/course_lesson_interaction_completed_webhook_event.py +26 -0
- whop_sdk/types/course_lesson_interaction_list_params.py +34 -0
- whop_sdk/types/course_lesson_list_params.py +28 -0
- whop_sdk/types/course_lesson_list_response.py +57 -0
- whop_sdk/types/course_lesson_mark_as_completed_response.py +7 -0
- whop_sdk/types/course_lesson_start_response.py +7 -0
- whop_sdk/types/course_lesson_submit_assessment_params.py +26 -0
- whop_sdk/types/course_lesson_submit_assessment_response.py +62 -0
- whop_sdk/types/course_lesson_update_params.py +222 -0
- whop_sdk/types/course_list_params.py +28 -0
- whop_sdk/types/course_list_response.py +90 -0
- whop_sdk/types/course_student_list_params.py +28 -0
- whop_sdk/types/course_student_list_response.py +42 -0
- whop_sdk/types/course_student_retrieve_response.py +61 -0
- whop_sdk/types/course_update_params.py +114 -0
- whop_sdk/types/course_visibilities.py +7 -0
- whop_sdk/types/dispute.py +284 -0
- whop_sdk/types/dispute_created_webhook_event.py +26 -0
- whop_sdk/types/dispute_list_params.py +38 -0
- whop_sdk/types/dispute_list_response.py +77 -0
- whop_sdk/types/dispute_statuses.py +17 -0
- whop_sdk/types/dispute_update_evidence_params.py +159 -0
- whop_sdk/types/dispute_updated_webhook_event.py +26 -0
- whop_sdk/types/embed_type.py +7 -0
- whop_sdk/types/entry_approve_response.py +10 -0
- whop_sdk/types/entry_approved_webhook_event.py +26 -0
- whop_sdk/types/entry_created_webhook_event.py +26 -0
- whop_sdk/types/entry_deleted_webhook_event.py +26 -0
- whop_sdk/types/entry_denied_webhook_event.py +26 -0
- whop_sdk/types/entry_list_params.py +52 -0
- whop_sdk/types/entry_list_response.py +56 -0
- whop_sdk/types/experience_attach_params.py +12 -0
- whop_sdk/types/experience_create_params.py +22 -0
- whop_sdk/types/experience_delete_response.py +7 -0
- whop_sdk/types/experience_detach_params.py +12 -0
- whop_sdk/types/experience_duplicate_params.py +13 -0
- whop_sdk/types/experience_list_params.py +40 -0
- whop_sdk/types/experience_list_response.py +73 -0
- whop_sdk/types/experience_update_params.py +46 -0
- whop_sdk/types/forum_list_params.py +28 -0
- whop_sdk/types/forum_list_response.py +33 -0
- whop_sdk/types/forum_post_create_params.py +101 -0
- whop_sdk/types/forum_post_list_params.py +31 -0
- whop_sdk/types/forum_post_list_response.py +60 -0
- whop_sdk/types/forum_post_update_params.py +56 -0
- whop_sdk/types/forum_post_visibility_type.py +7 -0
- whop_sdk/types/forum_update_params.py +23 -0
- whop_sdk/types/invoice_create_params.py +515 -0
- whop_sdk/types/invoice_created_webhook_event.py +26 -0
- whop_sdk/types/invoice_list_params.py +53 -0
- whop_sdk/types/invoice_paid_webhook_event.py +26 -0
- whop_sdk/types/invoice_past_due_webhook_event.py +26 -0
- whop_sdk/types/invoice_void_response.py +7 -0
- whop_sdk/types/invoice_voided_webhook_event.py +26 -0
- whop_sdk/types/languages.py +30 -0
- whop_sdk/types/ledger_account_retrieve_response.py +93 -0
- whop_sdk/types/lesson.py +219 -0
- whop_sdk/types/lesson_types.py +7 -0
- whop_sdk/types/lesson_visibilities.py +7 -0
- whop_sdk/types/member_list_params.py +73 -0
- whop_sdk/types/member_list_response.py +65 -0
- whop_sdk/types/member_retrieve_response.py +79 -0
- whop_sdk/types/membership_activated_webhook_event.py +29 -0
- whop_sdk/types/membership_cancel_params.py +13 -0
- whop_sdk/types/membership_deactivated_webhook_event.py +29 -0
- whop_sdk/types/membership_list_params.py +73 -0
- whop_sdk/types/membership_list_response.py +128 -0
- whop_sdk/types/membership_pause_params.py +16 -0
- whop_sdk/types/membership_update_params.py +13 -0
- whop_sdk/types/message_create_params.py +63 -0
- whop_sdk/types/message_list_params.py +30 -0
- whop_sdk/types/message_list_response.py +90 -0
- whop_sdk/types/message_update_params.py +45 -0
- whop_sdk/types/notification_create_params.py +93 -0
- whop_sdk/types/notification_create_response.py +10 -0
- whop_sdk/types/payment_create_params.py +162 -0
- whop_sdk/types/payment_failed_webhook_event.py +26 -0
- whop_sdk/types/payment_list_params.py +67 -0
- whop_sdk/types/payment_list_response.py +273 -0
- whop_sdk/types/payment_method_types.py +94 -0
- whop_sdk/types/payment_pending_webhook_event.py +26 -0
- whop_sdk/types/payment_provider.py +9 -0
- whop_sdk/types/payment_refund_params.py +13 -0
- whop_sdk/types/payment_succeeded_webhook_event.py +26 -0
- whop_sdk/types/payment_token_list_params.py +38 -0
- whop_sdk/types/payment_token_list_response.py +41 -0
- whop_sdk/types/payment_token_retrieve_params.py +12 -0
- whop_sdk/types/payment_token_retrieve_response.py +41 -0
- whop_sdk/types/plan_create_params.py +162 -0
- whop_sdk/types/plan_delete_response.py +7 -0
- whop_sdk/types/plan_list_params.py +57 -0
- whop_sdk/types/plan_list_response.py +128 -0
- whop_sdk/types/plan_update_params.py +155 -0
- whop_sdk/types/product_create_params.py +147 -0
- whop_sdk/types/product_delete_response.py +7 -0
- whop_sdk/types/product_list_params.py +49 -0
- whop_sdk/types/product_update_params.py +82 -0
- whop_sdk/types/promo_code.py +90 -0
- whop_sdk/types/promo_code_create_params.py +70 -0
- whop_sdk/types/promo_code_delete_response.py +7 -0
- whop_sdk/types/promo_code_list_params.py +45 -0
- whop_sdk/types/promo_code_list_response.py +79 -0
- whop_sdk/types/promo_code_status.py +7 -0
- whop_sdk/types/promo_duration.py +7 -0
- whop_sdk/types/reaction_create_params.py +19 -0
- whop_sdk/types/reaction_list_params.py +25 -0
- whop_sdk/types/reaction_list_response.py +32 -0
- whop_sdk/types/refund_created_webhook_event.py +154 -0
- whop_sdk/types/refund_list_params.py +38 -0
- whop_sdk/types/refund_list_response.py +53 -0
- whop_sdk/types/refund_reference_status.py +7 -0
- whop_sdk/types/refund_reference_type.py +9 -0
- whop_sdk/types/refund_retrieve_response.py +129 -0
- whop_sdk/types/refund_status.py +7 -0
- whop_sdk/types/refund_updated_webhook_event.py +154 -0
- whop_sdk/types/review_list_params.py +40 -0
- whop_sdk/types/review_list_response.py +78 -0
- whop_sdk/types/review_retrieve_response.py +103 -0
- whop_sdk/types/review_status.py +7 -0
- whop_sdk/types/setup_intent.py +111 -0
- whop_sdk/types/setup_intent_canceled_webhook_event.py +29 -0
- whop_sdk/types/setup_intent_list_params.py +38 -0
- whop_sdk/types/setup_intent_list_response.py +111 -0
- whop_sdk/types/setup_intent_requires_action_webhook_event.py +29 -0
- whop_sdk/types/setup_intent_status.py +7 -0
- whop_sdk/types/setup_intent_succeeded_webhook_event.py +29 -0
- whop_sdk/types/shared/__init__.py +62 -0
- whop_sdk/types/shared/access_level.py +7 -0
- whop_sdk/types/shared/access_pass_type.py +7 -0
- whop_sdk/types/shared/app.py +187 -0
- whop_sdk/types/shared/app_build.py +50 -0
- whop_sdk/types/shared/app_build_platforms.py +7 -0
- whop_sdk/types/shared/app_build_statuses.py +7 -0
- whop_sdk/types/shared/app_statuses.py +7 -0
- whop_sdk/types/shared/app_view_type.py +7 -0
- whop_sdk/types/shared/authorized_user_roles.py +9 -0
- whop_sdk/types/shared/business_types.py +22 -0
- whop_sdk/types/shared/chat_channel.py +43 -0
- whop_sdk/types/shared/checkout_configuration.py +104 -0
- whop_sdk/types/shared/collection_method.py +7 -0
- whop_sdk/types/shared/company.py +91 -0
- whop_sdk/types/shared/course_lesson_interaction.py +63 -0
- whop_sdk/types/shared/course_lesson_interaction_list_item.py +44 -0
- whop_sdk/types/shared/currency.py +93 -0
- whop_sdk/types/shared/custom_cta.py +21 -0
- whop_sdk/types/shared/direction.py +7 -0
- whop_sdk/types/shared/dms_post_types.py +7 -0
- whop_sdk/types/shared/email_notification_preferences.py +7 -0
- whop_sdk/types/shared/entry.py +70 -0
- whop_sdk/types/shared/entry_status.py +7 -0
- whop_sdk/types/shared/experience.py +91 -0
- whop_sdk/types/shared/forum.py +33 -0
- whop_sdk/types/shared/forum_post.py +60 -0
- whop_sdk/types/shared/friendly_receipt_status.py +24 -0
- whop_sdk/types/shared/global_affiliate_status.py +7 -0
- whop_sdk/types/shared/industry_types.py +67 -0
- whop_sdk/types/shared/invoice.py +64 -0
- whop_sdk/types/shared/invoice_list_item.py +64 -0
- whop_sdk/types/shared/invoice_status.py +7 -0
- whop_sdk/types/shared/member_most_recent_actions.py +22 -0
- whop_sdk/types/shared/member_statuses.py +7 -0
- whop_sdk/types/shared/membership.py +128 -0
- whop_sdk/types/shared/membership_status.py +9 -0
- whop_sdk/types/shared/message.py +90 -0
- whop_sdk/types/shared/page_info.py +21 -0
- whop_sdk/types/shared/payment.py +273 -0
- whop_sdk/types/shared/plan.py +159 -0
- whop_sdk/types/shared/plan_type.py +7 -0
- whop_sdk/types/shared/product.py +132 -0
- whop_sdk/types/shared/product_list_item.py +57 -0
- whop_sdk/types/shared/promo_type.py +7 -0
- whop_sdk/types/shared/reaction.py +32 -0
- whop_sdk/types/shared/receipt_status.py +7 -0
- whop_sdk/types/shared/release_method.py +7 -0
- whop_sdk/types/shared/shipment.py +48 -0
- whop_sdk/types/shared/shipment_carrier.py +84 -0
- whop_sdk/types/shared/shipment_status.py +18 -0
- whop_sdk/types/shared/shipment_substatus.py +36 -0
- whop_sdk/types/shared/support_channel.py +39 -0
- whop_sdk/types/shared/tax_type.py +7 -0
- whop_sdk/types/shared/transfer.py +112 -0
- whop_sdk/types/shared/visibility.py +7 -0
- whop_sdk/types/shared/visibility_filter.py +9 -0
- whop_sdk/types/shared/who_can_comment_types.py +7 -0
- whop_sdk/types/shared/who_can_post.py +7 -0
- whop_sdk/types/shared/who_can_post_types.py +7 -0
- whop_sdk/types/shared/who_can_react.py +7 -0
- whop_sdk/types/shared_params/__init__.py +34 -0
- whop_sdk/types/shared_params/access_level.py +9 -0
- whop_sdk/types/shared_params/access_pass_type.py +9 -0
- whop_sdk/types/shared_params/app_build_platforms.py +9 -0
- whop_sdk/types/shared_params/app_build_statuses.py +9 -0
- whop_sdk/types/shared_params/app_statuses.py +9 -0
- whop_sdk/types/shared_params/app_view_type.py +9 -0
- whop_sdk/types/shared_params/authorized_user_roles.py +11 -0
- whop_sdk/types/shared_params/business_types.py +24 -0
- whop_sdk/types/shared_params/collection_method.py +9 -0
- whop_sdk/types/shared_params/currency.py +95 -0
- whop_sdk/types/shared_params/custom_cta.py +23 -0
- whop_sdk/types/shared_params/direction.py +9 -0
- whop_sdk/types/shared_params/email_notification_preferences.py +9 -0
- whop_sdk/types/shared_params/entry_status.py +9 -0
- whop_sdk/types/shared_params/friendly_receipt_status.py +26 -0
- whop_sdk/types/shared_params/global_affiliate_status.py +9 -0
- whop_sdk/types/shared_params/industry_types.py +69 -0
- whop_sdk/types/shared_params/invoice_status.py +9 -0
- whop_sdk/types/shared_params/member_most_recent_actions.py +24 -0
- whop_sdk/types/shared_params/member_statuses.py +9 -0
- whop_sdk/types/shared_params/membership_status.py +11 -0
- whop_sdk/types/shared_params/plan_type.py +9 -0
- whop_sdk/types/shared_params/promo_type.py +9 -0
- whop_sdk/types/shared_params/receipt_status.py +9 -0
- whop_sdk/types/shared_params/release_method.py +9 -0
- whop_sdk/types/shared_params/tax_type.py +9 -0
- whop_sdk/types/shared_params/visibility.py +9 -0
- whop_sdk/types/shared_params/visibility_filter.py +11 -0
- whop_sdk/types/shared_params/who_can_comment_types.py +9 -0
- whop_sdk/types/shared_params/who_can_post.py +9 -0
- whop_sdk/types/shared_params/who_can_post_types.py +9 -0
- whop_sdk/types/shared_params/who_can_react.py +9 -0
- whop_sdk/types/shipment_create_params.py +18 -0
- whop_sdk/types/shipment_list_params.py +31 -0
- whop_sdk/types/shipment_list_response.py +48 -0
- whop_sdk/types/support_channel_create_params.py +15 -0
- whop_sdk/types/support_channel_list_params.py +40 -0
- whop_sdk/types/support_channel_list_response.py +39 -0
- whop_sdk/types/transfer_create_params.py +39 -0
- whop_sdk/types/transfer_list_params.py +50 -0
- whop_sdk/types/transfer_list_response.py +38 -0
- whop_sdk/types/unwrap_webhook_event.py +52 -0
- whop_sdk/types/user_check_access_response.py +14 -0
- whop_sdk/types/user_retrieve_response.py +36 -0
- whop_sdk/types/withdrawal_fee_types.py +7 -0
- whop_sdk/types/withdrawal_list_params.py +38 -0
- whop_sdk/types/withdrawal_list_response.py +45 -0
- whop_sdk/types/withdrawal_retrieve_response.py +154 -0
- whop_sdk/types/withdrawal_speeds.py +7 -0
- whop_sdk/types/withdrawal_status.py +9 -0
- whop_sdk/types/withdrawal_types.py +7 -0
- whop_sdk-0.0.10.dist-info/METADATA +509 -0
- whop_sdk-0.0.10.dist-info/RECORD +352 -0
- whop_sdk-0.0.10.dist-info/WHEEL +4 -0
- whop_sdk-0.0.10.dist-info/licenses/LICENSE +201 -0
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing import List, Optional
|
|
4
|
+
from datetime import datetime
|
|
5
|
+
|
|
6
|
+
from ..._models import BaseModel
|
|
7
|
+
from ..app_type import AppType
|
|
8
|
+
from .app_statuses import AppStatuses
|
|
9
|
+
|
|
10
|
+
__all__ = [
|
|
11
|
+
"App",
|
|
12
|
+
"APIKey",
|
|
13
|
+
"Company",
|
|
14
|
+
"Creator",
|
|
15
|
+
"Icon",
|
|
16
|
+
"RequestedPermission",
|
|
17
|
+
"RequestedPermissionPermissionAction",
|
|
18
|
+
"Stats",
|
|
19
|
+
]
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class APIKey(BaseModel):
|
|
23
|
+
id: str
|
|
24
|
+
"""The ID of this API key"""
|
|
25
|
+
|
|
26
|
+
token: str
|
|
27
|
+
"""This is the API key used to authenticate requests"""
|
|
28
|
+
|
|
29
|
+
created_at: datetime
|
|
30
|
+
"""When this API key was created at"""
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class Company(BaseModel):
|
|
34
|
+
id: str
|
|
35
|
+
"""The ID (tag) of the company."""
|
|
36
|
+
|
|
37
|
+
title: str
|
|
38
|
+
"""The title of the company."""
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class Creator(BaseModel):
|
|
42
|
+
id: str
|
|
43
|
+
"""The internal ID of the user."""
|
|
44
|
+
|
|
45
|
+
name: Optional[str] = None
|
|
46
|
+
"""The name of the user from their Whop account."""
|
|
47
|
+
|
|
48
|
+
username: str
|
|
49
|
+
"""The username of the user from their Whop account."""
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
class Icon(BaseModel):
|
|
53
|
+
url: Optional[str] = None
|
|
54
|
+
"""This is the URL you use to render optimized attachments on the client.
|
|
55
|
+
|
|
56
|
+
This should be used for apps.
|
|
57
|
+
"""
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
class RequestedPermissionPermissionAction(BaseModel):
|
|
61
|
+
action: str
|
|
62
|
+
"""The identifier of the action."""
|
|
63
|
+
|
|
64
|
+
name: str
|
|
65
|
+
"""The human readable name of the action."""
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
class RequestedPermission(BaseModel):
|
|
69
|
+
is_required: bool
|
|
70
|
+
"""Whether the action is required for the app to function."""
|
|
71
|
+
|
|
72
|
+
justification: str
|
|
73
|
+
"""The reason for requesting the action."""
|
|
74
|
+
|
|
75
|
+
permission_action: RequestedPermissionPermissionAction
|
|
76
|
+
"""The action that the app will request off of users when a user installs the app."""
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
class Stats(BaseModel):
|
|
80
|
+
dau: int
|
|
81
|
+
"""
|
|
82
|
+
This is the number of users that have spent time in this app in the last 24
|
|
83
|
+
hours.
|
|
84
|
+
"""
|
|
85
|
+
|
|
86
|
+
mau: int
|
|
87
|
+
"""
|
|
88
|
+
This is the number of users that have spent time in this app in the last 28
|
|
89
|
+
days.
|
|
90
|
+
"""
|
|
91
|
+
|
|
92
|
+
time_spent_last24_hours: int
|
|
93
|
+
"""
|
|
94
|
+
This how much time, in seconds, users have spent in this app in the last 24
|
|
95
|
+
hours.
|
|
96
|
+
"""
|
|
97
|
+
|
|
98
|
+
wau: int
|
|
99
|
+
"""
|
|
100
|
+
This is the number of users that have spent time in this app in the last 7 days.
|
|
101
|
+
"""
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
class App(BaseModel):
|
|
105
|
+
id: str
|
|
106
|
+
"""The ID of the app"""
|
|
107
|
+
|
|
108
|
+
api_key: Optional[APIKey] = None
|
|
109
|
+
"""The API key for the app"""
|
|
110
|
+
|
|
111
|
+
app_type: AppType
|
|
112
|
+
"""The type of end-user an app is built for"""
|
|
113
|
+
|
|
114
|
+
base_url: Optional[str] = None
|
|
115
|
+
"""The base url of the app"""
|
|
116
|
+
|
|
117
|
+
company: Company
|
|
118
|
+
"""The company that owns the app"""
|
|
119
|
+
|
|
120
|
+
creator: Creator
|
|
121
|
+
"""The creator of the app"""
|
|
122
|
+
|
|
123
|
+
dashboard_path: Optional[str] = None
|
|
124
|
+
"""The path part for a specific view of the app.
|
|
125
|
+
|
|
126
|
+
This is the template part of the url after the base domain. Eg:
|
|
127
|
+
/experiences/[experienceId]
|
|
128
|
+
"""
|
|
129
|
+
|
|
130
|
+
description: Optional[str] = None
|
|
131
|
+
"""The description of the app"""
|
|
132
|
+
|
|
133
|
+
discover_path: Optional[str] = None
|
|
134
|
+
"""The path part for a specific view of the app.
|
|
135
|
+
|
|
136
|
+
This is the template part of the url after the base domain. Eg:
|
|
137
|
+
/experiences/[experienceId]
|
|
138
|
+
"""
|
|
139
|
+
|
|
140
|
+
domain_id: str
|
|
141
|
+
"""The unique part of the proxied domain for this app.
|
|
142
|
+
|
|
143
|
+
Used to generate the base url used to display the app inside the whop platform.
|
|
144
|
+
Refers to the id part in the final url: https://{domain_id}.apps.whop.com
|
|
145
|
+
"""
|
|
146
|
+
|
|
147
|
+
experience_path: Optional[str] = None
|
|
148
|
+
"""The path part for a specific view of the app.
|
|
149
|
+
|
|
150
|
+
This is the template part of the url after the base domain. Eg:
|
|
151
|
+
/experiences/[experienceId]
|
|
152
|
+
"""
|
|
153
|
+
|
|
154
|
+
icon: Optional[Icon] = None
|
|
155
|
+
"""The icon for the app.
|
|
156
|
+
|
|
157
|
+
This icon is shown on discovery, on the product page, on checkout, and as a
|
|
158
|
+
default icon for the experiences.
|
|
159
|
+
"""
|
|
160
|
+
|
|
161
|
+
name: str
|
|
162
|
+
"""The name of the app"""
|
|
163
|
+
|
|
164
|
+
requested_permissions: List[RequestedPermission]
|
|
165
|
+
"""
|
|
166
|
+
The set of permissions that an app requests to be granted when a user installs
|
|
167
|
+
the app.
|
|
168
|
+
"""
|
|
169
|
+
|
|
170
|
+
stats: Optional[Stats] = None
|
|
171
|
+
"""A collection of stats for the app."""
|
|
172
|
+
|
|
173
|
+
status: AppStatuses
|
|
174
|
+
"""If the status is live, the app is visible on Whop discovery.
|
|
175
|
+
|
|
176
|
+
In order to be live, you need to set the name, icon, and description. Being
|
|
177
|
+
unlisted or hidden means it's not visible on Whop but you can still install the
|
|
178
|
+
app via direct link. To remove the app from whop discovery, you should set the
|
|
179
|
+
status to unlisted.
|
|
180
|
+
"""
|
|
181
|
+
|
|
182
|
+
verified: bool
|
|
183
|
+
"""Whether this app has been verified by Whop.
|
|
184
|
+
|
|
185
|
+
Verified apps are endorsed by whop and are shown in the 'featured apps' section
|
|
186
|
+
of the app store.
|
|
187
|
+
"""
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing import List, Optional
|
|
4
|
+
from datetime import datetime
|
|
5
|
+
|
|
6
|
+
from ..._models import BaseModel
|
|
7
|
+
from .app_view_type import AppViewType
|
|
8
|
+
from .app_build_statuses import AppBuildStatuses
|
|
9
|
+
from .app_build_platforms import AppBuildPlatforms
|
|
10
|
+
|
|
11
|
+
__all__ = ["AppBuild"]
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class AppBuild(BaseModel):
|
|
15
|
+
id: str
|
|
16
|
+
"""The ID of the app build. It will look like apbu_xxxxx."""
|
|
17
|
+
|
|
18
|
+
checksum: str
|
|
19
|
+
"""
|
|
20
|
+
This is generated by the client and used to verify the integrity of the file
|
|
21
|
+
that is submitted. It is a SHA256 hash of the app build file.
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
created_at: datetime
|
|
25
|
+
"""When this app build was created."""
|
|
26
|
+
|
|
27
|
+
file_url: str
|
|
28
|
+
"""The URL to download the app build .zip file."""
|
|
29
|
+
|
|
30
|
+
is_production: bool
|
|
31
|
+
"""Whether this app build is currently being used in production."""
|
|
32
|
+
|
|
33
|
+
platform: AppBuildPlatforms
|
|
34
|
+
"""The platform of the app build (ios, android, web)"""
|
|
35
|
+
|
|
36
|
+
review_message: Optional[str] = None
|
|
37
|
+
"""The review message for the app build, if any.
|
|
38
|
+
|
|
39
|
+
This is populated when the build is rejected and there is a reason specified by
|
|
40
|
+
the reviewer.
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
status: AppBuildStatuses
|
|
44
|
+
"""The status of the app build (draft, approved, rejected, pending, etc)"""
|
|
45
|
+
|
|
46
|
+
supported_app_view_types: List[AppViewType]
|
|
47
|
+
"""The supported app view types for the app build.
|
|
48
|
+
|
|
49
|
+
These are the views that the developer has specified that this build supports.
|
|
50
|
+
"""
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing_extensions import Literal, TypeAlias
|
|
4
|
+
|
|
5
|
+
__all__ = ["AuthorizedUserRoles"]
|
|
6
|
+
|
|
7
|
+
AuthorizedUserRoles: TypeAlias = Literal[
|
|
8
|
+
"owner", "admin", "sales_manager", "moderator", "app_manager", "support", "manager"
|
|
9
|
+
]
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing_extensions import Literal, TypeAlias
|
|
4
|
+
|
|
5
|
+
__all__ = ["BusinessTypes"]
|
|
6
|
+
|
|
7
|
+
BusinessTypes: TypeAlias = Literal[
|
|
8
|
+
"education_program",
|
|
9
|
+
"coaching",
|
|
10
|
+
"software",
|
|
11
|
+
"paid_group",
|
|
12
|
+
"newsletter",
|
|
13
|
+
"agency",
|
|
14
|
+
"physical_products",
|
|
15
|
+
"brick_and_mortar",
|
|
16
|
+
"events",
|
|
17
|
+
"coaching_and_courses",
|
|
18
|
+
"other",
|
|
19
|
+
"saas",
|
|
20
|
+
"course",
|
|
21
|
+
"community",
|
|
22
|
+
]
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing import List, Optional
|
|
4
|
+
|
|
5
|
+
from ..._models import BaseModel
|
|
6
|
+
from .who_can_post import WhoCanPost
|
|
7
|
+
from .who_can_react import WhoCanReact
|
|
8
|
+
|
|
9
|
+
__all__ = ["ChatChannel", "Experience"]
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class Experience(BaseModel):
|
|
13
|
+
id: str
|
|
14
|
+
"""The unique ID representing this experience"""
|
|
15
|
+
|
|
16
|
+
name: str
|
|
17
|
+
"""The written name of the description."""
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class ChatChannel(BaseModel):
|
|
21
|
+
id: str
|
|
22
|
+
"""The unique identifier for the entity"""
|
|
23
|
+
|
|
24
|
+
ban_media: bool
|
|
25
|
+
"""Whether or not media is banned in this chat"""
|
|
26
|
+
|
|
27
|
+
ban_urls: bool
|
|
28
|
+
"""Whether or not URLs are banned in this chat"""
|
|
29
|
+
|
|
30
|
+
banned_words: List[str]
|
|
31
|
+
"""List of banned words in this chat"""
|
|
32
|
+
|
|
33
|
+
experience: Experience
|
|
34
|
+
"""The experience for this chat"""
|
|
35
|
+
|
|
36
|
+
user_posts_cooldown_seconds: Optional[int] = None
|
|
37
|
+
"""The number of seconds a user needs to wait before posting again, if any"""
|
|
38
|
+
|
|
39
|
+
who_can_post: WhoCanPost
|
|
40
|
+
"""Who can post on this chat"""
|
|
41
|
+
|
|
42
|
+
who_can_react: WhoCanReact
|
|
43
|
+
"""Who can react on this chat"""
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing import Dict, List, Optional
|
|
4
|
+
|
|
5
|
+
from .currency import Currency
|
|
6
|
+
from ..._models import BaseModel
|
|
7
|
+
from .plan_type import PlanType
|
|
8
|
+
from .visibility import Visibility
|
|
9
|
+
from .release_method import ReleaseMethod
|
|
10
|
+
from ..checkout_modes import CheckoutModes
|
|
11
|
+
from ..payment_method_types import PaymentMethodTypes
|
|
12
|
+
|
|
13
|
+
__all__ = ["CheckoutConfiguration", "PaymentMethodConfiguration", "Plan"]
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class PaymentMethodConfiguration(BaseModel):
|
|
17
|
+
disabled: List[PaymentMethodTypes]
|
|
18
|
+
"""An array of payment method identifiers that are explicitly disabled.
|
|
19
|
+
|
|
20
|
+
Only applies if the include_platform_defaults is true.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
enabled: List[PaymentMethodTypes]
|
|
24
|
+
"""An array of payment method identifiers that are explicitly enabled.
|
|
25
|
+
|
|
26
|
+
This means these payment methods will be shown on checkout. Example use case is
|
|
27
|
+
to only enable a specific payment method like cashapp, or extending the platform
|
|
28
|
+
defaults with additional methods.
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
include_platform_defaults: bool
|
|
32
|
+
"""
|
|
33
|
+
Whether Whop's platform default payment method enablement settings are included
|
|
34
|
+
in this configuration. The full list of default payment methods can be found in
|
|
35
|
+
the documentation at docs.whop.com/payments.
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class Plan(BaseModel):
|
|
40
|
+
id: str
|
|
41
|
+
"""The internal ID of the plan."""
|
|
42
|
+
|
|
43
|
+
billing_period: Optional[int] = None
|
|
44
|
+
"""The interval at which the plan charges (renewal plans)."""
|
|
45
|
+
|
|
46
|
+
currency: Currency
|
|
47
|
+
"""The respective currency identifier for the plan."""
|
|
48
|
+
|
|
49
|
+
expiration_days: Optional[int] = None
|
|
50
|
+
"""The interval at which the plan charges (expiration plans)."""
|
|
51
|
+
|
|
52
|
+
initial_price: float
|
|
53
|
+
"""The price a person has to pay for a plan on the initial purchase."""
|
|
54
|
+
|
|
55
|
+
plan_type: PlanType
|
|
56
|
+
"""Indicates if the plan is a one time payment or recurring."""
|
|
57
|
+
|
|
58
|
+
release_method: ReleaseMethod
|
|
59
|
+
"""This is the release method the business uses to sell this plan."""
|
|
60
|
+
|
|
61
|
+
renewal_price: float
|
|
62
|
+
"""The price a person has to pay for a plan on the renewal purchase."""
|
|
63
|
+
|
|
64
|
+
trial_period_days: Optional[int] = None
|
|
65
|
+
"""The number of free trial days added before a renewal plan."""
|
|
66
|
+
|
|
67
|
+
visibility: Visibility
|
|
68
|
+
"""Shows or hides the plan from public/business view."""
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
class CheckoutConfiguration(BaseModel):
|
|
72
|
+
id: str
|
|
73
|
+
"""The ID of the checkout configuration"""
|
|
74
|
+
|
|
75
|
+
affiliate_code: Optional[str] = None
|
|
76
|
+
"""The affiliate code to use for the checkout configuration"""
|
|
77
|
+
|
|
78
|
+
company_id: str
|
|
79
|
+
"""The ID of the company to use for the checkout configuration"""
|
|
80
|
+
|
|
81
|
+
metadata: Optional[Dict[str, object]] = None
|
|
82
|
+
"""The metadata to use for the checkout configuration"""
|
|
83
|
+
|
|
84
|
+
mode: CheckoutModes
|
|
85
|
+
"""The mode of the checkout session."""
|
|
86
|
+
|
|
87
|
+
payment_method_configuration: Optional[PaymentMethodConfiguration] = None
|
|
88
|
+
"""The explicit payment method configuration for the session, if any.
|
|
89
|
+
|
|
90
|
+
This currently only works in 'setup' mode. Use the plan's
|
|
91
|
+
payment_method_configuration for payment method.
|
|
92
|
+
"""
|
|
93
|
+
|
|
94
|
+
plan: Optional[Plan] = None
|
|
95
|
+
"""The plan to use for the checkout configuration"""
|
|
96
|
+
|
|
97
|
+
purchase_url: str
|
|
98
|
+
"""A URL you can send to customers to complete a checkout.
|
|
99
|
+
|
|
100
|
+
It looks like `/checkout/plan_xxxx?session={id}`
|
|
101
|
+
"""
|
|
102
|
+
|
|
103
|
+
redirect_url: Optional[str] = None
|
|
104
|
+
"""The URL to redirect the user to after the checkout configuration is created"""
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing import Dict, List, Optional
|
|
4
|
+
from datetime import datetime
|
|
5
|
+
from typing_extensions import Literal
|
|
6
|
+
|
|
7
|
+
from ..._models import BaseModel
|
|
8
|
+
from .business_types import BusinessTypes
|
|
9
|
+
from .industry_types import IndustryTypes
|
|
10
|
+
|
|
11
|
+
__all__ = ["Company", "Logo", "OwnerUser", "SocialLink"]
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class Logo(BaseModel):
|
|
15
|
+
url: Optional[str] = None
|
|
16
|
+
"""This is the URL you use to render optimized attachments on the client.
|
|
17
|
+
|
|
18
|
+
This should be used for apps.
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class OwnerUser(BaseModel):
|
|
23
|
+
id: str
|
|
24
|
+
"""The internal ID of the user."""
|
|
25
|
+
|
|
26
|
+
name: Optional[str] = None
|
|
27
|
+
"""The name of the user from their Whop account."""
|
|
28
|
+
|
|
29
|
+
username: str
|
|
30
|
+
"""The username of the user from their Whop account."""
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class SocialLink(BaseModel):
|
|
34
|
+
id: str
|
|
35
|
+
"""The ID"""
|
|
36
|
+
|
|
37
|
+
url: str
|
|
38
|
+
"""The URL"""
|
|
39
|
+
|
|
40
|
+
website: Literal["x", "instagram", "facebook", "tiktok", "youtube", "linkedin", "twitch", "website", "custom"]
|
|
41
|
+
"""The website"""
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
class Company(BaseModel):
|
|
45
|
+
id: str
|
|
46
|
+
"""The ID (tag) of the company."""
|
|
47
|
+
|
|
48
|
+
business_type: Optional[BusinessTypes] = None
|
|
49
|
+
"""The different business types a company can be."""
|
|
50
|
+
|
|
51
|
+
created_at: datetime
|
|
52
|
+
"""When the company was created (signed up)"""
|
|
53
|
+
|
|
54
|
+
description: Optional[str] = None
|
|
55
|
+
"""The creator pitch for the company."""
|
|
56
|
+
|
|
57
|
+
industry_type: Optional[IndustryTypes] = None
|
|
58
|
+
"""The different industry types a company can be in."""
|
|
59
|
+
|
|
60
|
+
logo: Optional[Logo] = None
|
|
61
|
+
"""The company's logo."""
|
|
62
|
+
|
|
63
|
+
member_count: int
|
|
64
|
+
"""The number of members in the company."""
|
|
65
|
+
|
|
66
|
+
metadata: Optional[Dict[str, object]] = None
|
|
67
|
+
"""
|
|
68
|
+
A key-value store of data for the account, created/updated by the platform that
|
|
69
|
+
made the account.
|
|
70
|
+
"""
|
|
71
|
+
|
|
72
|
+
owner_user: OwnerUser
|
|
73
|
+
"""The user who owns this company"""
|
|
74
|
+
|
|
75
|
+
published_reviews_count: int
|
|
76
|
+
"""The number of reviews that have been published for the company."""
|
|
77
|
+
|
|
78
|
+
route: str
|
|
79
|
+
"""The slug/route of the company on the Whop site."""
|
|
80
|
+
|
|
81
|
+
social_links: List[SocialLink]
|
|
82
|
+
"""The social media accounts of the company"""
|
|
83
|
+
|
|
84
|
+
title: str
|
|
85
|
+
"""The title of the company."""
|
|
86
|
+
|
|
87
|
+
updated_at: datetime
|
|
88
|
+
"""The time the company was last updated."""
|
|
89
|
+
|
|
90
|
+
verified: bool
|
|
91
|
+
"""If the company is Whop Verified"""
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing import Optional
|
|
4
|
+
from datetime import datetime
|
|
5
|
+
|
|
6
|
+
from ..._models import BaseModel
|
|
7
|
+
|
|
8
|
+
__all__ = ["CourseLessonInteraction", "Course", "CourseExperience", "Lesson", "User"]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class CourseExperience(BaseModel):
|
|
12
|
+
id: str
|
|
13
|
+
"""The unique ID representing this experience"""
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class Course(BaseModel):
|
|
17
|
+
id: str
|
|
18
|
+
"""The ID of the course. Looks like cors_XXX"""
|
|
19
|
+
|
|
20
|
+
experience: CourseExperience
|
|
21
|
+
"""The experience that the course belongs to"""
|
|
22
|
+
|
|
23
|
+
title: Optional[str] = None
|
|
24
|
+
"""The title of the course"""
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class Lesson(BaseModel):
|
|
28
|
+
id: str
|
|
29
|
+
"""The ID of the lesson"""
|
|
30
|
+
|
|
31
|
+
title: str
|
|
32
|
+
"""The title of the lesson"""
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class User(BaseModel):
|
|
36
|
+
id: str
|
|
37
|
+
"""The internal ID of the user."""
|
|
38
|
+
|
|
39
|
+
name: Optional[str] = None
|
|
40
|
+
"""The name of the user from their Whop account."""
|
|
41
|
+
|
|
42
|
+
username: str
|
|
43
|
+
"""The username of the user from their Whop account."""
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
class CourseLessonInteraction(BaseModel):
|
|
47
|
+
id: str
|
|
48
|
+
"""The ID of the lesson interaction"""
|
|
49
|
+
|
|
50
|
+
completed: bool
|
|
51
|
+
"""Whether the lesson has been completed by the user"""
|
|
52
|
+
|
|
53
|
+
course: Course
|
|
54
|
+
"""The course for this lesson interaction"""
|
|
55
|
+
|
|
56
|
+
created_at: datetime
|
|
57
|
+
"""When the interaction was created"""
|
|
58
|
+
|
|
59
|
+
lesson: Lesson
|
|
60
|
+
"""The lesson this interaction is for"""
|
|
61
|
+
|
|
62
|
+
user: User
|
|
63
|
+
"""The user who interacted with the lesson"""
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing import Optional
|
|
4
|
+
from datetime import datetime
|
|
5
|
+
|
|
6
|
+
from ..._models import BaseModel
|
|
7
|
+
|
|
8
|
+
__all__ = ["CourseLessonInteractionListItem", "Lesson", "User"]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class Lesson(BaseModel):
|
|
12
|
+
id: str
|
|
13
|
+
"""The ID of the lesson"""
|
|
14
|
+
|
|
15
|
+
title: str
|
|
16
|
+
"""The title of the lesson"""
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class User(BaseModel):
|
|
20
|
+
id: str
|
|
21
|
+
"""The internal ID of the user."""
|
|
22
|
+
|
|
23
|
+
name: Optional[str] = None
|
|
24
|
+
"""The name of the user from their Whop account."""
|
|
25
|
+
|
|
26
|
+
username: str
|
|
27
|
+
"""The username of the user from their Whop account."""
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class CourseLessonInteractionListItem(BaseModel):
|
|
31
|
+
id: str
|
|
32
|
+
"""The ID of the lesson interaction"""
|
|
33
|
+
|
|
34
|
+
completed: bool
|
|
35
|
+
"""Whether the lesson has been completed by the user"""
|
|
36
|
+
|
|
37
|
+
created_at: datetime
|
|
38
|
+
"""When the interaction was created"""
|
|
39
|
+
|
|
40
|
+
lesson: Lesson
|
|
41
|
+
"""The lesson this interaction is for"""
|
|
42
|
+
|
|
43
|
+
user: User
|
|
44
|
+
"""The user who interacted with the lesson"""
|