dub 0.10.5 → 0.12.0

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 (110) hide show
  1. checksums.yaml +4 -4
  2. data/lib/crystalline/module.rb +4 -0
  3. data/lib/crystalline/utils.rb +13 -0
  4. data/lib/open_api_sdk/analytics.rb +1 -1
  5. data/lib/open_api_sdk/commissions.rb +2 -2
  6. data/lib/open_api_sdk/customers.rb +4 -241
  7. data/lib/open_api_sdk/domains.rb +6 -6
  8. data/lib/open_api_sdk/embed_tokens.rb +1 -1
  9. data/lib/open_api_sdk/events.rb +1 -1
  10. data/lib/open_api_sdk/folders.rb +4 -4
  11. data/lib/open_api_sdk/links.rb +10 -10
  12. data/lib/open_api_sdk/models/operations/banpartner_requestbody.rb +41 -0
  13. data/lib/open_api_sdk/models/operations/banpartner_requestbody.rbi +17 -0
  14. data/lib/open_api_sdk/models/operations/banpartner_responsebody.rb +33 -0
  15. data/lib/open_api_sdk/models/operations/banpartner_responsebody.rbi +13 -0
  16. data/lib/open_api_sdk/models/operations/createfolder_requestbody.rb +6 -2
  17. data/lib/open_api_sdk/models/operations/createfolder_requestbody.rbi +2 -0
  18. data/lib/open_api_sdk/models/operations/createlink_requestbody.rb +1 -1
  19. data/lib/open_api_sdk/models/operations/createpartner_responsebody.rb +52 -24
  20. data/lib/open_api_sdk/models/operations/createpartner_responsebody.rbi +24 -10
  21. data/lib/open_api_sdk/models/operations/listcommissions_partner.rb +6 -2
  22. data/lib/open_api_sdk/models/operations/listcommissions_partner.rbi +2 -0
  23. data/lib/open_api_sdk/models/operations/listcommissions_request.rb +6 -2
  24. data/lib/open_api_sdk/models/operations/listcommissions_request.rbi +2 -0
  25. data/lib/open_api_sdk/models/operations/listevents_request.rb +6 -2
  26. data/lib/open_api_sdk/models/operations/listevents_request.rbi +2 -0
  27. data/lib/open_api_sdk/models/operations/listpartners_queryparam_sortby.rb +11 -6
  28. data/lib/open_api_sdk/models/operations/listpartners_request.rb +3 -7
  29. data/lib/open_api_sdk/models/operations/listpartners_request.rbi +0 -2
  30. data/lib/open_api_sdk/models/operations/listpartners_responsebody.rb +52 -24
  31. data/lib/open_api_sdk/models/operations/listpartners_responsebody.rbi +24 -10
  32. data/lib/open_api_sdk/models/operations/queryparam_groupby.rb +6 -1
  33. data/lib/open_api_sdk/models/operations/reason.rb +26 -0
  34. data/lib/open_api_sdk/models/operations/reason.rbi +11 -0
  35. data/lib/open_api_sdk/models/operations/requestbody.rb +1 -1
  36. data/lib/open_api_sdk/models/operations/retrieveanalytics_request.rb +6 -2
  37. data/lib/open_api_sdk/models/operations/retrieveanalytics_request.rbi +2 -0
  38. data/lib/open_api_sdk/models/operations/retrievelinks_request.rb +2 -2
  39. data/lib/open_api_sdk/models/operations/retrievepartneranalytics_request.rb +10 -10
  40. data/lib/open_api_sdk/models/operations/retrievepartneranalytics_request.rbi +4 -4
  41. data/lib/open_api_sdk/models/operations/tracklead_requestbody.rb +1 -1
  42. data/lib/open_api_sdk/models/operations/updatecommission_partner.rb +6 -2
  43. data/lib/open_api_sdk/models/operations/updatecommission_partner.rbi +2 -0
  44. data/lib/open_api_sdk/models/operations/updatefolder_requestbody.rb +6 -2
  45. data/lib/open_api_sdk/models/operations/updatefolder_requestbody.rbi +2 -0
  46. data/lib/open_api_sdk/models/operations/updatelink_requestbody.rb +1 -1
  47. data/lib/open_api_sdk/models/operations/upsertlink_requestbody.rb +1 -1
  48. data/lib/open_api_sdk/models/operations.rb +3 -6
  49. data/lib/open_api_sdk/models/shared/analyticstopurls.rb +1 -1
  50. data/lib/open_api_sdk/models/shared/applicationformdata.rb +37 -0
  51. data/lib/open_api_sdk/models/shared/applicationformdata.rbi +15 -0
  52. data/lib/open_api_sdk/models/shared/commissioncreatedevent_partner.rb +6 -2
  53. data/lib/open_api_sdk/models/shared/commissioncreatedevent_partner.rbi +2 -0
  54. data/lib/open_api_sdk/models/shared/folderschema.rb +6 -2
  55. data/lib/open_api_sdk/models/shared/folderschema.rbi +2 -0
  56. data/lib/open_api_sdk/models/shared/leadcreatedevent_link.rb +15 -11
  57. data/lib/open_api_sdk/models/shared/leadcreatedevent_link.rbi +6 -4
  58. data/lib/open_api_sdk/models/shared/leadevent_link.rb +15 -11
  59. data/lib/open_api_sdk/models/shared/leadevent_link.rbi +6 -4
  60. data/lib/open_api_sdk/models/shared/link.rb +15 -11
  61. data/lib/open_api_sdk/models/shared/link.rbi +6 -4
  62. data/lib/open_api_sdk/models/shared/linkclickedevent_link.rb +15 -11
  63. data/lib/open_api_sdk/models/shared/linkclickedevent_link.rbi +6 -4
  64. data/lib/open_api_sdk/models/shared/linkschema.rb +7 -3
  65. data/lib/open_api_sdk/models/shared/linkschema.rbi +2 -0
  66. data/lib/open_api_sdk/models/shared/{tagschema.rb → linktagschema.rb} +1 -1
  67. data/lib/open_api_sdk/models/shared/{tagschema.rbi → linktagschema.rbi} +2 -2
  68. data/lib/open_api_sdk/models/shared/linkwebhookevent_link.rb +15 -11
  69. data/lib/open_api_sdk/models/shared/linkwebhookevent_link.rbi +6 -4
  70. data/lib/open_api_sdk/models/shared/partner.rb +6 -2
  71. data/lib/open_api_sdk/models/shared/partner.rbi +2 -0
  72. data/lib/open_api_sdk/models/shared/partnerapplicationsubmittedevent.rb +45 -0
  73. data/lib/open_api_sdk/models/shared/partnerapplicationsubmittedevent.rbi +19 -0
  74. data/lib/open_api_sdk/models/shared/partnerapplicationsubmittedevent_data.rb +45 -0
  75. data/lib/open_api_sdk/models/shared/partnerapplicationsubmittedevent_data.rbi +19 -0
  76. data/lib/open_api_sdk/models/{operations/createcustomer_type.rb → shared/partnerapplicationsubmittedevent_event.rb} +3 -4
  77. data/lib/open_api_sdk/models/shared/partnerapplicationsubmittedevent_event.rbi +11 -0
  78. data/lib/open_api_sdk/models/shared/partnerapplicationsubmittedevent_partner.rb +89 -0
  79. data/lib/open_api_sdk/models/shared/partnerapplicationsubmittedevent_partner.rbi +41 -0
  80. data/lib/open_api_sdk/models/shared/partnerapplicationsubmittedevent_status.rb +28 -0
  81. data/lib/open_api_sdk/models/shared/partnerapplicationsubmittedevent_status.rbi +11 -0
  82. data/lib/open_api_sdk/models/shared/partnerenrolledevent_data.rb +52 -24
  83. data/lib/open_api_sdk/models/shared/partnerenrolledevent_data.rbi +24 -10
  84. data/lib/open_api_sdk/models/shared/salecreatedevent_link.rb +15 -11
  85. data/lib/open_api_sdk/models/shared/salecreatedevent_link.rbi +6 -4
  86. data/lib/open_api_sdk/models/shared/salecreatedevent_partner.rb +6 -2
  87. data/lib/open_api_sdk/models/shared/salecreatedevent_partner.rbi +2 -0
  88. data/lib/open_api_sdk/models/shared/saleevent_link.rb +15 -11
  89. data/lib/open_api_sdk/models/shared/saleevent_link.rbi +6 -4
  90. data/lib/open_api_sdk/models/shared/workspaceschema.rb +10 -2
  91. data/lib/open_api_sdk/models/shared/workspaceschema.rbi +4 -0
  92. data/lib/open_api_sdk/models/shared.rb +7 -1
  93. data/lib/open_api_sdk/partners.rb +241 -6
  94. data/lib/open_api_sdk/qr_codes.rb +1 -1
  95. data/lib/open_api_sdk/sdkconfiguration.rb +3 -3
  96. data/lib/open_api_sdk/tags.rb +10 -10
  97. data/lib/open_api_sdk/track.rb +2 -2
  98. data/lib/open_api_sdk/workspaces.rb +2 -2
  99. metadata +22 -16
  100. data/lib/open_api_sdk/models/operations/createcustomer_discount.rb +0 -61
  101. data/lib/open_api_sdk/models/operations/createcustomer_discount.rbi +0 -27
  102. data/lib/open_api_sdk/models/operations/createcustomer_link.rb +0 -53
  103. data/lib/open_api_sdk/models/operations/createcustomer_link.rbi +0 -23
  104. data/lib/open_api_sdk/models/operations/createcustomer_partner.rb +0 -45
  105. data/lib/open_api_sdk/models/operations/createcustomer_partner.rbi +0 -19
  106. data/lib/open_api_sdk/models/operations/createcustomer_requestbody.rb +0 -49
  107. data/lib/open_api_sdk/models/operations/createcustomer_requestbody.rbi +0 -21
  108. data/lib/open_api_sdk/models/operations/createcustomer_responsebody.rb +0 -81
  109. data/lib/open_api_sdk/models/operations/createcustomer_responsebody.rbi +0 -37
  110. data/lib/open_api_sdk/models/operations/createcustomer_type.rbi +0 -11
