dub 0.10.2 → 0.10.4

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.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/lib/open_api_sdk/models/operations/createcustomer_requestbody.rb +6 -2
  3. data/lib/open_api_sdk/models/operations/createcustomer_requestbody.rbi +2 -0
  4. data/lib/open_api_sdk/models/operations/createpartner_link.rb +6 -2
  5. data/lib/open_api_sdk/models/operations/createpartner_link.rbi +2 -0
  6. data/lib/open_api_sdk/models/operations/createpartner_responsebody.rb +6 -38
  7. data/lib/open_api_sdk/models/operations/createpartner_responsebody.rbi +2 -18
  8. data/lib/open_api_sdk/models/operations/link.rb +6 -2
  9. data/lib/open_api_sdk/models/operations/link.rbi +2 -0
  10. data/lib/open_api_sdk/models/operations/listcommissions_request.rb +7 -3
  11. data/lib/open_api_sdk/models/operations/listcommissions_request.rbi +2 -0
  12. data/lib/open_api_sdk/models/operations/listevents_request.rb +6 -2
  13. data/lib/open_api_sdk/models/operations/listevents_request.rbi +2 -0
  14. data/lib/open_api_sdk/models/operations/listpartners_link.rb +6 -2
  15. data/lib/open_api_sdk/models/operations/listpartners_link.rbi +2 -0
  16. data/lib/open_api_sdk/models/operations/listpartners_queryparam_sortby.rb +1 -1
  17. data/lib/open_api_sdk/models/operations/listpartners_request.rb +11 -7
  18. data/lib/open_api_sdk/models/operations/listpartners_request.rbi +4 -2
  19. data/lib/open_api_sdk/models/operations/listpartners_responsebody.rb +6 -38
  20. data/lib/open_api_sdk/models/operations/listpartners_responsebody.rbi +2 -18
  21. data/lib/open_api_sdk/models/operations/retrieveanalytics_request.rb +6 -2
  22. data/lib/open_api_sdk/models/operations/retrieveanalytics_request.rbi +2 -0
  23. data/lib/open_api_sdk/models/operations/tracklead_link.rb +65 -0
  24. data/lib/open_api_sdk/models/operations/tracklead_link.rbi +29 -0
  25. data/lib/open_api_sdk/models/operations/tracklead_responsebody.rb +6 -2
  26. data/lib/open_api_sdk/models/operations/tracklead_responsebody.rbi +2 -0
  27. data/lib/open_api_sdk/models/operations/tracksale_requestbody.rb +5 -5
  28. data/lib/open_api_sdk/models/operations/updatecustomer_requestbody.rb +6 -2
  29. data/lib/open_api_sdk/models/operations/updatecustomer_requestbody.rbi +2 -0
  30. data/lib/open_api_sdk/models/operations.rb +1 -0
  31. data/lib/open_api_sdk/models/shared/commissioncreatedevent_data.rb +2 -2
  32. data/lib/open_api_sdk/models/shared/commissioncreatedevent_partner.rb +77 -0
  33. data/lib/open_api_sdk/models/shared/commissioncreatedevent_partner.rbi +35 -0
  34. data/lib/open_api_sdk/models/shared/leadcreatedevent_data.rb +10 -2
  35. data/lib/open_api_sdk/models/shared/leadcreatedevent_data.rbi +4 -0
  36. data/lib/open_api_sdk/models/shared/partnerenrolledevent_data.rb +6 -38
  37. data/lib/open_api_sdk/models/shared/partnerenrolledevent_data.rbi +2 -18
  38. data/lib/open_api_sdk/models/shared/partnerenrolledevent_link.rb +6 -2
  39. data/lib/open_api_sdk/models/shared/partnerenrolledevent_link.rbi +2 -0
  40. data/lib/open_api_sdk/models/shared/salecreatedevent_data.rb +10 -2
  41. data/lib/open_api_sdk/models/shared/salecreatedevent_data.rbi +4 -0
  42. data/lib/open_api_sdk/models/shared/salecreatedevent_partner.rb +77 -0
  43. data/lib/open_api_sdk/models/shared/salecreatedevent_partner.rbi +35 -0
  44. data/lib/open_api_sdk/models/shared.rb +2 -0
  45. data/lib/open_api_sdk/sdkconfiguration.rb +3 -3
  46. metadata +8 -2
@@ -25,6 +25,8 @@ module OpenApiSDK
25
25
  field :created_at, ::String, { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('createdAt'), required: true } }
26
26
  # The status of the partner's enrollment in the program.
27
27
  field :status, Models::Operations::ListPartnersStatus, { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('status'), required: true, 'decoder': Utils.enum_from_string(Models::Operations::ListPartnersStatus, false) } }
28
+ # If the partner profile type is a company, this is the partner's legal company name.
29
+ field :company_name, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('companyName'), required: true } }
28
30
  # The partner's email address. Should be a unique value across Dub.
29
31
  field :email, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('email'), required: true } }
30
32
  # The partner's avatar image.
@@ -75,43 +77,26 @@ module OpenApiSDK
75
77
  field :net_revenue, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('netRevenue') } }
76
78
  # The partner's website URL (including the https protocol).
