whop-sdk 0.0.1__py3-none-any.whl → 0.0.3__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.

Potentially problematic release.


This version of whop-sdk might be problematic. Click here for more details.

Files changed (126) hide show
  1. whop_sdk/_client.py +65 -2
  2. whop_sdk/_version.py +1 -1
  3. whop_sdk/resources/__init__.py +98 -0
  4. whop_sdk/resources/checkout_configurations.py +16 -12
  5. whop_sdk/resources/course_chapters.py +602 -0
  6. whop_sdk/resources/course_lessons.py +722 -0
  7. whop_sdk/resources/courses.py +713 -0
  8. whop_sdk/resources/experiences.py +107 -0
  9. whop_sdk/resources/forum_posts.py +123 -1
  10. whop_sdk/resources/forums.py +446 -0
  11. whop_sdk/resources/members.py +429 -0
  12. whop_sdk/resources/memberships.py +16 -8
  13. whop_sdk/resources/messages.py +113 -1
  14. whop_sdk/resources/payments.py +3 -26
  15. whop_sdk/resources/plans.py +84 -6
  16. whop_sdk/resources/products.py +8 -16
  17. whop_sdk/resources/promo_codes.py +652 -0
  18. whop_sdk/resources/reviews.py +315 -0
  19. whop_sdk/types/__init__.py +64 -0
  20. whop_sdk/types/app_list_response.py +16 -1
  21. whop_sdk/types/assessment_question_types.py +7 -0
  22. whop_sdk/types/billing_reasons.py +9 -0
  23. whop_sdk/types/card_brands.py +24 -0
  24. whop_sdk/types/checkout_configuration_create_params.py +70 -7
  25. whop_sdk/types/checkout_configuration_list_response.py +12 -9
  26. whop_sdk/types/course.py +109 -0
  27. whop_sdk/types/course_chapter.py +32 -0
  28. whop_sdk/types/course_chapter_create_params.py +16 -0
  29. whop_sdk/types/course_chapter_delete_response.py +7 -0
  30. whop_sdk/types/course_chapter_list_params.py +25 -0
  31. whop_sdk/types/course_chapter_list_response.py +16 -0
  32. whop_sdk/types/course_chapter_update_params.py +12 -0
  33. whop_sdk/types/course_create_params.py +41 -0
  34. whop_sdk/types/course_delete_response.py +7 -0
  35. whop_sdk/types/course_lesson_create_params.py +27 -0
  36. whop_sdk/types/course_lesson_delete_response.py +7 -0
  37. whop_sdk/types/course_lesson_interaction_completed_webhook_event.py +26 -0
  38. whop_sdk/types/course_lesson_list_params.py +28 -0
  39. whop_sdk/types/course_lesson_list_response.py +35 -0
  40. whop_sdk/types/course_lesson_update_params.py +144 -0
  41. whop_sdk/types/course_list_params.py +28 -0
  42. whop_sdk/types/course_list_response.py +77 -0
  43. whop_sdk/types/course_update_params.py +89 -0
  44. whop_sdk/types/entry_approved_webhook_event.py +26 -0
  45. whop_sdk/types/entry_created_webhook_event.py +26 -0
  46. whop_sdk/types/entry_deleted_webhook_event.py +26 -0
  47. whop_sdk/types/entry_denied_webhook_event.py +26 -0
  48. whop_sdk/types/experience_duplicate_params.py +13 -0
  49. whop_sdk/types/experience_list_response.py +27 -1
  50. whop_sdk/types/forum_list_params.py +28 -0
  51. whop_sdk/types/forum_list_response.py +33 -0
  52. whop_sdk/types/forum_post_list_response.py +7 -0
  53. whop_sdk/types/forum_post_update_params.py +41 -0
  54. whop_sdk/types/forum_update_params.py +23 -0
  55. whop_sdk/types/invoice_create_params.py +10 -2
  56. whop_sdk/types/languages.py +30 -0
  57. whop_sdk/types/ledger_account_retrieve_response.py +15 -1
  58. whop_sdk/types/lesson.py +159 -0
  59. whop_sdk/types/lesson_types.py +7 -0
  60. whop_sdk/types/lesson_visibilities.py +7 -0
  61. whop_sdk/types/member_list_params.py +73 -0
  62. whop_sdk/types/member_list_response.py +65 -0
  63. whop_sdk/types/member_retrieve_response.py +79 -0
  64. whop_sdk/types/membership_activated_webhook_event.py +29 -0
  65. whop_sdk/types/membership_deactivated_webhook_event.py +29 -0
  66. whop_sdk/types/membership_list_params.py +7 -4
  67. whop_sdk/types/membership_list_response.py +12 -1
  68. whop_sdk/types/message_update_params.py +35 -0
  69. whop_sdk/types/payment_failed_webhook_event.py +26 -0
  70. whop_sdk/types/payment_list_params.py +2 -7
  71. whop_sdk/types/payment_list_response.py +23 -13
  72. whop_sdk/types/payment_method_types.py +92 -0
  73. whop_sdk/types/payment_pending_webhook_event.py +26 -0
  74. whop_sdk/types/payment_succeeded_webhook_event.py +26 -0
  75. whop_sdk/types/plan_create_params.py +29 -3
  76. whop_sdk/types/plan_list_response.py +9 -0
  77. whop_sdk/types/plan_update_params.py +18 -0
  78. whop_sdk/types/product_create_params.py +1 -24
  79. whop_sdk/types/product_update_params.py +12 -1
  80. whop_sdk/types/promo_code.py +90 -0
  81. whop_sdk/types/promo_code_create_params.py +70 -0
  82. whop_sdk/types/promo_code_delete_response.py +7 -0
  83. whop_sdk/types/promo_code_list_params.py +37 -0
  84. whop_sdk/types/promo_code_list_response.py +79 -0
  85. whop_sdk/types/promo_code_status.py +7 -0
  86. whop_sdk/types/promo_duration.py +7 -0
  87. whop_sdk/types/review_list_params.py +31 -0
  88. whop_sdk/types/review_list_response.py +78 -0
  89. whop_sdk/types/review_retrieve_response.py +103 -0
  90. whop_sdk/types/review_status.py +7 -0
  91. whop_sdk/types/shared/__init__.py +7 -0
  92. whop_sdk/types/shared/access_level.py +7 -0
  93. whop_sdk/types/shared/app.py +25 -1
  94. whop_sdk/types/shared/checkout_configuration.py +12 -9
  95. whop_sdk/types/shared/company.py +15 -1
  96. whop_sdk/types/shared/course_lesson_interaction.py +20 -1
  97. whop_sdk/types/shared/email_notification_preferences.py +7 -0
  98. whop_sdk/types/shared/experience.py +27 -1
  99. whop_sdk/types/shared/forum.py +33 -0
  100. whop_sdk/types/shared/forum_post.py +7 -0
  101. whop_sdk/types/shared/invoice.py +4 -1
  102. whop_sdk/types/shared/invoice_list_item.py +4 -1
  103. whop_sdk/types/shared/member_most_recent_actions.py +22 -0
  104. whop_sdk/types/shared/member_statuses.py +7 -0
  105. whop_sdk/types/shared/membership.py +12 -1
  106. whop_sdk/types/shared/payment.py +23 -13
  107. whop_sdk/types/shared/plan.py +9 -0
  108. whop_sdk/types/shared/product.py +8 -0
  109. whop_sdk/types/shared/product_list_item.py +8 -0
  110. whop_sdk/types/shared/who_can_comment_types.py +7 -0
  111. whop_sdk/types/shared/who_can_post_types.py +7 -0
  112. whop_sdk/types/shared_params/__init__.py +7 -0
  113. whop_sdk/types/shared_params/access_level.py +9 -0
  114. whop_sdk/types/shared_params/email_notification_preferences.py +9 -0
  115. whop_sdk/types/shared_params/member_most_recent_actions.py +24 -0
  116. whop_sdk/types/shared_params/member_statuses.py +9 -0
  117. whop_sdk/types/shared_params/promo_type.py +9 -0
  118. whop_sdk/types/shared_params/who_can_comment_types.py +9 -0
  119. whop_sdk/types/shared_params/who_can_post_types.py +9 -0
  120. whop_sdk/types/unwrap_webhook_event.py +24 -1
  121. whop_sdk/types/user_check_access_response.py +2 -3
  122. whop_sdk/types/user_retrieve_response.py +12 -1
  123. {whop_sdk-0.0.1.dist-info → whop_sdk-0.0.3.dist-info}/METADATA +2 -2
  124. {whop_sdk-0.0.1.dist-info → whop_sdk-0.0.3.dist-info}/RECORD +126 -50
  125. {whop_sdk-0.0.1.dist-info → whop_sdk-0.0.3.dist-info}/WHEEL +0 -0
  126. {whop_sdk-0.0.1.dist-info → whop_sdk-0.0.3.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,79 @@
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 .promo_duration import PromoDuration
8
+ from .shared.currency import Currency
9
+ from .promo_code_status import PromoCodeStatus
10
+ from .shared.promo_type import PromoType
11
+
12
+ __all__ = ["PromoCodeListResponse", "Product"]
13
+
14
+
15
+ class Product(BaseModel):
16
+ id: str
17
+ """The internal ID of the public product."""
18
+
19
+ title: str
20
+ """The title of the product. Use for Whop 4.0."""
21
+
22
+
23
+ class PromoCodeListResponse(BaseModel):
24
+ id: str
25
+ """The ID of the promo."""
26
+
27
+ amount_off: float
28
+ """The amount off (% or flat amount) for the promo."""
29
+
30
+ churned_users_only: bool
31
+ """Restricts promo use to only users who have churned from the company before."""
32
+
33
+ code: Optional[str] = None
34
+ """The specific code used to apply the promo at checkout."""
35
+
36
+ created_at: datetime
37
+ """The timestamp of when the promo was created."""
38
+
39
+ currency: Currency
40
+ """The monetary currency of the promo code."""
41
+
42
+ duration: Optional[PromoDuration] = None
43
+ """The duration setting for the promo code"""
44
+
45
+ existing_memberships_only: bool
46
+ """Restricts promo use to only be applied to already purchased memberships."""
47
+
48
+ expires_at: Optional[datetime] = None
49
+ """The date/time of when the promo expires."""
50
+
51
+ new_users_only: bool
52
+ """
53
+ Restricts promo use to only users who have never purchased from the company
54
+ before.
55
+ """
56
+
57
+ one_per_customer: bool
58
+ """Restricts promo use to only be applied once per customer."""
59
+
60
+ product: Optional[Product] = None
61
+ """The access pass associated with the promo code."""
62
+
63
+ promo_duration_months: Optional[int] = None
64
+ """The number of months the promo is applied for."""
65
+
66
+ promo_type: PromoType
67
+ """The type (% or flat amount) of the promo."""
68
+
69
+ status: PromoCodeStatus
70
+ """Indicates if the promo code is live or disabled."""
71
+
72
+ stock: int
73
+ """The quantity limit on the number of uses."""
74
+
75
+ unlimited_stock: bool
76
+ """Whether or not the promo code has unlimited stock."""
77
+
78
+ uses: int
79
+ """The amount of times the promo codes has been used."""
@@ -0,0 +1,7 @@
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__ = ["PromoCodeStatus"]
6
+
7
+ PromoCodeStatus: TypeAlias = Literal["active", "inactive", "archived"]
@@ -0,0 +1,7 @@
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__ = ["PromoDuration"]
6
+
7
+ PromoDuration: TypeAlias = Literal["forever", "once", "repeating"]
@@ -0,0 +1,31 @@
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__ = ["ReviewListParams"]
9
+
10
+
11
+ class ReviewListParams(TypedDict, total=False):
12
+ product_id: Required[str]
13
+ """The ID of the product"""
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."""
26
+
27
+ max_stars: Optional[int]
28
+ """The maximum star rating of the review (inclusive)"""
29
+
30
+ min_stars: Optional[int]
31
+ """The minimum star rating of the review (inclusive)"""
@@ -0,0 +1,78 @@
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 .review_status import ReviewStatus
8
+
9
+ __all__ = ["ReviewListResponse", "Attachment", "User"]
10
+
11
+
12
+ class Attachment(BaseModel):
13
+ id: str
14
+ """The ID of the attachment"""
15
+
16
+ content_type: Optional[str] = None
17
+ """The attachment's content type (e.g., image/jpg, video/mp4)"""
18
+
19
+ filename: Optional[str] = None
20
+ """The name of the file"""
21
+
22
+ url: Optional[str] = None
23
+ """This is the URL you use to render optimized attachments on the client.
24
+
25
+ This should be used for apps.
26
+ """
27
+
28
+
29
+ class User(BaseModel):
30
+ id: str
31
+ """The internal ID of the user."""
32
+
33
+ name: Optional[str] = None
34
+ """The name of the user from their Whop account."""
35
+
36
+ username: str
37
+ """The username of the user from their Whop account."""
38
+
39
+
40
+ class ReviewListResponse(BaseModel):
41
+ id: str
42
+ """The internal ID of the review."""
43
+
44
+ attachments: List[Attachment]
45
+ """The attachments attached to the review."""
46
+
47
+ created_at: datetime
48
+ """The timestamp of when the review was created."""
49
+
50
+ description: Optional[str] = None
51
+ """The description of the review."""
52
+
53
+ joined_at: Optional[datetime] = None
54
+ """The timestamp of when the user joined the product."""
55
+
56
+ paid_for_product: Optional[bool] = None
57
+ """Whether or not the user paid for the product.
58
+
59
+ If null, the payment status is unknown.
60
+ """
61
+
62
+ published_at: Optional[datetime] = None
63
+ """The timestamp of when the review was published."""
64
+
65
+ stars: int
66
+ """The number of stars the user gave the product."""
67
+
68
+ status: ReviewStatus
69
+ """The status of the review."""
70
+
71
+ title: Optional[str] = None
72
+ """The title of the review."""
73
+
74
+ updated_at: datetime
75
+ """The timestamp of when the review was last updated."""
76
+
77
+ user: User
78
+ """The user account that performed the action."""
@@ -0,0 +1,103 @@
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 .review_status import ReviewStatus
8
+
9
+ __all__ = ["ReviewRetrieveResponse", "Attachment", "Company", "Product", "User"]
10
+
11
+
12
+ class Attachment(BaseModel):
13
+ id: str
14
+ """The ID of the attachment"""
15
+
16
+ content_type: Optional[str] = None
17
+ """The attachment's content type (e.g., image/jpg, video/mp4)"""
18
+
19
+ filename: Optional[str] = None
20
+ """The name of the file"""
21
+
22
+ url: Optional[str] = None
23
+ """This is the URL you use to render optimized attachments on the client.
24
+
25
+ This should be used for apps.
26
+ """
27
+
28
+
29
+ class Company(BaseModel):
30
+ id: str
31
+ """The ID (tag) of the company."""
32
+
33
+ route: str
34
+ """The slug/route of the company on the Whop site."""
35
+
36
+ title: str
37
+ """The title of the company."""
38
+
39
+
40
+ class Product(BaseModel):
41
+ id: str
42
+ """The internal ID of the public product."""
43
+
44
+ title: str
45
+ """The title of the product. Use for Whop 4.0."""
46
+
47
+
48
+ class User(BaseModel):
49
+ id: str
50
+ """The internal ID of the user."""
51
+
52
+ name: Optional[str] = None
53
+ """The name of the user from their Whop account."""
54
+
55
+ username: str
56
+ """The username of the user from their Whop account."""
57
+
58
+
59
+ class ReviewRetrieveResponse(BaseModel):
60
+ id: str
61
+ """The internal ID of the review."""
62
+
63
+ attachments: List[Attachment]
64
+ """The attachments attached to the review."""
65
+
66
+ company: Company
67
+ """The company the review is for."""
68
+
69
+ created_at: datetime
70
+ """The timestamp of when the review was created."""
71
+
72
+ description: Optional[str] = None
73
+ """The description of the review."""
74
+
75
+ joined_at: Optional[datetime] = None
76
+ """The timestamp of when the user joined the product."""
77
+
78
+ paid_for_product: Optional[bool] = None
79
+ """Whether or not the user paid for the product.
80
+
81
+ If null, the payment status is unknown.
82
+ """
83
+
84
+ product: Product
85
+ """The product the review is for."""
86
+
87
+ published_at: Optional[datetime] = None
88
+ """The timestamp of when the review was published."""
89
+
90
+ stars: int
91
+ """The number of stars the user gave the product."""
92
+
93
+ status: ReviewStatus
94
+ """The status of the review."""
95
+
96
+ title: Optional[str] = None
97
+ """The title of the review."""
98
+
99
+ updated_at: datetime
100
+ """The timestamp of when the review was last updated."""
101
+
102
+ user: User
103
+ """The user account that performed the action."""
@@ -0,0 +1,7 @@
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__ = ["ReviewStatus"]
6
+
7
+ ReviewStatus: TypeAlias = Literal["pending", "published", "removed"]
@@ -3,6 +3,7 @@
3
3
  from .app import App as App
4
4
  from .plan import Plan as Plan
5
5
  from .entry import Entry as Entry
6
+ from .forum import Forum as Forum
6
7
  from .company import Company as Company
7
8
  from .invoice import Invoice as Invoice
8
9
  from .message import Message as Message
@@ -23,6 +24,7 @@ from .forum_post import ForumPost as ForumPost
23
24
  from .membership import Membership as Membership
24
25
  from .promo_type import PromoType as PromoType
25
26
  from .visibility import Visibility as Visibility
27
+ from .access_level import AccessLevel as AccessLevel
26
28
  from .app_statuses import AppStatuses as AppStatuses
27
29
  from .chat_channel import ChatChannel as ChatChannel
28
30
  from .entry_status import EntryStatus as EntryStatus
@@ -35,6 +37,7 @@ from .industry_types import IndustryTypes as IndustryTypes
35
37
  from .invoice_status import InvoiceStatus as InvoiceStatus
36
38
  from .receipt_status import ReceiptStatus as ReceiptStatus
37
39
  from .release_method import ReleaseMethod as ReleaseMethod
40
+ from .member_statuses import MemberStatuses as MemberStatuses
38
41
  from .shipment_status import ShipmentStatus as ShipmentStatus
39
42
  from .support_channel import SupportChannel as SupportChannel
40
43
  from .access_pass_type import AccessPassType as AccessPassType
@@ -46,10 +49,14 @@ from .product_list_item import ProductListItem as ProductListItem
46
49
  from .visibility_filter import VisibilityFilter as VisibilityFilter
47
50
  from .app_build_statuses import AppBuildStatuses as AppBuildStatuses
48
51
  from .shipment_substatus import ShipmentSubstatus as ShipmentSubstatus
52
+ from .who_can_post_types import WhoCanPostTypes as WhoCanPostTypes
49
53
  from .app_build_platforms import AppBuildPlatforms as AppBuildPlatforms
50
54
  from .authorized_user_roles import AuthorizedUserRoles as AuthorizedUserRoles
55
+ from .who_can_comment_types import WhoCanCommentTypes as WhoCanCommentTypes
51
56
  from .checkout_configuration import CheckoutConfiguration as CheckoutConfiguration
52
57
  from .friendly_receipt_status import FriendlyReceiptStatus as FriendlyReceiptStatus
53
58
  from .global_affiliate_status import GlobalAffiliateStatus as GlobalAffiliateStatus
54
59
  from .course_lesson_interaction import CourseLessonInteraction as CourseLessonInteraction
60
+ from .member_most_recent_actions import MemberMostRecentActions as MemberMostRecentActions
61
+ from .email_notification_preferences import EmailNotificationPreferences as EmailNotificationPreferences
55
62
  from .course_lesson_interaction_list_item import CourseLessonInteractionListItem as CourseLessonInteractionListItem
@@ -0,0 +1,7 @@
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__ = ["AccessLevel"]
6
+
7
+ AccessLevel: TypeAlias = Literal["no_access", "admin", "customer"]
@@ -6,7 +6,16 @@ from datetime import datetime
6
6
  from ..._models import BaseModel
7
7
  from .app_statuses import AppStatuses
8
8
 
9
- __all__ = ["App", "APIKey", "Company", "Creator", "RequestedPermission", "RequestedPermissionPermissionAction", "Stats"]
9
+ __all__ = [
10
+ "App",
11
+ "APIKey",
12
+ "Company",
13
+ "Creator",
14
+ "Icon",
15
+ "RequestedPermission",
16
+ "RequestedPermissionPermissionAction",
17
+ "Stats",
18
+ ]
10
19
 
11
20
 
12
21
  class APIKey(BaseModel):
@@ -39,6 +48,14 @@ class Creator(BaseModel):
39
48
  """The username of the user from their Whop account."""
40
49
 
41
50
 
51
+ class Icon(BaseModel):
52
+ 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
+
42
59
  class RequestedPermissionPermissionAction(BaseModel):
43
60
  action: str
44
61
  """The identifier of the action."""
@@ -130,6 +147,13 @@ class App(BaseModel):
130
147
  /experiences/[experienceId]
131
148
  """
132
149
 
150
+ icon: Optional[Icon] = None
151
+ """The icon for the app.
152
+
153
+ This icon is shown on discovery, on the product page, on checkout, and as a
154
+ default icon for the experiences.
155
+ """
156
+
133
157
  name: str
134
158
  """The name of the app"""
135
159
 
@@ -45,22 +45,25 @@ class Plan(BaseModel):
45
45
 
46
46
  class CheckoutConfiguration(BaseModel):
47
47
  id: str
48
- """The ID of the checkout session"""
48
+ """The ID of the checkout configuration"""
49
49
 
50
- affiliate_code: str
51
- """The affiliate code to use for the checkout session"""
50
+ affiliate_code: Optional[str] = None
51
+ """The affiliate code to use for the checkout configuration"""
52
52
 
53
53
  company_id: str
54
- """The ID of the company to use for the checkout session"""
54
+ """The ID of the company to use for the checkout configuration"""
55
55
 
56
56
  metadata: Dict[str, object]
57
- """The metadata to use for the checkout session"""
57
+ """The metadata to use for the checkout configuration"""
58
58
 
59
59
  plan: Plan
60
- """The plan to use for the checkout session"""
60
+ """The plan to use for the checkout configuration"""
61
61
 
62
62
  purchase_url: str
63
- """The URL to redirect the user to after the checkout session is created"""
63
+ """A URL you can send to customers to complete a checkout.
64
64
 
65
- redirect_url: str
66
- """The URL to redirect the user to after the checkout session is created"""
65
+ It looks like `/checkout/plan_xxxx?session={id}`
66
+ """
67
+
68
+ redirect_url: Optional[str] = None
69
+ """The URL to redirect the user to after the checkout configuration is created"""
@@ -8,7 +8,15 @@ from ..._models import BaseModel
8
8
  from .business_types import BusinessTypes
9
9
  from .industry_types import IndustryTypes
10
10
 
11
- __all__ = ["Company", "OwnerUser", "SocialLink"]
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
+ """
12
20
 
13
21
 
14
22
  class OwnerUser(BaseModel):
@@ -43,9 +51,15 @@ class Company(BaseModel):
43
51
  created_at: datetime
44
52
  """When the company was created (signed up)"""
45
53
 
54
+ description: Optional[str] = None
55
+ """The creator pitch for the company."""
56
+
46
57
  industry_type: Optional[IndustryTypes] = None
47
58
  """The different industry types a company can be in."""
48
59
 
60
+ logo: Optional[Logo] = None
61
+ """The company's logo."""
62
+
49
63
  member_count: int
50
64
  """The number of members in the company."""
51
65
 
@@ -5,7 +5,23 @@ from datetime import datetime
5
5
 
6
6
  from ..._models import BaseModel
7
7
 
8
- __all__ = ["CourseLessonInteraction", "Lesson", "User"]
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"""
9
25
 
10
26
 
11
27
  class Lesson(BaseModel):
@@ -34,6 +50,9 @@ class CourseLessonInteraction(BaseModel):
34
50
  completed: bool
35
51
  """Whether the lesson has been completed by the user"""
36
52
 
53
+ course: Course
54
+ """The course for this lesson interaction"""
55
+
37
56
  created_at: datetime
38
57
  """When the interaction was created"""
39
58
 
@@ -0,0 +1,7 @@
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__ = ["EmailNotificationPreferences"]
6
+
7
+ EmailNotificationPreferences: TypeAlias = Literal["all_admin_posts", "only_weekly_summary", "none"]
@@ -5,13 +5,28 @@ from datetime import datetime
5
5
 
6
6
  from ..._models import BaseModel
7
7
 
8
- __all__ = ["Experience", "App", "Company", "Product"]
8
+ __all__ = ["Experience", "App", "AppIcon", "Company", "Image", "Product"]
9
+
10
+
11
+ class AppIcon(BaseModel):
12
+ url: Optional[str] = None
13
+ """This is the URL you use to render optimized attachments on the client.
14
+
15
+ This should be used for apps.
16
+ """
9
17
 
10
18
 
11
19
  class App(BaseModel):
12
20
  id: str
13
21
  """The ID of the app"""
14
22
 
23
+ icon: Optional[AppIcon] = None
24
+ """The icon for the app.
25
+
26
+ This icon is shown on discovery, on the product page, on checkout, and as a
27
+ default icon for the experiences.
28
+ """
29
+
15
30
  name: str
16
31
  """The name of the app"""
17
32
 
@@ -27,6 +42,14 @@ class Company(BaseModel):
27
42
  """The title of the company."""
28
43
 
29
44
 
45
+ class Image(BaseModel):
46
+ url: Optional[str] = None
47
+ """This is the URL you use to render optimized attachments on the client.
48
+
49
+ This should be used for apps.
50
+ """
51
+
52
+
30
53
  class Product(BaseModel):
31
54
  id: str
32
55
  """The internal ID of the public product."""
@@ -51,6 +74,9 @@ class Experience(BaseModel):
51
74
  created_at: datetime
52
75
  """The timestamp of when this experience was created."""
53
76
 
77
+ image: Optional[Image] = None
78
+ """The logo for the experience."""
79
+
54
80
  name: str
55
81
  """The written name of the description."""
56
82
 
@@ -0,0 +1,33 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from ..._models import BaseModel
4
+ from .who_can_post_types import WhoCanPostTypes
5
+ from .who_can_comment_types import WhoCanCommentTypes
6
+ from .email_notification_preferences import EmailNotificationPreferences
7
+
8
+ __all__ = ["Forum", "Experience"]
9
+
10
+
11
+ class Experience(BaseModel):
12
+ id: str
13
+ """The unique ID representing this experience"""
14
+
15
+ name: str
16
+ """The written name of the description."""
17
+
18
+
19
+ class Forum(BaseModel):
20
+ id: str
21
+ """The unique identifier for the entity"""
22
+
23
+ email_notification_preference: EmailNotificationPreferences
24
+ """The email notification preference for this forum"""
25
+
26
+ experience: Experience
27
+ """The experience for this forum"""
28
+
29
+ who_can_comment: WhoCanCommentTypes
30
+ """Who can comment on this forum"""
31
+
32
+ who_can_post: WhoCanPostTypes
33
+ """Who can post on this forum"""
@@ -1,6 +1,7 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  from typing import Optional
4
+ from datetime import datetime
4
5
 
5
6
  from ..._models import BaseModel
6
7
 
@@ -28,6 +29,9 @@ class ForumPost(BaseModel):
28
29
  content: Optional[str] = None
29
30
  """The content of the forum post in Markdown format"""
30
31
 
32
+ created_at: datetime
33
+ """The timestamp when the post was created"""
34
+
31
35
  is_edited: bool
32
36
  """Whether the forum post has been edited"""
33
37
 
@@ -46,6 +50,9 @@ class ForumPost(BaseModel):
46
50
  title: Optional[str] = None
47
51
  """The title of the forum post"""
48
52
 
53
+ updated_at: datetime
54
+ """The timestamp when the post was last updated"""
55
+
49
56
  user: User
50
57
  """The user who created this forum post"""
51
58
 
@@ -49,7 +49,10 @@ class Invoice(BaseModel):
49
49
  """The email address that the invoice was created for."""
50
50
 
51
51
  fetch_invoice_token: str
52
- """The token to fetch the invoice."""
52
+ """
53
+ A signed token that allows fetching the invoice data publically without being
54
+ authenticated.
55
+ """
53
56
 
54
57
  number: str
55
58
  """The number of the invoice."""
@@ -49,7 +49,10 @@ class InvoiceListItem(BaseModel):
49
49
  """The email address that the invoice was created for."""
50
50
 
51
51
  fetch_invoice_token: str
52
- """The token to fetch the invoice."""
52
+ """
53
+ A signed token that allows fetching the invoice data publically without being
54
+ authenticated.
55
+ """
53
56
 
54
57
  number: str
55
58
  """The number of the invoice."""