@@ -15,12 +15,15 @@ module OpenApiSDK
15
15
 
16
16
  # The name of the folder.
17
17
  field :name, ::String, { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('name'), required: true } }
18
+ # The description of the folder.
19
+ field :description, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('description') } }
18
20
  # The access level of the folder within the workspace.
19
21
  field :access_level, Crystalline::Nilable.new(Models::Operations::AccessLevel), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('accessLevel'), 'decoder': Utils.enum_from_string(Models::Operations::AccessLevel, true) } }
20
22
 
21
- sig { params(name: ::String, access_level: T.nilable(Models::Operations::AccessLevel)).void }
22
- def initialize(name:, access_level: nil)
23
+ sig { params(name: ::String, description: T.nilable(::String), access_level: T.nilable(Models::Operations::AccessLevel)).void }
24
+ def initialize(name:, description: nil, access_level: nil)
23
25
  @name = name
26
+ @description = description
24
27
  @access_level = access_level
25
28
  end
26
29
 
@@ -28,6 +31,7 @@ module OpenApiSDK
28
31
  def ==(other)
29
32
  return false unless other.is_a? self.class
30
33
  return false unless @name == other.name
34
+ return false unless @description == other.description
31
35
  return false unless @access_level == other.access_level
32
36
  true
33
37
  end
@@ -10,6 +10,8 @@ end
10
10
  class OpenApiSDK::Models::Operations::CreateFolderRequestBody
11
11
  def name(); end
12
12
  def name=(str_); end
13
+ def description(); end
14
+ def description=(str_); end
13
15
  def access_level(); end
14
16
  def access_level=(str_); end
15
17
  end
@@ -15,7 +15,7 @@ module OpenApiSDK
15
15
 
16
16
  # The destination URL of the short link.
17
17
  field :url, ::String, { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('url'), 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).
18
+ # The domain of the short link (without protocol). If not provided, the primary domain for the workspace will be used (or `dub.sh` if the workspace has no domains).
19
19
  field :domain, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('domain') } }
20
20
  # The short link slug. If not provided, a random 7-character slug will be generated.
21
21
  field :key, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('key') } }
@@ -39,6 +39,8 @@ module OpenApiSDK
39
39
  field :stripe_connect_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('stripeConnectId'), required: true } }
40
40
  # The date when the partner enabled payouts.
41
41
  field :payouts_enabled_at, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('payoutsEnabledAt'), required: true } }