77
79
  field :website, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('website') } }
78
-
79
- field :website_txt_record, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('websiteTxtRecord') } }
80
-
81
- field :website_verified_at, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('websiteVerifiedAt') } }
82
80
  # The partner's YouTube channel username (e.g. `johndoe`).
83
81
  field :youtube, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('youtube') } }
84
-
85
- field :youtube_verified_at, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('youtubeVerifiedAt') } }
86
-
87
- field :youtube_subscriber_count, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('youtubeSubscriberCount') } }
88
-
89
- field :youtube_view_count, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('youtubeViewCount') } }
90
82
  # The partner's Twitter username (e.g. `johndoe`).
91
83
  field :twitter, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('twitter') } }
92
-
93
- field :twitter_verified_at, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('twitterVerifiedAt') } }
94
84
  # The partner's LinkedIn username (e.g. `johndoe`).
95
85
  field :linkedin, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('linkedin') } }
96
-
97
- field :linkedin_verified_at, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('linkedinVerifiedAt') } }
98
86
  # The partner's Instagram username (e.g. `johndoe`).
99
87
  field :instagram, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('instagram') } }
100
-
101
- field :instagram_verified_at, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('instagramVerifiedAt') } }
102
88
  # The partner's TikTok username (e.g. `johndoe`).
103
89
  field :tiktok, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('tiktok') } }
104
90
 
105
- field :tiktok_verified_at, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('tiktokVerifiedAt') } }
106
-
107
- sig { params(id: ::String, name: ::String, program_id: ::String, partner_id: ::String, created_at: ::String, status: Models::Operations::ListPartnersStatus, email: T.nilable(::String), image: T.nilable(::String), country: T.nilable(::String), paypal_email: T.nilable(::String), stripe_connect_id: T.nilable(::String), payouts_enabled_at: T.nilable(::String), tenant_id: T.nilable(::String), links: T.nilable(T::Array[Models::Operations::ListPartnersLink]), description: T.nilable(::String), group_id: T.nilable(::String), total_commissions: T.nilable(::Float), click_reward_id: T.nilable(::String), lead_reward_id: T.nilable(::String), sale_reward_id: T.nilable(::String), discount_id: T.nilable(::String), application_id: T.nilable(::String), banned_at: T.nilable(::String), banned_reason: T.nilable(Models::Operations::ListPartnersBannedReason), clicks: T.nilable(::Float), leads: T.nilable(::Float), conversions: T.nilable(::Float), sales: T.nilable(::Float), sale_amount: T.nilable(::Float), net_revenue: T.nilable(::Float), website: T.nilable(::String), website_txt_record: T.nilable(::String), website_verified_at: T.nilable(::String), youtube: T.nilable(::String), youtube_verified_at: T.nilable(::String), youtube_subscriber_count: T.nilable(::Float), youtube_view_count: T.nilable(::Float), twitter: T.nilable(::String), twitter_verified_at: T.nilable(::String), linkedin: T.nilable(::String), linkedin_verified_at: T.nilable(::String), instagram: T.nilable(::String), instagram_verified_at: T.nilable(::String), tiktok: T.nilable(::String), tiktok_verified_at: T.nilable(::String)).void }
108
- def initialize(id:, name:, program_id:, partner_id:, created_at:, status:, email: nil, image: nil, country: nil, paypal_email: nil, stripe_connect_id: nil, payouts_enabled_at: nil, tenant_id: nil, links: nil, description: nil, group_id: nil, total_commissions: 0.0, click_reward_id: nil, lead_reward_id: nil, sale_reward_id: nil, discount_id: nil, application_id: nil, banned_at: nil, banned_reason: nil, clicks: 0.0, leads: 0.0, conversions: 0.0, sales: 0.0, sale_amount: 0.0, net_revenue: 0.0, website: nil, website_txt_record: nil, website_verified_at: nil, youtube: nil, youtube_verified_at: nil, youtube_subscriber_count: nil, youtube_view_count: nil, twitter: nil, twitter_verified_at: nil, linkedin: nil, linkedin_verified_at: nil, instagram: nil, instagram_verified_at: nil, tiktok: nil, tiktok_verified_at: nil)
91
+ sig { params(id: ::String, name: ::String, program_id: ::String, partner_id: ::String, created_at: ::String, status: Models::Operations::ListPartnersStatus, company_name: T.nilable(::String), email: T.nilable(::String), image: T.nilable(::String), country: T.nilable(::String), paypal_email: T.nilable(::String), stripe_connect_id: T.nilable(::String), payouts_enabled_at: T.nilable(::String), tenant_id: T.nilable(::String), links: T.nilable(T::Array[Models::Operations::ListPartnersLink]), description: T.nilable(::String), group_id: T.nilable(::String), total_commissions: T.nilable(::Float), click_reward_id: T.nilable(::String), lead_reward_id: T.nilable(::String), sale_reward_id: T.nilable(::String), discount_id: T.nilable(::String), application_id: T.nilable(::String), banned_at: T.nilable(::String), banned_reason: T.nilable(Models::Operations::ListPartnersBannedReason), clicks: T.nilable(::Float), leads: T.nilable(::Float), conversions: T.nilable(::Float), sales: T.nilable(::Float), sale_amount: T.nilable(::Float), net_revenue: T.nilable(::Float), website: T.nilable(::String), youtube: T.nilable(::String), twitter: T.nilable(::String), linkedin: T.nilable(::String), instagram: T.nilable(::String), tiktok: T.nilable(::String)).void }
92
+ def initialize(id:, name:, program_id:, partner_id:, created_at:, status:, company_name: nil, email: nil, image: nil, country: nil, paypal_email: nil, stripe_connect_id: nil, payouts_enabled_at: nil, tenant_id: nil, links: nil, description: nil, group_id: nil, total_commissions: 0.0, click_reward_id: nil, lead_reward_id: nil, sale_reward_id: nil, discount_id: nil, application_id: nil, banned_at: nil, banned_reason: nil, clicks: 0.0, leads: 0.0, conversions: 0.0, sales: 0.0, sale_amount: 0.0, net_revenue: 0.0, website: nil, youtube: nil, twitter: nil, linkedin: nil, instagram: nil, tiktok: nil)
109
93
  @id = id
