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
whop_sdk/types/course.py
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
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 .languages import Languages
|
|
8
|
+
from .lesson_types import LessonTypes
|
|
9
|
+
from .course_visibilities import CourseVisibilities
|
|
10
|
+
|
|
11
|
+
__all__ = ["Course", "Chapter", "ChapterLesson", "Thumbnail"]
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class ChapterLesson(BaseModel):
|
|
15
|
+
id: str
|
|
16
|
+
"""The ID of the lesson"""
|
|
17
|
+
|
|
18
|
+
lesson_type: LessonTypes
|
|
19
|
+
"""The type of the lesson (text, video, pdf, multi, quiz, knowledge_check)"""
|
|
20
|
+
|
|
21
|
+
order: int
|
|
22
|
+
"""The order of the lesson within its chapter"""
|
|
23
|
+
|
|
24
|
+
title: str
|
|
25
|
+
"""The title of the lesson"""
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class Chapter(BaseModel):
|
|
29
|
+
id: str
|
|
30
|
+
"""The ID of the chapter. Looks like chap_XXX"""
|
|
31
|
+
|
|
32
|
+
lessons: List[ChapterLesson]
|
|
33
|
+
"""The lessons in this chapter"""
|
|
34
|
+
|
|
35
|
+
order: int
|
|
36
|
+
"""The order of the chapter within its course"""
|
|
37
|
+
|
|
38
|
+
title: str
|
|
39
|
+
"""The title of the chapter"""
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
class Thumbnail(BaseModel):
|
|
43
|
+
id: str
|
|
44
|
+
"""The ID of the attachment"""
|
|
45
|
+
|
|
46
|
+
content_type: Optional[str] = None
|
|
47
|
+
"""The attachment's content type (e.g., image/jpg, video/mp4)"""
|
|
48
|
+
|
|
49
|
+
filename: Optional[str] = None
|
|
50
|
+
"""The name of the file"""
|
|
51
|
+
|
|
52
|
+
optimized_url: Optional[str] = None
|
|
53
|
+
"""This is the URL you use to render optimized attachments on the client.
|
|
54
|
+
|
|
55
|
+
This should be used for apps.
|
|
56
|
+
"""
|
|
57
|
+
|
|
58
|
+
source_url: Optional[str] = None
|
|
59
|
+
"""The original URL of the attachment, such as a direct link to S3.
|
|
60
|
+
|
|
61
|
+
This should never be displayed on the client and always passed to an Imgproxy
|
|
62
|
+
transformer.
|
|
63
|
+
"""
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
class Course(BaseModel):
|
|
67
|
+
id: str
|
|
68
|
+
"""The ID of the course. Looks like cors_XXX"""
|
|
69
|
+
|
|
70
|
+
certificate_after_completion_enabled: Optional[bool] = None
|
|
71
|
+
"""
|
|
72
|
+
Whether the course will award its students a PDF certificate after completing
|
|
73
|
+
all lessons
|
|
74
|
+
"""
|
|
75
|
+
|
|
76
|
+
chapters: List[Chapter]
|
|
77
|
+
"""The chapters in this course"""
|
|
78
|
+
|
|
79
|
+
cover_image: Optional[str] = None
|
|
80
|
+
"""The URL of the course's cover image, which is shown in course preview cards"""
|
|
81
|
+
|
|
82
|
+
created_at: datetime
|
|
83
|
+
"""The timestamp of when the course was created"""
|
|
84
|
+
|
|
85
|
+
description: Optional[str] = None
|
|
86
|
+
"""A short description of the course"""
|
|
87
|
+
|
|
88
|
+
language: Languages
|
|
89
|
+
"""
|
|
90
|
+
The language spoken in the video content of the course, used to generate closed
|
|
91
|
+
captions in the right language
|
|
92
|
+
"""
|
|
93
|
+
|
|
94
|
+
order: str
|
|
95
|
+
"""The order of the course within its experience"""
|
|
96
|
+
|
|
97
|
+
require_completing_lessons_in_order: bool
|
|
98
|
+
"""
|
|
99
|
+
Whether the course requires students to complete the previous lesson before
|
|
100
|
+
moving on to the next one
|
|
101
|
+
"""
|
|
102
|
+
|
|
103
|
+
tagline: Optional[str] = None
|
|
104
|
+
"""A short tagline for the course.
|
|
105
|
+
|
|
106
|
+
It is displayed under the course title in the UI
|
|
107
|
+
"""
|
|
108
|
+
|
|
109
|
+
thumbnail: Optional[Thumbnail] = None
|
|
110
|
+
"""The thumbnail for the course"""
|
|
111
|
+
|
|
112
|
+
title: Optional[str] = None
|
|
113
|
+
"""The title of the course"""
|
|
114
|
+
|
|
115
|
+
updated_at: datetime
|
|
116
|
+
"""The timestamp of when the course was last updated"""
|
|
117
|
+
|
|
118
|
+
visibility: CourseVisibilities
|
|
119
|
+
"""The visibility of the course.
|
|
120
|
+
|
|
121
|
+
Determines how / whether this course is visible to users.
|
|
122
|
+
"""
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing import List
|
|
4
|
+
|
|
5
|
+
from .._models import BaseModel
|
|
6
|
+
|
|
7
|
+
__all__ = ["CourseChapter", "Lesson"]
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Lesson(BaseModel):
|
|
11
|
+
id: str
|
|
12
|
+
"""The ID of the lesson"""
|
|
13
|
+
|
|
14
|
+
order: int
|
|
15
|
+
"""The order of the lesson within its chapter"""
|
|
16
|
+
|
|
17
|
+
title: str
|
|
18
|
+
"""The title of the lesson"""
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class CourseChapter(BaseModel):
|
|
22
|
+
id: str
|
|
23
|
+
"""The ID of the chapter. Looks like chap_XXX"""
|
|
24
|
+
|
|
25
|
+
lessons: List[Lesson]
|
|
26
|
+
"""The lessons in this chapter"""
|
|
27
|
+
|
|
28
|
+
order: int
|
|
29
|
+
"""The order of the chapter within its course"""
|
|
30
|
+
|
|
31
|
+
title: str
|
|
32
|
+
"""The title of the chapter"""
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Optional
|
|
6
|
+
from typing_extensions import Required, TypedDict
|
|
7
|
+
|
|
8
|
+
__all__ = ["CourseChapterCreateParams"]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class CourseChapterCreateParams(TypedDict, total=False):
|
|
12
|
+
course_id: Required[str]
|
|
13
|
+
"""The ID of the course to create the chapter in"""
|
|
14
|
+
|
|
15
|
+
title: Optional[str]
|
|
16
|
+
"""The title of the chapter"""
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Optional
|
|
6
|
+
from typing_extensions import Required, TypedDict
|
|
7
|
+
|
|
8
|
+
__all__ = ["CourseChapterListParams"]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class CourseChapterListParams(TypedDict, total=False):
|
|
12
|
+
course_id: Required[str]
|
|
13
|
+
"""The ID of the course"""
|
|
14
|
+
|
|
15
|
+
after: Optional[str]
|
|
16
|
+
"""Returns the elements in the list that come after the specified cursor."""
|
|
17
|
+
|
|
18
|
+
before: Optional[str]
|
|
19
|
+
"""Returns the elements in the list that come before the specified cursor."""
|
|
20
|
+
|
|
21
|
+
first: Optional[int]
|
|
22
|
+
"""Returns the first _n_ elements from the list."""
|
|
23
|
+
|
|
24
|
+
last: Optional[int]
|
|
25
|
+
"""Returns the last _n_ elements from the list."""
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from .._models import BaseModel
|
|
4
|
+
|
|
5
|
+
__all__ = ["CourseChapterListResponse"]
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class CourseChapterListResponse(BaseModel):
|
|
9
|
+
id: str
|
|
10
|
+
"""The ID of the chapter. Looks like chap_XXX"""
|
|
11
|
+
|
|
12
|
+
order: int
|
|
13
|
+
"""The order of the chapter within its course"""
|
|
14
|
+
|
|
15
|
+
title: str
|
|
16
|
+
"""The title of the chapter"""
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing_extensions import Required, TypedDict
|
|
6
|
+
|
|
7
|
+
__all__ = ["CourseChapterUpdateParams"]
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class CourseChapterUpdateParams(TypedDict, total=False):
|
|
11
|
+
title: Required[str]
|
|
12
|
+
"""The title of the chapter"""
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Union, Optional
|
|
6
|
+
from typing_extensions import Required, TypeAlias, TypedDict
|
|
7
|
+
|
|
8
|
+
from .course_visibilities import CourseVisibilities
|
|
9
|
+
|
|
10
|
+
__all__ = [
|
|
11
|
+
"CourseCreateParams",
|
|
12
|
+
"Thumbnail",
|
|
13
|
+
"ThumbnailAttachmentInputWithDirectUploadID",
|
|
14
|
+
"ThumbnailAttachmentInputWithID",
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class CourseCreateParams(TypedDict, total=False):
|
|
19
|
+
experience_id: Required[str]
|
|
20
|
+
"""The ID of the experience to create the course in"""
|
|
21
|
+
|
|
22
|
+
title: Required[str]
|
|
23
|
+
"""The title of the course"""
|
|
24
|
+
|
|
25
|
+
certificate_after_completion_enabled: Optional[bool]
|
|
26
|
+
"""
|
|
27
|
+
Whether the course will award its students a PDF certificate after completing
|
|
28
|
+
all lessons
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
cover_image: Optional[str]
|
|
32
|
+
"""The cover image URL of the course"""
|
|
33
|
+
|
|
34
|
+
order: Optional[str]
|
|
35
|
+
"""The decimal order position of the course within its experience.
|
|
36
|
+
|
|
37
|
+
If not provided, it will be set to the next sequential order. Use fractional
|
|
38
|
+
values (e.g., 1.5) to place between existing courses.
|
|
39
|
+
"""
|
|
40
|
+
|
|
41
|
+
require_completing_lessons_in_order: Optional[bool]
|
|
42
|
+
"""
|
|
43
|
+
Whether the course requires students to complete the previous lesson before
|
|
44
|
+
moving on to the next one
|
|
45
|
+
"""
|
|
46
|
+
|
|
47
|
+
tagline: Optional[str]
|
|
48
|
+
"""The tagline of the course"""
|
|
49
|
+
|
|
50
|
+
thumbnail: Optional[Thumbnail]
|
|
51
|
+
"""The thumbnail for the course in png, jpeg, or gif format"""
|
|
52
|
+
|
|
53
|
+
visibility: Optional[CourseVisibilities]
|
|
54
|
+
"""The available visibilities for a course.
|
|
55
|
+
|
|
56
|
+
Determines how / whether a course is visible to users.
|
|
57
|
+
"""
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
class ThumbnailAttachmentInputWithDirectUploadID(TypedDict, total=False):
|
|
61
|
+
direct_upload_id: Required[str]
|
|
62
|
+
"""This ID should be used the first time you upload an attachment.
|
|
63
|
+
|
|
64
|
+
It is the ID of the direct upload that was created when uploading the file to S3
|
|
65
|
+
via the mediaDirectUpload mutation.
|
|
66
|
+
"""
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
class ThumbnailAttachmentInputWithID(TypedDict, total=False):
|
|
70
|
+
id: Required[str]
|
|
71
|
+
"""The ID of an existing attachment object.
|
|
72
|
+
|
|
73
|
+
Use this when updating a resource and keeping a subset of the attachments. Don't
|
|
74
|
+
use this unless you know what you're doing.
|
|
75
|
+
"""
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
Thumbnail: TypeAlias = Union[ThumbnailAttachmentInputWithDirectUploadID, ThumbnailAttachmentInputWithID]
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Union, Optional
|
|
6
|
+
from typing_extensions import Required, TypeAlias, TypedDict
|
|
7
|
+
|
|
8
|
+
from .embed_type import EmbedType
|
|
9
|
+
from .lesson_types import LessonTypes
|
|
10
|
+
|
|
11
|
+
__all__ = [
|
|
12
|
+
"CourseLessonCreateParams",
|
|
13
|
+
"Thumbnail",
|
|
14
|
+
"ThumbnailAttachmentInputWithDirectUploadID",
|
|
15
|
+
"ThumbnailAttachmentInputWithID",
|
|
16
|
+
]
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class CourseLessonCreateParams(TypedDict, total=False):
|
|
20
|
+
chapter_id: Required[str]
|
|
21
|
+
"""The ID of the chapter to create the lesson in"""
|
|
22
|
+
|
|
23
|
+
lesson_type: Required[LessonTypes]
|
|
24
|
+
"""The type of the lesson"""
|
|
25
|
+
|
|
26
|
+
content: Optional[str]
|
|
27
|
+
"""The content of the lesson"""
|
|
28
|
+
|
|
29
|
+
days_from_course_start_until_unlock: Optional[int]
|
|
30
|
+
"""Days from course start until unlock"""
|
|
31
|
+
|
|
32
|
+
embed_id: Optional[str]
|
|
33
|
+
"""ID for the embed (YouTube video ID or Loom share ID)"""
|
|
34
|
+
|
|
35
|
+
embed_type: Optional[EmbedType]
|
|
36
|
+
"""The type of embed for a lesson"""
|
|
37
|
+
|
|
38
|
+
thumbnail: Optional[Thumbnail]
|
|
39
|
+
"""The thumbnail for the lesson in png, jpeg, or gif format"""
|
|
40
|
+
|
|
41
|
+
title: Optional[str]
|
|
42
|
+
"""The title of the lesson"""
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class ThumbnailAttachmentInputWithDirectUploadID(TypedDict, total=False):
|
|
46
|
+
direct_upload_id: Required[str]
|
|
47
|
+
"""This ID should be used the first time you upload an attachment.
|
|
48
|
+
|
|
49
|
+
It is the ID of the direct upload that was created when uploading the file to S3
|
|
50
|
+
via the mediaDirectUpload mutation.
|
|
51
|
+
"""
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
class ThumbnailAttachmentInputWithID(TypedDict, total=False):
|
|
55
|
+
id: Required[str]
|
|
56
|
+
"""The ID of an existing attachment object.
|
|
57
|
+
|
|
58
|
+
Use this when updating a resource and keeping a subset of the attachments. Don't
|
|
59
|
+
use this unless you know what you're doing.
|
|
60
|
+
"""
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
Thumbnail: TypeAlias = Union[ThumbnailAttachmentInputWithDirectUploadID, ThumbnailAttachmentInputWithID]
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from datetime import datetime
|
|
4
|
+
from typing_extensions import Literal
|
|
5
|
+
|
|
6
|
+
from .._models import BaseModel
|
|
7
|
+
from .shared.course_lesson_interaction import CourseLessonInteraction
|
|
8
|
+
|
|
9
|
+
__all__ = ["CourseLessonInteractionCompletedWebhookEvent"]
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class CourseLessonInteractionCompletedWebhookEvent(BaseModel):
|
|
13
|
+
id: str
|
|
14
|
+
"""A unique ID for every single webhook request"""
|
|
15
|
+
|
|
16
|
+
api_version: Literal["v1"]
|
|
17
|
+
"""The API version for this webhook"""
|
|
18
|
+
|
|
19
|
+
data: CourseLessonInteraction
|
|
20
|
+
"""A lesson interaction tracking user progress in courses"""
|
|
21
|
+
|
|
22
|
+
timestamp: datetime
|
|
23
|
+
"""The timestamp in ISO 8601 format that the webhook was sent at on the server"""
|
|
24
|
+
|
|
25
|
+
type: Literal["course_lesson_interaction.completed"]
|
|
26
|
+
"""The webhook event type"""
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Optional
|
|
6
|
+
from typing_extensions import TypedDict
|
|
7
|
+
|
|
8
|
+
__all__ = ["CourseLessonInteractionListParams"]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class CourseLessonInteractionListParams(TypedDict, total=False):
|
|
12
|
+
after: Optional[str]
|
|
13
|
+
"""Returns the elements in the list that come after the specified cursor."""
|
|
14
|
+
|
|
15
|
+
before: Optional[str]
|
|
16
|
+
"""Returns the elements in the list that come before the specified cursor."""
|
|
17
|
+
|
|
18
|
+
completed: Optional[bool]
|
|
19
|
+
"""Whether the lesson has been completed by the user"""
|
|
20
|
+
|
|
21
|
+
course_id: Optional[str]
|
|
22
|
+
"""The ID of the course to list course lesson interactions for"""
|
|
23
|
+
|
|
24
|
+
first: Optional[int]
|
|
25
|
+
"""Returns the first _n_ elements from the list."""
|
|
26
|
+
|
|
27
|
+
last: Optional[int]
|
|
28
|
+
"""Returns the last _n_ elements from the list."""
|
|
29
|
+
|
|
30
|
+
lesson_id: Optional[str]
|
|
31
|
+
"""The ID of the lesson to list course lesson interactions for"""
|
|
32
|
+
|
|
33
|
+
user_id: Optional[str]
|
|
34
|
+
"""The ID of the user to list course lesson interactions for"""
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Optional
|
|
6
|
+
from typing_extensions import TypedDict
|
|
7
|
+
|
|
8
|
+
__all__ = ["CourseLessonListParams"]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class CourseLessonListParams(TypedDict, total=False):
|
|
12
|
+
after: Optional[str]
|
|
13
|
+
"""Returns the elements in the list that come after the specified cursor."""
|
|
14
|
+
|
|
15
|
+
before: Optional[str]
|
|
16
|
+
"""Returns the elements in the list that come before the specified cursor."""
|
|
17
|
+
|
|
18
|
+
chapter_id: Optional[str]
|
|
19
|
+
"""The ID of the chapter (returns lessons only for this chapter)"""
|
|
20
|
+
|
|
21
|
+
course_id: Optional[str]
|
|
22
|
+
"""The ID of the course (returns all lessons across all chapters)"""
|
|
23
|
+
|
|
24
|
+
first: Optional[int]
|
|
25
|
+
"""Returns the first _n_ elements from the list."""
|
|
26
|
+
|
|
27
|
+
last: Optional[int]
|
|
28
|
+
"""Returns the last _n_ elements from the list."""
|
|
@@ -0,0 +1,57 @@
|
|
|
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
|
+
from .embed_type import EmbedType
|
|
8
|
+
from .lesson_types import LessonTypes
|
|
9
|
+
from .lesson_visibilities import LessonVisibilities
|
|
10
|
+
|
|
11
|
+
__all__ = ["CourseLessonListResponse", "Thumbnail"]
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class Thumbnail(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 CourseLessonListResponse(BaseModel):
|
|
23
|
+
id: str
|
|
24
|
+
"""The ID of the lesson"""
|
|
25
|
+
|
|
26
|
+
content: Optional[str] = None
|
|
27
|
+
"""The content of the lesson"""
|
|
28
|
+
|
|
29
|
+
created_at: datetime
|
|
30
|
+
"""The timestamp of when the lesson was created"""
|
|
31
|
+
|
|
32
|
+
days_from_course_start_until_unlock: Optional[int] = None
|
|
33
|
+
"""Number of days from course start until the lesson is unlocked"""
|
|
34
|
+
|
|
35
|
+
embed_id: Optional[str] = None
|
|
36
|
+
"""ID for the embed (YouTube video ID or Loom share ID)"""
|
|
37
|
+
|
|
38
|
+
embed_type: Optional[EmbedType] = None
|
|
39
|
+
"""The type of embed for a lesson"""
|
|
40
|
+
|
|
41
|
+
lesson_type: LessonTypes
|
|
42
|
+
"""The type of the lesson (text, video, pdf, multi, quiz, knowledge_check)"""
|
|
43
|
+
|
|
44
|
+
order: int
|
|
45
|
+
"""The order of the lesson within its chapter"""
|
|
46
|
+
|
|
47
|
+
thumbnail: Optional[Thumbnail] = None
|
|
48
|
+
"""The thumbnail for the lesson"""
|
|
49
|
+
|
|
50
|
+
title: str
|
|
51
|
+
"""The title of the lesson"""
|
|
52
|
+
|
|
53
|
+
visibility: LessonVisibilities
|
|
54
|
+
"""The visibility of the lesson.
|
|
55
|
+
|
|
56
|
+
Determines how / whether this lesson is visible to users.
|
|
57
|
+
"""
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Iterable, Optional
|
|
6
|
+
from typing_extensions import Required, TypedDict
|
|
7
|
+
|
|
8
|
+
from .._types import SequenceNotStr
|
|
9
|
+
|
|
10
|
+
__all__ = ["CourseLessonSubmitAssessmentParams", "Answer"]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class CourseLessonSubmitAssessmentParams(TypedDict, total=False):
|
|
14
|
+
answers: Required[Iterable[Answer]]
|
|
15
|
+
"""The answers to the assessment questions"""
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class Answer(TypedDict, total=False):
|
|
19
|
+
question_id: Required[str]
|
|
20
|
+
"""The ID of the question being answered"""
|
|
21
|
+
|
|
22
|
+
answer_text: Optional[str]
|
|
23
|
+
"""The text answer provided by the user (for short answer questions)"""
|
|
24
|
+
|
|
25
|
+
selected_option_ids: Optional[SequenceNotStr[str]]
|
|
26
|
+
"""The IDs of the selected options (for multiple choice/select questions)"""
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing import Dict, Optional
|
|
4
|
+
from datetime import datetime
|
|
5
|
+
|
|
6
|
+
from .._models import BaseModel
|
|
7
|
+
|
|
8
|
+
__all__ = ["CourseLessonSubmitAssessmentResponse", "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 CourseLessonSubmitAssessmentResponse(BaseModel):
|
|
31
|
+
id: str
|
|
32
|
+
"""The ID of the assessment result"""
|
|
33
|
+
|
|
34
|
+
created_at: datetime
|
|
35
|
+
"""When the assessment was taken"""
|
|
36
|
+
|
|
37
|
+
lesson: Lesson
|
|
38
|
+
"""The lesson this assessment result is for"""
|
|
39
|
+
|
|
40
|
+
result_correct: int
|
|
41
|
+
"""The number of correct answers"""
|
|
42
|
+
|
|
43
|
+
result_grade: float
|
|
44
|
+
"""The grade achieved on the assessment"""
|
|
45
|
+
|
|
46
|
+
result_graded_questions: Dict[str, object]
|
|
47
|
+
"""Array of graded questions with details"""
|
|
48
|
+
|
|
49
|
+
result_passing_grade: bool
|
|
50
|
+
"""Whether the user achieved a passing grade"""
|
|
51
|
+
|
|
52
|
+
result_question_count: int
|
|
53
|
+
"""The total number of questions in the assessment"""
|
|
54
|
+
|
|
55
|
+
score_percent: float
|
|
56
|
+
"""The percentage score achieved on the assessment"""
|
|
57
|
+
|
|
58
|
+
updated_at: datetime
|
|
59
|
+
"""When the assessment result was last updated"""
|
|
60
|
+
|
|
61
|
+
user: User
|
|
62
|
+
"""The user who took the assessment"""
|