42
+ # The date when the partner received the trusted badge in the partner network.
43
+ field :trusted_at, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('trustedAt'), required: true } }
42
44
  # The partner's unique ID within your database. Can be useful for associating the partner with a user in your database and retrieving/update their data in the future.
43
45
  field :tenant_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('tenantId'), required: true } }
44
46
  # The partner's referral links in this program.
@@ -47,7 +49,7 @@ module OpenApiSDK
47
49
  field :description, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('description') } }
48
50
  # The partner's group ID on Dub.
49
51
  field :group_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('groupId') } }
50
- # The total commissions paid to the partner for their referrals. Defaults to 0 if `includeExpandedFields` is false.
52
+ # The total commissions paid to the partner for their referrals
51
53
  field :total_commissions, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('totalCommissions') } }
52
54
 
53
55
  field :click_reward_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('clickRewardId') } }
@@ -63,18 +65,30 @@ module OpenApiSDK
63
65
  field :banned_at, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('bannedAt') } }
64
66
  # If the partner was banned from the program, this is the reason for the ban.
65
67
  field :banned_reason, Crystalline::Nilable.new(Models::Operations::BannedReason), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('bannedReason'), 'decoder': Utils.enum_from_string(Models::Operations::BannedReason, true) } }
66
- # The total number of clicks on the partner's links. Defaults to 0 if `includeExpandedFields` is false.
67
- field :clicks, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('clicks') } }
68
- # The total number of leads generated by the partner's links. Defaults to 0 if `includeExpandedFields` is false.
69
- field :leads, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('leads') } }
70
- # The total number of leads that converted to paying customers. Defaults to 0 if `includeExpandedFields` is false.
71
- field :conversions, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('conversions') } }
72
- # The total number of sales generated by the partner's links (includes recurring sales). Defaults to 0 if `includeExpandedFields` is false.
73
- field :sales, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('sales') } }
74
- # The total amount of sales (in cents) generated by the partner's links. Defaults to 0 if `includeExpandedFields` is false.
75
- field :sale_amount, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('saleAmount') } }
76
- # The total net revenue generated by the partner. Defaults to 0 if `includeExpandedFields` is false.
68
+ # The total number of clicks on the partner's links
69
+ field :total_clicks, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('totalClicks') } }
70
+ # The total number of leads generated by the partner's links
71
+ field :total_leads, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('totalLeads') } }
72
+ # The total number of leads that converted to paying customers
73
+ field :total_conversions, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('totalConversions') } }
74
+ # The total number of sales generated by the partner's links (includes recurring sales)
75
+ field :total_sales, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('totalSales') } }
76
+ # Total revenue generated by the partner's links
77
+ field :total_sale_amount, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('totalSaleAmount') } }
78
+ # Net revenue after commissions (`Total Revenue - Total Commissions`)
77
79
  field :net_revenue, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('netRevenue') } }
80
+ # Earnings Per Click (EPC) (`Total Revenue ÷ Total Clicks`)
81
+ field :earnings_per_click, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('earningsPerClick') } }
82
+ # Average lifetime value for each paying customer (`Total Revenue ÷ Total Conversions`)
83
+ field :average_lifetime_value, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('averageLifetimeValue') } }
84
+ # Percentage of clicks that become leads (`Total Leads ÷ Total Clicks`)
85
+ field :click_to_lead_rate, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('clickToLeadRate') } }
86
+ # Percentage of clicks that convert to paying customers (`Total Conversions ÷ Total Clicks`)
87
+ field :click_to_conversion_rate, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('clickToConversionRate') } }
88
+ # Percentage of leads that convert to paying customers (`Total Conversions ÷ Total Leads`)
89
+ field :lead_to_conversion_rate, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('leadToConversionRate') } }
90
+ # Return On Ad Spend (ROAS) (`Total Revenue ÷ Total Commissions`)
91
+ field :return_on_ad_spend, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('returnOnAdSpend') } }
78
92
  # The partner's website URL (including the https protocol).
79
93
  field :website, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('website') } }
80
94
  # The partner's YouTube channel username (e.g. `johndoe`).
@@ -88,8 +102,8 @@ module OpenApiSDK
88
102
  # The partner's TikTok username (e.g. `johndoe`).
89
103
  field :tiktok, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('tiktok') } }
90
104
 
91
- sig { params(id: ::String, name: ::String, program_id: ::String, partner_id: ::String, created_at: ::String, status: Models::Operations::CreatePartnerStatus, 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::CreatePartnerLink]), 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::BannedReason), 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)
105
+ sig { params(id: ::String, name: ::String, program_id: ::String, partner_id: ::String, created_at: ::String, status: Models::Operations::CreatePartnerStatus, 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), trusted_at: T.nilable(::String), tenant_id: T.nilable(::String), links: T.nilable(T::Array[Models::Operations::CreatePartnerLink]), 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::BannedReason), total_clicks: T.nilable(::Float), total_leads: T.nilable(::Float), total_conversions: T.nilable(::Float), total_sales: T.nilable(::Float), total_sale_amount: T.nilable(::Float), net_revenue: T.nilable(::Float), earnings_per_click: T.nilable(::Float), average_lifetime_value: T.nilable(::Float), click_to_lead_rate: T.nilable(::Float), click_to_conversion_rate: T.nilable(::Float), lead_to_conversion_rate: T.nilable(::Float), return_on_ad_spend: 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 }
106
+ 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, trusted_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, total_clicks: 0.0, total_leads: 0.0, total_conversions: 0.0, total_sales: 0.0, total_sale_amount: 0.0, net_revenue: 0.0, earnings_per_click: nil, average_lifetime_value: nil, click_to_lead_rate: nil, click_to_conversion_rate: nil, lead_to_conversion_rate: nil, return_on_ad_spend: nil, website: nil, youtube: nil, twitter: nil, linkedin: nil, instagram: nil, tiktok: nil)
93
107
  @id = id
94
108
  @name = name
95
109
  @program_id = program_id
@@ -103,6 +117,7 @@ module OpenApiSDK
103
117
  @paypal_email = paypal_email
104
118
  @stripe_connect_id = stripe_connect_id
105
119
  @payouts_enabled_at = payouts_enabled_at
120
+ @trusted_at = trusted_at
106
121
  @tenant_id = tenant_id
107
122
  @links = links
108
123
  @description = description
@@ -115,12 +130,18 @@ module OpenApiSDK
115
130
  @application_id = application_id
116
131
  @banned_at = banned_at