110
94
  @name = name
111
95
  @program_id = program_id
112
96
  @partner_id = partner_id
113
97
  @created_at = created_at
114
98
  @status = status
99
+ @company_name = company_name
115
100
  @email = email
116
101
  @image = image
117
102
  @country = country
@@ -137,20 +122,11 @@ module OpenApiSDK
137
122
  @sale_amount = sale_amount
138
123
  @net_revenue = net_revenue
139
124
  @website = website
140
- @website_txt_record = website_txt_record
141
- @website_verified_at = website_verified_at
142
125
  @youtube = youtube
143
- @youtube_verified_at = youtube_verified_at
144
- @youtube_subscriber_count = youtube_subscriber_count
145
- @youtube_view_count = youtube_view_count
146
126
  @twitter = twitter
147
- @twitter_verified_at = twitter_verified_at
148
127
  @linkedin = linkedin
149
- @linkedin_verified_at = linkedin_verified_at
150
128
  @instagram = instagram
151
- @instagram_verified_at = instagram_verified_at
152
129
  @tiktok = tiktok
153
- @tiktok_verified_at = tiktok_verified_at
154
130
  end
155
131
 
156
132
  sig { params(other: T.untyped).returns(T::Boolean) }
@@ -162,6 +138,7 @@ module OpenApiSDK
162
138
  return false unless @partner_id == other.partner_id
163
139
  return false unless @created_at == other.created_at
164
140
  return false unless @status == other.status
141
+ return false unless @company_name == other.company_name
165
142
  return false unless @email == other.email
166
143
  return false unless @image == other.image
167
144
  return false unless @country == other.country
@@ -187,20 +164,11 @@ module OpenApiSDK
187
164
  return false unless @sale_amount == other.sale_amount
188
165
  return false unless @net_revenue == other.net_revenue
189
166
  return false unless @website == other.website
190
- return false unless @website_txt_record == other.website_txt_record
191
- return false unless @website_verified_at == other.website_verified_at
192
167
  return false unless @youtube == other.youtube
193
- return false unless @youtube_verified_at == other.youtube_verified_at
194
- return false unless @youtube_subscriber_count == other.youtube_subscriber_count
195
- return false unless @youtube_view_count == other.youtube_view_count
196
168
  return false unless @twitter == other.twitter
197
- return false unless @twitter_verified_at == other.twitter_verified_at
198
169
  return false unless @linkedin == other.linkedin
199
- return false unless @linkedin_verified_at == other.linkedin_verified_at
200
170
  return false unless @instagram == other.instagram
201
- return false unless @instagram_verified_at == other.instagram_verified_at
202
171
  return false unless @tiktok == other.tiktok
203
- return false unless @tiktok_verified_at == other.tiktok_verified_at
204
172
  true
205
173
  end
206
174
  end
@@ -20,6 +20,8 @@ class OpenApiSDK::Models::Operations::ListPartnersResponseBody
20
20
  def created_at=(str_); end
21
21
  def status(); end
22
22
  def status=(str_); end
23
+ def company_name(); end
24
+ def company_name=(str_); end
23
25
  def email(); end
24
26
  def email=(str_); end
25
27
  def image(); end
@@ -70,32 +72,14 @@ class OpenApiSDK::Models::Operations::ListPartnersResponseBody
70
72
  def net_revenue=(str_); end
71
73
  def website(); end
72
74
  def website=(str_); end
73
- def website_txt_record(); end
74
- def website_txt_record=(str_); end
75
- def website_verified_at(); end
76
- def website_verified_at=(str_); end
77
75
  def youtube(); end
78
76
  def youtube=(str_); end
79
- def youtube_verified_at(); end
80
- def youtube_verified_at=(str_); end
81
- def youtube_subscriber_count(); end
82
- def youtube_subscriber_count=(str_); end
83
- def youtube_view_count(); end
84
- def youtube_view_count=(str_); end
85
77
  def twitter(); end
86
78
  def twitter=(str_); end