117
132
  @banned_reason = banned_reason
118
- @clicks = clicks
119
- @leads = leads
120
- @conversions = conversions
121
- @sales = sales
122
- @sale_amount = sale_amount
133
+ @total_clicks = total_clicks
134
+ @total_leads = total_leads
135
+ @total_conversions = total_conversions
136
+ @total_sales = total_sales
137
+ @total_sale_amount = total_sale_amount
123
138
  @net_revenue = net_revenue
139
+ @earnings_per_click = earnings_per_click
140
+ @average_lifetime_value = average_lifetime_value
141
+ @click_to_lead_rate = click_to_lead_rate
142
+ @click_to_conversion_rate = click_to_conversion_rate
143
+ @lead_to_conversion_rate = lead_to_conversion_rate
144
+ @return_on_ad_spend = return_on_ad_spend
124
145
  @website = website
125
146
  @youtube = youtube
126
147
  @twitter = twitter
@@ -145,6 +166,7 @@ module OpenApiSDK
145
166
  return false unless @paypal_email == other.paypal_email
146
167
  return false unless @stripe_connect_id == other.stripe_connect_id
147
168
  return false unless @payouts_enabled_at == other.payouts_enabled_at
169
+ return false unless @trusted_at == other.trusted_at
148
170
  return false unless @tenant_id == other.tenant_id
149
171
  return false unless @links == other.links
150
172
  return false unless @description == other.description
@@ -157,12 +179,18 @@ module OpenApiSDK
157
179
  return false unless @application_id == other.application_id
158
180
  return false unless @banned_at == other.banned_at
159
181
  return false unless @banned_reason == other.banned_reason
160
- return false unless @clicks == other.clicks
161
- return false unless @leads == other.leads
162
- return false unless @conversions == other.conversions
163
- return false unless @sales == other.sales
164
- return false unless @sale_amount == other.sale_amount
182
+ return false unless @total_clicks == other.total_clicks
183
+ return false unless @total_leads == other.total_leads
184
+ return false unless @total_conversions == other.total_conversions
185
+ return false unless @total_sales == other.total_sales
186
+ return false unless @total_sale_amount == other.total_sale_amount
165
187
  return false unless @net_revenue == other.net_revenue
188
+ return false unless @earnings_per_click == other.earnings_per_click
189
+ return false unless @average_lifetime_value == other.average_lifetime_value
190
+ return false unless @click_to_lead_rate == other.click_to_lead_rate
191
+ return false unless @click_to_conversion_rate == other.click_to_conversion_rate
192
+ return false unless @lead_to_conversion_rate == other.lead_to_conversion_rate
193
+ return false unless @return_on_ad_spend == other.return_on_ad_spend
166
194
  return false unless @website == other.website
167
195
  return false unless @youtube == other.youtube
168
196
  return false unless @twitter == other.twitter
@@ -34,6 +34,8 @@ class OpenApiSDK::Models::Operations::CreatePartnerResponseBody
34
34
  def stripe_connect_id=(str_); end
35
35
  def payouts_enabled_at(); end
36
36
  def payouts_enabled_at=(str_); end
37
+ def trusted_at(); end
38
+ def trusted_at=(str_); end
37
39
  def tenant_id(); end
38
40
  def tenant_id=(str_); end
39
41
  def links(); end
@@ -58,18 +60,30 @@ class OpenApiSDK::Models::Operations::CreatePartnerResponseBody
58
60
  def banned_at=(str_); end
59
61
  def banned_reason(); end
60
62
  def banned_reason=(str_); end
61
- def clicks(); end
62
- def clicks=(str_); end
63
- def leads(); end
64
- def leads=(str_); end
65
- def conversions(); end
66
- def conversions=(str_); end
67
- def sales(); end
68
- def sales=(str_); end
69
- def sale_amount(); end
70
- def sale_amount=(str_); end
63
+ def total_clicks(); end
64
+ def total_clicks=(str_); end
65
+ def total_leads(); end
66
+ def total_leads=(str_); end
67
+ def total_conversions(); end
68
+ def total_conversions=(str_); end
69
+ def total_sales(); end
70
+ def total_sales=(str_); end
71
+ def total_sale_amount(); end
72
+ def total_sale_amount=(str_); end
71
73
  def net_revenue(); end
72
74
  def net_revenue=(str_); end
75
+ def earnings_per_click(); end
76
+ def earnings_per_click=(str_); end
77
+ def average_lifetime_value(); end
78
+ def average_lifetime_value=(str_); end
79
+ def click_to_lead_rate(); end
80
+ def click_to_lead_rate=(str_); end
81
+ def click_to_conversion_rate(); end
82
+ def click_to_conversion_rate=(str_); end
83
+ def lead_to_conversion_rate(); end
84
+ def lead_to_conversion_rate=(str_); end
85
+ def return_on_ad_spend(); end
86
+ def return_on_ad_spend=(str_); end
73
87
  def website(); end
74
88
  def website=(str_); end
75
89
  def youtube(); end
@@ -25,15 +25,18 @@ module OpenApiSDK
25
25
  field :payouts_enabled_at, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('payoutsEnabledAt'), required: true } }
26
26
  # The partner's country (required for tax purposes).
27
27
  field :country, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('country'), required: true } }
28
+ # The partner's group ID on Dub.
29
+ field :group_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('groupId') } }
28
30
 
29
- sig { params(id: ::String, name: ::String, email: T.nilable(::String), image: T.nilable(::String), payouts_enabled_at: T.nilable(::String), country: T.nilable(::String)).void }
30
- def initialize(id:, name:, email: nil, image: nil, payouts_enabled_at: nil, country: nil)
31
+ sig { params(id: ::String, name: ::String, email: T.nilable(::String), image: T.nilable(::String), payouts_enabled_at: T.nilable(::String), country: T.nilable(::String), group_id: T.nilable(::String)).void }
32
+ def initialize(id:, name:, email: nil, image: nil, payouts_enabled_at: nil, country: nil, group_id: nil)
31
33
  @id = id
32
34
  @name = name
33
35
  @email = email
34
36
  @image = image
35
37
  @payouts_enabled_at = payouts_enabled_at
36
38
  @country = country
39
+ @group_id = group_id
37
40
  end
38
41
 
39
42
  sig { params(other: T.untyped).returns(T::Boolean) }
@@ -45,6 +48,7 @@ module OpenApiSDK
45
48
  return false unless @image == other.image
46
49
  return false unless @payouts_enabled_at == other.payouts_enabled_at
47
50
  return false unless @country == other.country
51
+ return false unless @group_id == other.group_id
48
52
  true
49
53
  end
50
54
  end
@@ -20,4 +20,6 @@ class OpenApiSDK::Models::Operations::ListCommissionsPartner
20
20
  def payouts_enabled_at=(str_); end
21
21
  def country(); end
22
22
  def country=(str_); end
23
+ def group_id(); end
24
+ def group_id=(str_); end
23
25
  end
@@ -33,6 +33,8 @@ module OpenApiSDK
33
33
  field :start, Crystalline::Nilable.new(::String), { 'query_param': { 'field_name': 'start', 'style': 'form', 'explode': true } }
34
34
  # The end date of the date range to filter the commissions by.
35
35
  field :end_, Crystalline::Nilable.new(::String), { 'query_param': { 'field_name': 'end', 'style': 'form', 'explode': true } }
36
+
37
+ field :timezone, Crystalline::Nilable.new(::String), { 'query_param': { 'field_name': 'timezone', 'style': 'form', 'explode': true } }
36
38
  # The field to sort the list of commissions by.
37
39
  field :sort_by, Crystalline::Nilable.new(Models::Operations::ListCommissionsQueryParamSortBy), { 'query_param': { 'field_name': 'sortBy', 'style': 'form', 'explode': true } }
38
40
  # The sort order for the list of commissions.
@@ -44,8 +46,8 @@ module OpenApiSDK
44
46
  # The number of items per page.
45
47
  field :page_size, Crystalline::Nilable.new(::Float), { 'query_param': { 'field_name': 'pageSize', 'style': 'form', 'explode': true } }
46
48
 
47
- sig { params(type: T.nilable(Models::Operations::Type), customer_id: T.nilable(::String), payout_id: T.nilable(::String), partner_id: T.nilable(::String), tenant_id: T.nilable(::String), group_id: T.nilable(::String), invoice_id: T.nilable(::String), status: T.nilable(Models::Operations::QueryParamStatus), start: T.nilable(::String), end_: T.nilable(::String), sort_by: T.nilable(Models::Operations::ListCommissionsQueryParamSortBy), sort_order: T.nilable(Models::Operations::ListCommissionsQueryParamSortOrder), interval: T.nilable(Models::Operations::ListCommissionsQueryParamInterval), page: T.nilable(::Float), page_size: T.nilable(::Float)).void }
48
- def initialize(type: nil, customer_id: nil, payout_id: nil, partner_id: nil, tenant_id: nil, group_id: nil, invoice_id: nil, status: nil, start: nil, end_: nil, sort_by: Models::Operations::ListCommissionsQueryParamSortBy::CREATED_AT, sort_order: Models::Operations::ListCommissionsQueryParamSortOrder::DESC, interval: Models::Operations::ListCommissionsQueryParamInterval::ALL, page: 1.0, page_size: 100.0)
49
+ sig { params(type: T.nilable(Models::Operations::Type), customer_id: T.nilable(::String), payout_id: T.nilable(::String), partner_id: T.nilable(::String), tenant_id: T.nilable(::String), group_id: T.nilable(::String), invoice_id: T.nilable(::String), status: T.nilable(Models::Operations::QueryParamStatus), start: T.nilable(::String), end_: T.nilable(::String), timezone: T.nilable(::String), sort_by: T.nilable(Models::Operations::ListCommissionsQueryParamSortBy), sort_order: T.nilable(Models::Operations::ListCommissionsQueryParamSortOrder), interval: T.nilable(Models::Operations::ListCommissionsQueryParamInterval), page: T.nilable(::Float), page_size: T.nilable(::Float)).void }
50
+ def initialize(type: nil, customer_id: nil, payout_id: nil, partner_id: nil, tenant_id: nil, group_id: nil, invoice_id: nil, status: nil, start: nil, end_: nil, timezone: nil, sort_by: Models::Operations::ListCommissionsQueryParamSortBy::CREATED_AT, sort_order: Models::Operations::ListCommissionsQueryParamSortOrder::DESC, interval: Models::Operations::ListCommissionsQueryParamInterval::ALL, page: 1.0, page_size: 100.0)
49
51
  @type = type
50
52
  @customer_id = customer_id
51
53
  @payout_id = payout_id
@@ -56,6 +58,7 @@ module OpenApiSDK
56
58
  @status = status
57
59
  @start = start
58
60
  @end_ = end_
61
+ @timezone = timezone
59
62
  @sort_by = sort_by
60
63
  @sort_order = sort_order
61
64
  @interval = interval
@@ -76,6 +79,7 @@ module OpenApiSDK
76
79
  return false unless @status == other.status
77
80
  return false unless @start == other.start
78
81
  return false unless @end_ == other.end_
82
+ return false unless @timezone == other.timezone
79
83
  return false unless @sort_by == other.sort_by
80
84
  return false unless @sort_order == other.sort_order
81
85
  return false unless @interval == other.interval
@@ -28,6 +28,8 @@ class OpenApiSDK::Models::Operations::ListCommissionsRequest
28
28
  def start=(str_); end
29
29
  def end_(); end
30
30
  def end_=(str_); end
31
+ def timezone(); end
32
+ def timezone=(str_); end
31
33
  def sort_by(); end
32
34
  def sort_by=(str_); end
33
35
  def sort_order(); end
@@ -61,6 +61,8 @@ module OpenApiSDK
61
61
  field :tag_ids, Crystalline::Nilable.new(Crystalline::Union.new(::String, Crystalline::Array.new(::String))), { 'query_param': { 'field_name': 'tagIds', 'style': 'form', 'explode': true } }
62
62
  # The folder ID to retrieve analytics for. If not provided, return analytics for unsorted links.
63
63
  field :folder_id, Crystalline::Nilable.new(::String), { 'query_param': { 'field_name': 'folderId', 'style': 'form', 'explode': true } }
64
+ # The group ID to retrieve analytics for.
65
+ field :group_id, Crystalline::Nilable.new(::String), { 'query_param': { 'field_name': 'groupId', 'style': 'form', 'explode': true } }
64
66
  # Filter for root domains. If true, filter for domains only. If false, filter for links only. If undefined, return both.
65
67
  field :root, Crystalline::Nilable.new(Crystalline::Boolean.new), { 'query_param': { 'field_name': 'root', 'style': 'form', 'explode': true } }