87
- def twitter_verified_at(); end
88
- def twitter_verified_at=(str_); end
89
79
  def linkedin(); end
90
80
  def linkedin=(str_); end
91
- def linkedin_verified_at(); end
92
- def linkedin_verified_at=(str_); end
93
81
  def instagram(); end
94
82
  def instagram=(str_); end
95
- def instagram_verified_at(); end
96
- def instagram_verified_at=(str_); end
97
83
  def tiktok(); end
98
84
  def tiktok=(str_); end
99
- def tiktok_verified_at(); end
100
- def tiktok_verified_at=(str_); end
101
85
  end
@@ -87,9 +87,11 @@ module OpenApiSDK
87
87
  field :utm_term, Crystalline::Nilable.new(::String), { 'query_param': { 'field_name': 'utm_term', 'style': 'form', 'explode': true } }
88
88
  # The UTM content of the short link.
89
89
  field :utm_content, Crystalline::Nilable.new(::String), { 'query_param': { 'field_name': 'utm_content', 'style': 'form', 'explode': true } }
90
+ # The ref of the short link.
91
+ field :ref, Crystalline::Nilable.new(::String), { 'query_param': { 'field_name': 'ref', 'style': 'form', 'explode': true } }
90
92
 
91
- sig { params(domain: T.nilable(::String), key: T.nilable(::String), link_id: T.nilable(::String), external_id: T.nilable(::String), tenant_id: T.nilable(::String), program_id: T.nilable(::String), partner_id: T.nilable(::String), customer_id: T.nilable(::String), interval: T.nilable(Models::Operations::Interval), start: T.nilable(::String), end_: T.nilable(::String), country: T.nilable(::String), city: T.nilable(::String), region: T.nilable(::String), continent: T.nilable(Models::Shared::ContinentCode), device: T.nilable(::String), browser: T.nilable(::String), os: T.nilable(::String), trigger: T.nilable(Models::Operations::Trigger), referer: T.nilable(::String), referer_url: T.nilable(::String), url: T.nilable(::String), tag_ids: T.nilable(T.any(::String, T::Array[::String])), folder_id: T.nilable(::String), root: T.nilable(T::Boolean), sale_type: T.nilable(Models::Operations::SaleType), query: T.nilable(::String), tag_id: T.nilable(::String), qr: T.nilable(T::Boolean), event: T.nilable(Models::Operations::Event), group_by: T.nilable(Models::Operations::QueryParamGroupBy), timezone: T.nilable(::String), utm_source: T.nilable(::String), utm_medium: T.nilable(::String), utm_campaign: T.nilable(::String), utm_term: T.nilable(::String), utm_content: T.nilable(::String)).void }
92
- def initialize(domain: nil, key: nil, link_id: nil, external_id: nil, tenant_id: nil, program_id: nil, partner_id: nil, customer_id: nil, interval: nil, start: nil, end_: nil, country: nil, city: nil, region: nil, continent: nil, device: nil, browser: nil, os: nil, trigger: nil, referer: nil, referer_url: nil, url: nil, tag_ids: nil, folder_id: nil, root: nil, sale_type: nil, query: nil, tag_id: nil, qr: nil, event: Models::Operations::Event::CLICKS, group_by: Models::Operations::QueryParamGroupBy::COUNT, timezone: 'UTC', utm_source: nil, utm_medium: nil, utm_campaign: nil, utm_term: nil, utm_content: nil)
93
+ sig { params(domain: T.nilable(::String), key: T.nilable(::String), link_id: T.nilable(::String), external_id: T.nilable(::String), tenant_id: T.nilable(::String), program_id: T.nilable(::String), partner_id: T.nilable(::String), customer_id: T.nilable(::String), interval: T.nilable(Models::Operations::Interval), start: T.nilable(::String), end_: T.nilable(::String), country: T.nilable(::String), city: T.nilable(::String), region: T.nilable(::String), continent: T.nilable(Models::Shared::ContinentCode), device: T.nilable(::String), browser: T.nilable(::String), os: T.nilable(::String), trigger: T.nilable(Models::Operations::Trigger), referer: T.nilable(::String), referer_url: T.nilable(::String), url: T.nilable(::String), tag_ids: T.nilable(T.any(::String, T::Array[::String])), folder_id: T.nilable(::String), root: T.nilable(T::Boolean), sale_type: T.nilable(Models::Operations::SaleType), query: T.nilable(::String), tag_id: T.nilable(::String), qr: T.nilable(T::Boolean), event: T.nilable(Models::Operations::Event), group_by: T.nilable(Models::Operations::QueryParamGroupBy), timezone: T.nilable(::String), utm_source: T.nilable(::String), utm_medium: T.nilable(::String), utm_campaign: T.nilable(::String), utm_term: T.nilable(::String), utm_content: T.nilable(::String), ref: T.nilable(::String)).void }
94
+ def initialize(domain: nil, key: nil, link_id: nil, external_id: nil, tenant_id: nil, program_id: nil, partner_id: nil, customer_id: nil, interval: nil, start: nil, end_: nil, country: nil, city: nil, region: nil, continent: nil, device: nil, browser: nil, os: nil, trigger: nil, referer: nil, referer_url: nil, url: nil, tag_ids: nil, folder_id: nil, root: nil, sale_type: nil, query: nil, tag_id: nil, qr: nil, event: Models::Operations::Event::CLICKS, group_by: Models::Operations::QueryParamGroupBy::COUNT, timezone: 'UTC', utm_source: nil, utm_medium: nil, utm_campaign: nil, utm_term: nil, utm_content: nil, ref: nil)
93
95
  @domain = domain