66
68
  # Filter sales by type: 'new' for first-time purchases, 'recurring' for repeat purchases. If undefined, returns both.
@@ -98,8 +100,8 @@ module OpenApiSDK
98
100
  # DEPRECATED. Use `sortOrder` instead.
99
101
  field :order, Crystalline::Nilable.new(Models::Operations::Order), { 'query_param': { 'field_name': 'order', 'style': 'form', 'explode': true } }
100
102
 
101
- 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::QueryParamInterval), 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::QueryParamTrigger), 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::QueryParamSaleType), query: T.nilable(::String), tag_id: T.nilable(::String), qr: T.nilable(T::Boolean), event: T.nilable(Models::Operations::QueryParamEvent), 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), page: T.nilable(::Float), limit: T.nilable(::Float), sort_order: T.nilable(Models::Operations::QueryParamSortOrder), sort_by: T.nilable(Models::Operations::QueryParamSortBy), order: T.nilable(Models::Operations::Order)).void }
102
- 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::QueryParamEvent::CLICKS, timezone: 'UTC', utm_source: nil, utm_medium: nil, utm_campaign: nil, utm_term: nil, utm_content: nil, ref: nil, page: 1.0, limit: 100.0, sort_order: Models::Operations::QueryParamSortOrder::DESC, sort_by: Models::Operations::QueryParamSortBy::TIMESTAMP, order: Models::Operations::Order::DESC)
103
+ 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::QueryParamInterval), 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::QueryParamTrigger), 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), group_id: T.nilable(::String), root: T.nilable(T::Boolean), sale_type: T.nilable(Models::Operations::QueryParamSaleType), query: T.nilable(::String), tag_id: T.nilable(::String), qr: T.nilable(T::Boolean), event: T.nilable(Models::Operations::QueryParamEvent), 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), page: T.nilable(::Float), limit: T.nilable(::Float), sort_order: T.nilable(Models::Operations::QueryParamSortOrder), sort_by: T.nilable(Models::Operations::QueryParamSortBy), order: T.nilable(Models::Operations::Order)).void }
104
+ 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, group_id: nil, root: nil, sale_type: nil, query: nil, tag_id: nil, qr: nil, event: Models::Operations::QueryParamEvent::CLICKS, timezone: 'UTC', utm_source: nil, utm_medium: nil, utm_campaign: nil, utm_term: nil, utm_content: nil, ref: nil, page: 1.0, limit: 100.0, sort_order: Models::Operations::QueryParamSortOrder::DESC, sort_by: Models::Operations::QueryParamSortBy::TIMESTAMP, order: Models::Operations::Order::DESC)
103
105
  @domain = domain
104
106
  @key = key
105
107
  @link_id = link_id
@@ -124,6 +126,7 @@ module OpenApiSDK
124
126
  @url = url
125
127
  @tag_ids = tag_ids
126
128
  @folder_id = folder_id
129
+ @group_id = group_id
127
130
  @root = root
128
131
  @sale_type = sale_type
129
132
  @query = query
@@ -171,6 +174,7 @@ module OpenApiSDK
171
174
  return false unless @url == other.url
172
175
  return false unless @tag_ids == other.tag_ids
173
176
  return false unless @folder_id == other.folder_id
177
+ return false unless @group_id == other.group_id
174
178
  return false unless @root == other.root
175
179
  return false unless @sale_type == other.sale_type
176
180
  return false unless @query == other.query
@@ -56,6 +56,8 @@ class OpenApiSDK::Models::Operations::ListEventsRequest
56
56
  def tag_ids=(str_); end
57
57
  def folder_id(); end
58
58
  def folder_id=(str_); end
59
+ def group_id(); end
60
+ def group_id=(str_); end
59
61
  def root(); end
60
62
  def root=(str_); end
61
63
  def sale_type(); end
@@ -8,19 +8,24 @@ module OpenApiSDK
8
8
  module Models
9
9
  module Operations
10
10
 
11
- # ListPartnersQueryParamSortBy - The field to sort the partners by. The default is `saleAmount`.
11
+ # ListPartnersQueryParamSortBy - The field to sort the partners by. The default is `totalSaleAmount`.
12
12
  class ListPartnersQueryParamSortBy < T::Enum
13
13
 
14
14
 
15
15
  enums do
16
16
  CREATED_AT = new('createdAt')
17
- CLICKS = new('clicks')
18
- LEADS = new('leads')
19
- CONVERSIONS = new('conversions')
20
- SALES = new('sales')
21
- SALE_AMOUNT = new('saleAmount')
17
+ TOTAL_CLICKS = new('totalClicks')
18
+ TOTAL_LEADS = new('totalLeads')
19
+ TOTAL_CONVERSIONS = new('totalConversions')
20
+ TOTAL_SALE_AMOUNT = new('totalSaleAmount')
22
21
  TOTAL_COMMISSIONS = new('totalCommissions')
23
22
  NET_REVENUE = new('netRevenue')
23
+ EARNINGS_PER_CLICK = new('earningsPerClick')
24
+ AVERAGE_LIFETIME_VALUE = new('averageLifetimeValue')
25
+ CLICK_TO_LEAD_RATE = new('clickToLeadRate')
26
+ CLICK_TO_CONVERSION_RATE = new('clickToConversionRate')
27
+ LEAD_TO_CONVERSION_RATE = new('leadToConversionRate')
28
+ RETURN_ON_AD_SPEND = new('returnOnAdSpend')
24
29
  end
25
30
  end
26
31
  end
@@ -23,9 +23,7 @@ module OpenApiSDK
23
23
  field :tenant_id, Crystalline::Nilable.new(::String), { 'query_param': { 'field_name': 'tenantId', 'style': 'form', 'explode': true } }
24
24
  # A search query to filter partners by ID, name, email, or link.
25
25
  field :search, Crystalline::Nilable.new(::String), { 'query_param': { 'field_name': 'search', 'style': 'form', 'explode': true } }
26
- # Whether to include stats fields on the partner (`clicks`, `leads`, `conversions`, `sales`, `saleAmount`, `commissions`, `netRevenue`). If false, those fields will be returned as 0.
27
- field :include_expanded_fields, Crystalline::Nilable.new(Crystalline::Boolean.new), { 'query_param': { 'field_name': 'includeExpandedFields', 'style': 'form', 'explode': true } }
28
- # The field to sort the partners by. The default is `saleAmount`.
26
+ # The field to sort the partners by. The default is `totalSaleAmount`.
29
27
  field :sort_by, Crystalline::Nilable.new(Models::Operations::ListPartnersQueryParamSortBy), { 'query_param': { 'field_name': 'sortBy', 'style': 'form', 'explode': true } }