94
96
  @key = key
95
97
  @link_id = link_id
@@ -127,6 +129,7 @@ module OpenApiSDK
127
129
  @utm_campaign = utm_campaign
128
130
  @utm_term = utm_term
129
131
  @utm_content = utm_content
132
+ @ref = ref
130
133
  end
131
134
 
132
135
  sig { params(other: T.untyped).returns(T::Boolean) }
@@ -169,6 +172,7 @@ module OpenApiSDK
169
172
  return false unless @utm_campaign == other.utm_campaign
170
173
  return false unless @utm_term == other.utm_term
171
174
  return false unless @utm_content == other.utm_content
175
+ return false unless @ref == other.ref
172
176
  true
173
177
  end
174
178
  end
@@ -82,4 +82,6 @@ class OpenApiSDK::Models::Operations::RetrieveAnalyticsRequest
82
82
  def utm_term=(str_); end
83
83
  def utm_content(); end
84
84
  def utm_content=(str_); end
85
+ def ref(); end
86
+ def ref=(str_); end
85
87
  end
@@ -0,0 +1,65 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module OpenApiSDK
8
+ module Models
9
+ module Operations
10
+
11
+
12
+ class TrackLeadLink
13
+ extend T::Sig
14
+ include Crystalline::MetadataFields
15
+
16
+ # The unique ID of the short link.
17
+ field :id, ::String, { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('id'), required: true } }
18
+ # The domain of the short link. If not provided, the primary domain for the workspace will be used (or `dub.sh` if the workspace has no domains).
19
+ field :domain, ::String, { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('domain'), required: true } }
20
+ # The short link slug. If not provided, a random 7-character slug will be generated.
21
+ field :key, ::String, { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('key'), required: true } }
22
+ # The full URL of the short link, including the https protocol (e.g. `https://dub.sh/try`).
23
+ field :short_link, ::String, { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('shortLink'), required: true } }
24
+ # The destination URL of the short link.
25
+ field :url, ::String, { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('url'), required: true } }
26
+ # The ID of the partner the short link is associated with.
27
+ field :partner_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('partnerId'), required: true } }
28
+ # The ID of the program the short link is associated with.
29
+ field :program_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('programId'), required: true } }
30
+ # The ID of the tenant that created the link inside your system. If set, it can be used to fetch all links for a tenant.
31
+ field :tenant_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('tenantId'), required: true } }
32
+ # The ID of the link in your database. If set, it can be used to identify the link in future API requests (must be prefixed with 'ext_' when passed as a query parameter). This key is unique across your workspace.
33
+ field :external_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('externalId'), required: true } }
34
+
35
+ sig { params(id: ::String, domain: ::String, key: ::String, short_link: ::String, url: ::String, partner_id: T.nilable(::String), program_id: T.nilable(::String), tenant_id: T.nilable(::String), external_id: T.nilable(::String)).void }
36
+ def initialize(id:, domain:, key:, short_link:, url:, partner_id: nil, program_id: nil, tenant_id: nil, external_id: nil)
37
+ @id = id
38
+ @domain = domain
39
+ @key = key
40
+ @short_link = short_link
41
+ @url = url
42
+ @partner_id = partner_id
43
+ @program_id = program_id
44
+ @tenant_id = tenant_id
45
+ @external_id = external_id
46
+ end
47
+
48
+ sig { params(other: T.untyped).returns(T::Boolean) }
49
+ def ==(other)
50
+ return false unless other.is_a? self.class
51
+ return false unless @id == other.id
52
+ return false unless @domain == other.domain
53
+ return false unless @key == other.key
54
+ return false unless @short_link == other.short_link
55
+ return false unless @url == other.url
56
+ return false unless @partner_id == other.partner_id
57
+ return false unless @program_id == other.program_id
58
+ return false unless @tenant_id == other.tenant_id
59
+ return false unless @external_id == other.external_id
60
+ true
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,29 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class OpenApiSDK::Models::Operations::TrackLeadLink
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class OpenApiSDK::Models::Operations::TrackLeadLink
11
+ def id(); end
12
+ def id=(str_); end
13
+ def domain(); end
14
+ def domain=(str_); end
15
+ def key(); end
16
+ def key=(str_); end
17
+ def short_link(); end
18
+ def short_link=(str_); end
19
+ def url(); end
20
+ def url=(str_); end
21
+ def partner_id(); end
22
+ def partner_id=(str_); end
23
+ def program_id(); end
24
+ def program_id=(str_); end
25
+ def tenant_id(); end
26
+ def tenant_id=(str_); end
27
+ def external_id(); end
28
+ def external_id=(str_); end
29
+ end
@@ -18,10 +18,13 @@ module OpenApiSDK
18
18
 