30
28
  # The sort order. The default is `desc`.
31
29
  field :sort_order, Crystalline::Nilable.new(Models::Operations::ListPartnersQueryParamSortOrder), { 'query_param': { 'field_name': 'sortOrder', 'style': 'form', 'explode': true } }
@@ -34,14 +32,13 @@ module OpenApiSDK
34
32
  # The number of items per page.
35
33
  field :page_size, Crystalline::Nilable.new(::Float), { 'query_param': { 'field_name': 'pageSize', 'style': 'form', 'explode': true } }
36
34
 
37
- sig { params(status: T.nilable(Models::Operations::ListPartnersQueryParamStatus), country: T.nilable(::String), email: T.nilable(::String), tenant_id: T.nilable(::String), search: T.nilable(::String), include_expanded_fields: T.nilable(T::Boolean), sort_by: T.nilable(Models::Operations::ListPartnersQueryParamSortBy), sort_order: T.nilable(Models::Operations::ListPartnersQueryParamSortOrder), page: T.nilable(::Float), page_size: T.nilable(::Float)).void }
38
- def initialize(status: nil, country: nil, email: nil, tenant_id: nil, search: nil, include_expanded_fields: nil, sort_by: Models::Operations::ListPartnersQueryParamSortBy::SALE_AMOUNT, sort_order: Models::Operations::ListPartnersQueryParamSortOrder::DESC, page: 1.0, page_size: 100.0)
35
+ sig { params(status: T.nilable(Models::Operations::ListPartnersQueryParamStatus), country: T.nilable(::String), email: T.nilable(::String), tenant_id: T.nilable(::String), search: T.nilable(::String), sort_by: T.nilable(Models::Operations::ListPartnersQueryParamSortBy), sort_order: T.nilable(Models::Operations::ListPartnersQueryParamSortOrder), page: T.nilable(::Float), page_size: T.nilable(::Float)).void }
36
+ def initialize(status: nil, country: nil, email: nil, tenant_id: nil, search: nil, sort_by: Models::Operations::ListPartnersQueryParamSortBy::TOTAL_SALE_AMOUNT, sort_order: Models::Operations::ListPartnersQueryParamSortOrder::DESC, page: 1.0, page_size: 100.0)
39
37
  @status = status
40
38
  @country = country
41
39
  @email = email
42
40
  @tenant_id = tenant_id
43
41
  @search = search
44
- @include_expanded_fields = include_expanded_fields
45
42
  @sort_by = sort_by
46
43
  @sort_order = sort_order
47
44
  @page = page
@@ -56,7 +53,6 @@ module OpenApiSDK
56
53
  return false unless @email == other.email
57
54
  return false unless @tenant_id == other.tenant_id
58
55
  return false unless @search == other.search
59
- return false unless @include_expanded_fields == other.include_expanded_fields
60
56
  return false unless @sort_by == other.sort_by
61
57
  return false unless @sort_order == other.sort_order
62
58
  return false unless @page == other.page
@@ -18,8 +18,6 @@ class OpenApiSDK::Models::Operations::ListPartnersRequest
18
18
  def tenant_id=(str_); end
19
19
  def search(); end
20
20
  def search=(str_); end
21
- def include_expanded_fields(); end
22
- def include_expanded_fields=(str_); end
23
21
  def sort_by(); end
24
22
  def sort_by=(str_); end
25
23
  def sort_order(); end
@@ -39,6 +39,8 @@ module OpenApiSDK
39
39
  field :stripe_connect_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('stripeConnectId'), required: true } }
40
40
  # The date when the partner enabled payouts.
41
41
  field :payouts_enabled_at, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('payoutsEnabledAt'), required: true } }
42
+ # The date when the partner received the trusted badge in the partner network.
43
+ field :trusted_at, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('trustedAt'), required: true } }
42
44
  # The partner's unique ID within your database. Can be useful for associating the partner with a user in your database and retrieving/update their data in the future.
43
45
  field :tenant_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('tenantId'), required: true } }
44
46
  # The partner's referral links in this program.
@@ -47,7 +49,7 @@ module OpenApiSDK
47
49
  field :description, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('description') } }
48
50
  # The partner's group ID on Dub.
49
51
  field :group_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('groupId') } }
50
- # The total commissions paid to the partner for their referrals. Defaults to 0 if `includeExpandedFields` is false.
52
+ # The total commissions paid to the partner for their referrals
51
53
  field :total_commissions, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('totalCommissions') } }
52
54
 
53
55
  field :click_reward_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('clickRewardId') } }
@@ -63,18 +65,30 @@ module OpenApiSDK
63
65
  field :banned_at, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('bannedAt') } }
64
66
  # If the partner was banned from the program, this is the reason for the ban.
65
67
  field :banned_reason, Crystalline::Nilable.new(Models::Operations::ListPartnersBannedReason), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('bannedReason'), 'decoder': Utils.enum_from_string(Models::Operations::ListPartnersBannedReason, true) } }
66
- # The total number of clicks on the partner's links. Defaults to 0 if `includeExpandedFields` is false.
67
- field :clicks, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('clicks') } }
68
- # The total number of leads generated by the partner's links. Defaults to 0 if `includeExpandedFields` is false.
69
- field :leads, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('leads') } }
70
- # The total number of leads that converted to paying customers. Defaults to 0 if `includeExpandedFields` is false.
71
- field :conversions, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('conversions') } }
72
- # The total number of sales generated by the partner's links (includes recurring sales). Defaults to 0 if `includeExpandedFields` is false.
73
- field :sales, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('sales') } }
74
- # The total amount of sales (in cents) generated by the partner's links. Defaults to 0 if `includeExpandedFields` is false.
75
- field :sale_amount, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('saleAmount') } }
76
- # The total net revenue generated by the partner. Defaults to 0 if `includeExpandedFields` is false.
68
+ # The total number of clicks on the partner's links
69
+ field :total_clicks, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('totalClicks') } }
70
+ # The total number of leads generated by the partner's links
71
+ field :total_leads, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('totalLeads') } }
72
+ # The total number of leads that converted to paying customers
73
+ field :total_conversions, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('totalConversions') } }
74
+ # The total number of sales generated by the partner's links (includes recurring sales)
75
+ field :total_sales, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('totalSales') } }
76
+ # Total revenue generated by the partner's links
77
+ field :total_sale_amount, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('totalSaleAmount') } }
78
+ # Net revenue after commissions (`Total Revenue - Total Commissions`)
77
79
  field :net_revenue, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('netRevenue') } }