19
19
  field :customer, Models::Operations::Customer, { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('customer'), required: true } }
20
20
 
21
- sig { params(click: Models::Operations::Click, customer: Models::Operations::Customer).void }
22
- def initialize(click:, customer:)
21
+ field :link, Crystalline::Nilable.new(Models::Operations::TrackLeadLink), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('link'), required: true } }
22
+
23
+ sig { params(click: Models::Operations::Click, customer: Models::Operations::Customer, link: T.nilable(Models::Operations::TrackLeadLink)).void }
24
+ def initialize(click:, customer:, link: nil)
23
25
  @click = click
24
26
  @customer = customer
27
+ @link = link
25
28
  end
26
29
 
27
30
  sig { params(other: T.untyped).returns(T::Boolean) }
@@ -29,6 +32,7 @@ module OpenApiSDK
29
32
  return false unless other.is_a? self.class
30
33
  return false unless @click == other.click
31
34
  return false unless @customer == other.customer
35
+ return false unless @link == other.link
32
36
  true
33
37
  end
34
38
  end
@@ -12,4 +12,6 @@ class OpenApiSDK::Models::Operations::TrackLeadResponseBody
12
12
  def click=(str_); end
13
13
  def customer(); end
14
14
  def customer=(str_); end
15
+ def link(); end
16
+ def link=(str_); end
15
17
  end
@@ -25,17 +25,17 @@ module OpenApiSDK
25
25
  field :payment_processor, Crystalline::Nilable.new(Models::Operations::PaymentProcessor), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('paymentProcessor'), 'decoder': Utils.enum_from_string(Models::Operations::PaymentProcessor, true) } }
26
26
  # Additional metadata to be stored with the sale event. Max 10,000 characters when stringified.
27
27
  field :metadata, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::Object)), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('metadata') } }
28
- # [For sale tracking without a pre-existing lead event]: The unique ID of the click that the sale conversion event is attributed to. You can read this value from `dub_id` cookie.
28
+ # [For direct sale tracking]: The unique ID of the click that the sale conversion event is attributed to. You can read this value from `dub_id` cookie.
29
29
  field :click_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('clickId') } }
30
30
  # The invoice ID of the sale. Can be used as a idempotency key – only one sale event can be recorded for a given invoice ID.
31
31
  field :invoice_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('invoiceId') } }
32
- # The name of the lead event that occurred before the sale (case-sensitive). This is used to associate the sale event with a particular lead event (instead of the latest lead event for a link-customer combination, which is the default behavior). For sale tracking without a pre-existing lead event, this field can also be used to specify the lead event name.
32
+ # The name of the lead event that occurred before the sale (case-sensitive). This is used to associate the sale event with a particular lead event (instead of the latest lead event for a link-customer combination, which is the default behavior). For direct sale tracking, this field can also be used to specify the lead event name.
33
33
  field :lead_event_name, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('leadEventName') } }
34
- # [For sale tracking without a pre-existing lead event]: The name of the customer. If not passed, a random name will be generated (e.g. “Big Red Caribou”).
34
+ # [For direct sale tracking]: The name of the customer. If not passed, a random name will be generated (e.g. “Big Red Caribou”).
35
35
  field :customer_name, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('customerName') } }
36
- # [For sale tracking without a pre-existing lead event]: The email address of the customer.
36
+ # [For direct sale tracking]: The email address of the customer.
37
37
  field :customer_email, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('customerEmail') } }
38
- # [For sale tracking without a pre-existing lead event]: The avatar URL of the customer.
38
+ # [For direct sale tracking]: The avatar URL of the customer.
39
39
  field :customer_avatar, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('customerAvatar') } }
40
40
 
41
41
  sig { params(customer_external_id: ::String, amount: ::Integer, currency: T.nilable(::String), event_name: T.nilable(::String), payment_processor: T.nilable(Models::Operations::PaymentProcessor), metadata: T.nilable(T::Hash[Symbol, ::Object]), click_id: T.nilable(::String), invoice_id: T.nilable(::String), lead_event_name: T.nilable(::String), customer_name: T.nilable(::String), customer_email: T.nilable(::String), customer_avatar: T.nilable(::String)).void }
@@ -21,13 +21,16 @@ module OpenApiSDK
21
21
  field :name, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('name') } }
22
22
  # Avatar URL of the customer in the client's app.
23
23
  field :avatar, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('avatar') } }
24
+ # The customer's Stripe customer ID. Useful for attribution recurring sale events to the partner who referred the customer.
25
+ field :stripe_customer_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('stripeCustomerId') } }
24
26
 
25
- sig { params(external_id: T.nilable(::String), email: T.nilable(::String), name: T.nilable(::String), avatar: T.nilable(::String)).void }
26
- def initialize(external_id: nil, email: nil, name: nil, avatar: nil)
27
+ sig { params(external_id: T.nilable(::String), email: T.nilable(::String), name: T.nilable(::String), avatar: T.nilable(::String), stripe_customer_id: T.nilable(::String)).void }
28
+ def initialize(external_id: nil, email: nil, name: nil, avatar: nil, stripe_customer_id: nil)
27
29
  @external_id = external_id
28
30
  @email = email
29
31
  @name = name
30
32
  @avatar = avatar
33
+ @stripe_customer_id = stripe_customer_id
31
34
  end
32
35
 
33
36
  sig { params(other: T.untyped).returns(T::Boolean) }
@@ -37,6 +40,7 @@ module OpenApiSDK
37
40
  return false unless @email == other.email
38
41
  return false unless @name == other.name
39
42
  return false unless @avatar == other.avatar
43
+ return false unless @stripe_customer_id == other.stripe_customer_id
40
44
  true
41
45
  end
42
46
  end
@@ -16,4 +16,6 @@ class OpenApiSDK::Models::Operations::UpdateCustomerRequestBody
16
16
  def name=(str_); end
17
17
  def avatar(); end
18
18
  def avatar=(str_); end
19
+ def stripe_customer_id(); end
20
+ def stripe_customer_id=(str_); end
19
21
  end
@@ -156,6 +156,7 @@ module OpenApiSDK
156
156
  autoload :TagIds, 'open_api_sdk/models/operations/tagids.rb'
157
157
  autoload :TagNames, 'open_api_sdk/models/operations/tagnames.rb'
158
158
  autoload :TestVariants, 'open_api_sdk/models/operations/testvariants.rb'
159
+ autoload :TrackLeadLink, 'open_api_sdk/models/operations/tracklead_link.rb'
159
160
  autoload :TrackLeadRequestBody, 'open_api_sdk/models/operations/tracklead_requestbody.rb'
160
161
  autoload :TrackLeadResponseBody, 'open_api_sdk/models/operations/tracklead_responsebody.rb'
161
162
  autoload :TrackSaleCustomer, 'open_api_sdk/models/operations/tracksale_customer.rb'
@@ -30,7 +30,7 @@ module OpenApiSDK
30
30
 
31
31
  field :updated_at, ::String, { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('updatedAt'), required: true } }
32
32
 
33
- field :partner, Models::Shared::Partner, { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('partner'), required: true } }
33
+ field :partner, Models::Shared::CommissionCreatedEventPartner, { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('partner'), required: true } }
34
34
 
35
35
  field :type, Crystalline::Nilable.new(Models::Shared::CommissionCreatedEventType), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('type'), 'decoder': Utils.enum_from_string(Models::Shared::CommissionCreatedEventType, true) } }
36
36
 
@@ -42,7 +42,7 @@ module OpenApiSDK
42
42
 
43
43
  field :customer, Crystalline::Nilable.new(Models::Shared::CommissionCreatedEventCustomer), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('customer') } }
44
44
 
45
- sig { params(id: ::String, amount: ::Float, earnings: ::Float, currency: ::String, status: Models::Shared::CommissionCreatedEventStatus, quantity: ::Float, created_at: ::String, updated_at: ::String, partner: Models::Shared::Partner, type: T.nilable(Models::Shared::CommissionCreatedEventType), invoice_id: T.nilable(::String), description: T.nilable(::String), user_id: T.nilable(::String), customer: T.nilable(Models::Shared::CommissionCreatedEventCustomer)).void }
45
+ sig { params(id: ::String, amount: ::Float, earnings: ::Float, currency: ::String, status: Models::Shared::CommissionCreatedEventStatus, quantity: ::Float, created_at: ::String, updated_at: ::String, partner: Models::Shared::CommissionCreatedEventPartner, type: T.nilable(Models::Shared::CommissionCreatedEventType), invoice_id: T.nilable(::String), description: T.nilable(::String), user_id: T.nilable(::String), customer: T.nilable(Models::Shared::CommissionCreatedEventCustomer)).void }
46
46
  def initialize(id:, amount:, earnings:, currency:, status:, quantity:, created_at:, updated_at:, partner:, type: nil, invoice_id: nil, description: nil, user_id: nil, customer: nil)
47
47
  @id = id
48
48
  @amount = amount