80
+ # Earnings Per Click (EPC) (`Total Revenue ÷ Total Clicks`)
81
+ field :earnings_per_click, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('earningsPerClick') } }
82
+ # Average lifetime value for each paying customer (`Total Revenue ÷ Total Conversions`)
83
+ field :average_lifetime_value, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('averageLifetimeValue') } }
84
+ # Percentage of clicks that become leads (`Total Leads ÷ Total Clicks`)
85
+ field :click_to_lead_rate, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('clickToLeadRate') } }
86
+ # Percentage of clicks that convert to paying customers (`Total Conversions ÷ Total Clicks`)
87
+ field :click_to_conversion_rate, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('clickToConversionRate') } }
88
+ # Percentage of leads that convert to paying customers (`Total Conversions ÷ Total Leads`)
89
+ field :lead_to_conversion_rate, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('leadToConversionRate') } }
90
+ # Return On Ad Spend (ROAS) (`Total Revenue ÷ Total Commissions`)
91
+ field :return_on_ad_spend, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('returnOnAdSpend') } }
78
92
  # The partner's website URL (including the https protocol).
79
93
  field :website, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('website') } }
80
94
  # The partner's YouTube channel username (e.g. `johndoe`).
@@ -88,8 +102,8 @@ module OpenApiSDK
88
102
  # The partner's TikTok username (e.g. `johndoe`).
89
103
  field :tiktok, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('tiktok') } }
90
104
 
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)
105
+ 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), trusted_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), total_clicks: T.nilable(::Float), total_leads: T.nilable(::Float), total_conversions: T.nilable(::Float), total_sales: T.nilable(::Float), total_sale_amount: T.nilable(::Float), net_revenue: T.nilable(::Float), earnings_per_click: T.nilable(::Float), average_lifetime_value: T.nilable(::Float), click_to_lead_rate: T.nilable(::Float), click_to_conversion_rate: T.nilable(::Float), lead_to_conversion_rate: T.nilable(::Float), return_on_ad_spend: 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 }
106
+ 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, trusted_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, total_clicks: 0.0, total_leads: 0.0, total_conversions: 0.0, total_sales: 0.0, total_sale_amount: 0.0, net_revenue: 0.0, earnings_per_click: nil, average_lifetime_value: nil, click_to_lead_rate: nil, click_to_conversion_rate: nil, lead_to_conversion_rate: nil, return_on_ad_spend: nil, website: nil, youtube: nil, twitter: nil, linkedin: nil, instagram: nil, tiktok: nil)
93
107
  @id = id
94
108
  @name = name
95
109
  @program_id = program_id
@@ -103,6 +117,7 @@ module OpenApiSDK
103
117
  @paypal_email = paypal_email
104
118
  @stripe_connect_id = stripe_connect_id
105
119
  @payouts_enabled_at = payouts_enabled_at
120
+ @trusted_at = trusted_at
106
121
  @tenant_id = tenant_id
107
122
  @links = links
108
123
  @description = description
@@ -115,12 +130,18 @@ module OpenApiSDK
115
130
  @application_id = application_id
116
131
  @banned_at = banned_at
117
132
  @banned_reason = banned_reason
118
- @clicks = clicks
119
- @leads = leads
120
- @conversions = conversions
121
- @sales = sales
122
- @sale_amount = sale_amount
133
+ @total_clicks = total_clicks
134
+ @total_leads = total_leads
135
+ @total_conversions = total_conversions
136
+ @total_sales = total_sales
137
+ @total_sale_amount = total_sale_amount
123
138
  @net_revenue = net_revenue
139
+ @earnings_per_click = earnings_per_click
140
+ @average_lifetime_value = average_lifetime_value
141
+ @click_to_lead_rate = click_to_lead_rate
142
+ @click_to_conversion_rate = click_to_conversion_rate
143
+ @lead_to_conversion_rate = lead_to_conversion_rate
144
+ @return_on_ad_spend = return_on_ad_spend
124
145
  @website = website
125
146
  @youtube = youtube
126
147
  @twitter = twitter
@@ -145,6 +166,7 @@ module OpenApiSDK
145
166
  return false unless @paypal_email == other.paypal_email
146
167
  return false unless @stripe_connect_id == other.stripe_connect_id
147
168
  return false unless @payouts_enabled_at == other.payouts_enabled_at
169
+ return false unless @trusted_at == other.trusted_at
148
170
  return false unless @tenant_id == other.tenant_id
149
171
  return false unless @links == other.links
150
172
  return false unless @description == other.description
@@ -157,12 +179,18 @@ module OpenApiSDK
157
179
  return false unless @application_id == other.application_id
158
180
  return false unless @banned_at == other.banned_at
159
181
  return false unless @banned_reason == other.banned_reason
160
- return false unless @clicks == other.clicks
161
- return false unless @leads == other.leads
162
- return false unless @conversions == other.conversions
163
- return false unless @sales == other.sales
164
- return false unless @sale_amount == other.sale_amount
182
+ return false unless @total_clicks == other.total_clicks
183
+ return false unless @total_leads == other.total_leads
184
+ return false unless @total_conversions == other.total_conversions
185
+ return false unless @total_sales == other.total_sales
186
+ return false unless @total_sale_amount == other.total_sale_amount
165
187
  return false unless @net_revenue == other.net_revenue
188
+ return false unless @earnings_per_click == other.earnings_per_click
189
+ return false unless @average_lifetime_value == other.average_lifetime_value
190
+ return false unless @click_to_lead_rate == other.click_to_lead_rate
191
+ return false unless @click_to_conversion_rate == other.click_to_conversion_rate
192
+ return false unless @lead_to_conversion_rate == other.lead_to_conversion_rate
193
+ return false unless @return_on_ad_spend == other.return_on_ad_spend
166
194
  return false unless @website == other.website
167
195
  return false unless @youtube == other.youtube
168
196
  return false unless @twitter == other.twitter