@@ -0,0 +1,77 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module OpenApiSDK
8
+ module Models
9
+ module Shared
10
+
11
+
12
+ class CommissionCreatedEventPartner
13
+ extend T::Sig
14
+ include Crystalline::MetadataFields
15
+
16
+ # The partner's unique ID on Dub.
17
+ field :id, ::String, { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('id'), required: true } }
18
+ # The partner's full legal name.
19
+ field :name, ::String, { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('name'), required: true } }
20
+
21
+ field :total_clicks, ::Float, { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('totalClicks'), required: true } }
22
+
23
+ field :total_leads, ::Float, { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('totalLeads'), required: true } }
24
+
25
+ field :total_conversions, ::Float, { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('totalConversions'), required: true } }
26
+
27
+ field :total_sales, ::Float, { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('totalSales'), required: true } }
28
+
29
+ field :total_sale_amount, ::Float, { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('totalSaleAmount'), required: true } }
30
+
31
+ field :total_commissions, ::Float, { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('totalCommissions'), required: true } }
32
+ # The partner's email address. Should be a unique value across Dub.
33
+ field :email, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('email'), required: true } }
34
+ # The partner's avatar image.
35
+ field :image, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('image'), required: true } }
36
+ # The date when the partner enabled payouts.
37
+ field :payouts_enabled_at, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('payoutsEnabledAt'), required: true } }
38
+ # The partner's country (required for tax purposes).
39
+ field :country, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('country'), required: true } }
40
+
41
+ sig { params(id: ::String, name: ::String, total_clicks: ::Float, total_leads: ::Float, total_conversions: ::Float, total_sales: ::Float, total_sale_amount: ::Float, total_commissions: ::Float, email: T.nilable(::String), image: T.nilable(::String), payouts_enabled_at: T.nilable(::String), country: T.nilable(::String)).void }
42
+ def initialize(id:, name:, total_clicks:, total_leads:, total_conversions:, total_sales:, total_sale_amount:, total_commissions:, email: nil, image: nil, payouts_enabled_at: nil, country: nil)
43
+ @id = id
44
+ @name = name
45
+ @total_clicks = total_clicks
46
+ @total_leads = total_leads
47
+ @total_conversions = total_conversions
48
+ @total_sales = total_sales
49
+ @total_sale_amount = total_sale_amount
50
+ @total_commissions = total_commissions
51
+ @email = email
52
+ @image = image
53
+ @payouts_enabled_at = payouts_enabled_at
54
+ @country = country
55
+ end
56
+
57
+ sig { params(other: T.untyped).returns(T::Boolean) }
58
+ def ==(other)
59
+ return false unless other.is_a? self.class
60
+ return false unless @id == other.id
61
+ return false unless @name == other.name
62
+ return false unless @total_clicks == other.total_clicks
63
+ return false unless @total_leads == other.total_leads
64
+ return false unless @total_conversions == other.total_conversions
65
+ return false unless @total_sales == other.total_sales
66
+ return false unless @total_sale_amount == other.total_sale_amount
67
+ return false unless @total_commissions == other.total_commissions
68
+ return false unless @email == other.email
69
+ return false unless @image == other.image
70
+ return false unless @payouts_enabled_at == other.payouts_enabled_at
71
+ return false unless @country == other.country
72
+ true
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,35 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class OpenApiSDK::Models::Shared::CommissionCreatedEventPartner
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class OpenApiSDK::Models::Shared::CommissionCreatedEventPartner
11
+ def id(); end
12
+ def id=(str_); end
13
+ def name(); end
14
+ def name=(str_); end
15
+ def total_clicks(); end
16
+ def total_clicks=(str_); end
17
+ def total_leads(); end
18
+ def total_leads=(str_); end
19
+ def total_conversions(); end
20
+ def total_conversions=(str_); end
21
+ def total_sales(); end
22
+ def total_sales=(str_); end
23
+ def total_sale_amount(); end
24
+ def total_sale_amount=(str_); end
25
+ def total_commissions(); end
26
+ def total_commissions=(str_); end
27
+ def email(); end
28
+ def email=(str_); end
29
+ def image(); end
30
+ def image=(str_); end
31
+ def payouts_enabled_at(); end
32
+ def payouts_enabled_at=(str_); end
33
+ def country(); end
34
+ def country=(str_); end
35
+ end
@@ -22,12 +22,18 @@ module OpenApiSDK
22
22
 
23
23
  field :link, Models::Shared::LeadCreatedEventLink, { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('link'), required: true } }
24
24
 
25
- sig { params(event_name: ::String, customer: Models::Shared::LeadCreatedEventCustomer, click: Models::Shared::LeadCreatedEventClick, link: Models::Shared::LeadCreatedEventLink).void }
26
- def initialize(event_name:, customer:, click:, link:)
25
+ field :metadata, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::Object)), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('metadata'), required: true } }
26
+
27
+ field :partner, Crystalline::Nilable.new(Models::Shared::Partner), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('partner') } }
28
+
29
+ sig { params(event_name: ::String, customer: Models::Shared::LeadCreatedEventCustomer, click: Models::Shared::LeadCreatedEventClick, link: Models::Shared::LeadCreatedEventLink, metadata: T.nilable(T::Hash[Symbol, ::Object]), partner: T.nilable(Models::Shared::Partner)).void }
30
+ def initialize(event_name:, customer:, click:, link:, metadata: nil, partner: nil)
27
31
  @event_name = event_name
28
32
  @customer = customer
29
33
  @click = click
30
34
  @link = link
35
+ @metadata = metadata
36
+ @partner = partner
31
37
  end
32
38
 
33
39
  sig { params(other: T.untyped).returns(T::Boolean) }
@@ -37,6 +43,8 @@ module OpenApiSDK
37
43
  return false unless @customer == other.customer
38
44
  return false unless @click == other.click
39
45
  return false unless @link == other.link
46
+ return false unless @metadata == other.metadata
47
+ return false unless @partner == other.partner
40
48
  true
41
49
  end
42
50
  end
@@ -16,4 +16,8 @@ class OpenApiSDK::Models::Shared::LeadCreatedEventData
16
16
  def click=(str_); end
17
17
  def link(); end
18
18
  def link=(str_); end
19
+ def metadata(); end
20
+ def metadata=(str_); end
21
+ def partner(); end
22
+ def partner=(str_); end
19
23
  end