tremendous-python 5.13.0__tar.gz → 5.15.0__tar.gz

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 (269) hide show
  1. {tremendous_python-5.13.0/tremendous_python.egg-info → tremendous_python-5.15.0}/PKG-INFO +1 -1
  2. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/pyproject.toml +1 -1
  3. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/balance_transaction.py +5 -3
  4. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/balance_transaction_order_payment.py +10 -6
  5. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/campaign.py +18 -1
  6. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/campaign_base.py +18 -1
  7. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/connected_organization_organization.py +3 -1
  8. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_campaign_request.py +18 -1
  9. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_connected_organization_member_request.py +9 -3
  10. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_order200_response_order.py +1 -1
  11. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_organization.py +3 -1
  12. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_organization200_response_organization.py +3 -1
  13. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_organization_for_response.py +3 -1
  14. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_organization_properties.py +3 -1
  15. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_organization_request.py +4 -2
  16. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_topup_request.py +1 -1
  17. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/fraud_config_redeemed_rewards_amount.py +1 -1
  18. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/fraud_review.py +3 -3
  19. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/fraud_review_related_rewards.py +8 -4
  20. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/fraud_rule_type.py +1 -1
  21. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/fraud_rules_list_item.py +1 -1
  22. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/get_fraud_review200_response_fraud_review_related_rewards.py +5 -3
  23. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_balance_transactions200_response_transactions_inner.py +5 -3
  24. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_balance_transactions200_response_transactions_inner_order_payment.py +8 -6
  25. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_campaigns200_response_campaigns_inner.py +18 -1
  26. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_connected_organizations200_response_connected_organizations_inner_organization.py +3 -1
  27. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_fraud_rules200_response_fraud_rules_inner.py +1 -1
  28. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_funding_sources200_response_funding_sources_inner_meta.py +14 -6
  29. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_orders200_response_orders_inner.py +1 -1
  30. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_orders200_response_orders_inner_payment.py +9 -7
  31. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_orders200_response_orders_inner_payment_refund.py +7 -5
  32. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_organizations200_response_organizations_inner.py +3 -1
  33. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_rewards200_response_rewards_inner_recipient.py +5 -0
  34. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_topups200_response_topups_inner.py +18 -5
  35. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/order.py +1 -1
  36. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/order_base.py +1 -1
  37. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/order_base_payment.py +11 -7
  38. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/order_with_link.py +1 -1
  39. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/order_without_link.py +1 -1
  40. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/organization.py +3 -1
  41. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/payment_details.py +10 -6
  42. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/payment_details_refund.py +9 -5
  43. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/recipient.py +5 -0
  44. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/refund_details.py +8 -4
  45. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/review_redeemed_rewards_amount.py +1 -1
  46. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/single_reward_order_with_link_order.py +1 -1
  47. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/single_reward_order_without_link_order.py +1 -1
  48. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/topup.py +18 -5
  49. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/topup_create_request.py +1 -1
  50. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/update_campaign.py +18 -1
  51. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/update_campaign_request.py +18 -1
  52. tremendous_python-5.15.0/tremendous/version.py +1 -0
  53. {tremendous_python-5.13.0 → tremendous_python-5.15.0/tremendous_python.egg-info}/PKG-INFO +1 -1
  54. tremendous_python-5.13.0/tremendous/version.py +0 -1
  55. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/LICENSE +0 -0
  56. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/README.md +0 -0
  57. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/setup.cfg +0 -0
  58. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/setup.py +0 -0
  59. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/test/test_campaigns.py +0 -0
  60. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/test/test_funding_sources.py +0 -0
  61. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/test/test_invoices.py +0 -0
  62. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/test/test_members.py +0 -0
  63. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/test/test_orders.py +0 -0
  64. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/test/test_products.py +0 -0
  65. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/__init__.py +0 -0
  66. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/api/__init__.py +0 -0
  67. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/api/tremendous_api.py +0 -0
  68. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/api_client.py +0 -0
  69. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/api_response.py +0 -0
  70. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/configuration.py +0 -0
  71. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/exceptions.py +0 -0
  72. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/__init__.py +0 -0
  73. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/allow_email.py +0 -0
  74. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/allow_email1.py +0 -0
  75. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/allow_ip.py +0 -0
  76. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/allow_ip1.py +0 -0
  77. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/balance_transaction_order.py +0 -0
  78. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/base_order_for_create.py +0 -0
  79. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/channel.py +0 -0
  80. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/connected_organization.py +0 -0
  81. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/connected_organization_member.py +0 -0
  82. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/connected_organization_member_member.py +0 -0
  83. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/connected_organization_member_session.py +0 -0
  84. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_api_key200_response.py +0 -0
  85. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_campaign200_response.py +0 -0
  86. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_campaign201_response.py +0 -0
  87. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_connected_organization200_response.py +0 -0
  88. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_connected_organization_member200_response.py +0 -0
  89. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_connected_organization_member_session200_response.py +0 -0
  90. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_connected_organization_member_session200_response_connected_organization_member_session.py +0 -0
  91. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_connected_organization_member_session_request.py +0 -0
  92. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_connected_organization_request.py +0 -0
  93. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_field.py +0 -0
  94. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_field200_response.py +0 -0
  95. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_field_request.py +0 -0
  96. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_field_request_data.py +0 -0
  97. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_invoice200_response.py +0 -0
  98. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_invoice_request.py +0 -0
  99. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_member.py +0 -0
  100. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_member200_response.py +0 -0
  101. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_member_request.py +0 -0
  102. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_order200_response.py +0 -0
  103. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_order200_response_order_rewards_inner.py +0 -0
  104. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_order200_response_order_rewards_inner_delivery.py +0 -0
  105. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_order201_response.py +0 -0
  106. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_order_request.py +0 -0
  107. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_organization200_response.py +0 -0
  108. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_organization_request_copy_settings.py +0 -0
  109. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_report200_response.py +0 -0
  110. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_report200_response_report.py +0 -0
  111. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_report201_response.py +0 -0
  112. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_report201_response_report.py +0 -0
  113. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_report_request.py +0 -0
  114. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_report_request_filters.py +0 -0
  115. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_report_request_filters_digital_rewards.py +0 -0
  116. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_report_request_filters_digital_rewards_amount.py +0 -0
  117. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_report_request_filters_digital_rewards_created_at.py +0 -0
  118. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_topup200_response.py +0 -0
  119. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_webhook200_response.py +0 -0
  120. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/create_webhook_request.py +0 -0
  121. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/currency_codes.py +0 -0
  122. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/custom_field.py +0 -0
  123. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/delete_fraud_rule200_response.py +0 -0
  124. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/delivery_details.py +0 -0
  125. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/delivery_details_with_link.py +0 -0
  126. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/delivery_metadata.py +0 -0
  127. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/delivery_method.py +0 -0
  128. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/delivery_status.py +0 -0
  129. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/error_model.py +0 -0
  130. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/fraud_config_allow_email.py +0 -0
  131. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/fraud_config_country.py +0 -0
  132. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/fraud_config_country_update_list.py +0 -0
  133. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/fraud_config_ip.py +0 -0
  134. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/fraud_config_redeemed_rewards_count.py +0 -0
  135. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/fraud_config_review_email.py +0 -0
  136. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/fraud_generic_response.py +0 -0
  137. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/fraud_review_base.py +0 -0
  138. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/fraud_review_geo.py +0 -0
  139. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/fraud_review_list_item.py +0 -0
  140. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/fraud_review_reason.py +0 -0
  141. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/fraud_review_redemption_method.py +0 -0
  142. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/fraud_review_risk.py +0 -0
  143. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/fraud_review_status.py +0 -0
  144. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/fraud_rule200_response.py +0 -0
  145. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/fraud_rule400_response.py +0 -0
  146. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/fraud_rule422_response.py +0 -0
  147. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/fraud_rule_request.py +0 -0
  148. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/fraud_rule_request_config.py +0 -0
  149. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/funding_source.py +0 -0
  150. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/generate_reward_link200_response.py +0 -0
  151. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/generate_reward_link200_response_reward.py +0 -0
  152. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/generate_reward_link403_response.py +0 -0
  153. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/generate_reward_token200_response.py +0 -0
  154. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/generate_reward_token200_response_reward.py +0 -0
  155. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/get_fraud_review200_response.py +0 -0
  156. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/get_fraud_review200_response_fraud_review.py +0 -0
  157. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/get_fraud_review200_response_fraud_review_geo.py +0 -0
  158. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/get_funding_source200_response.py +0 -0
  159. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/get_member200_response.py +0 -0
  160. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/get_member200_response_member.py +0 -0
  161. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/get_member200_response_member_events_inner.py +0 -0
  162. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/get_order200_response.py +0 -0
  163. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/get_organization200_response.py +0 -0
  164. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/get_product_response.py +0 -0
  165. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/get_reward200_response.py +0 -0
  166. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/inline_object.py +0 -0
  167. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/inline_object1.py +0 -0
  168. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/inline_object1_reward.py +0 -0
  169. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/invoice.py +0 -0
  170. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_balance_transactions200_response.py +0 -0
  171. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_balance_transactions200_response_transactions_inner_order.py +0 -0
  172. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_campaigns200_response.py +0 -0
  173. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_campaigns200_response_campaigns_inner_email_style.py +0 -0
  174. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_campaigns200_response_campaigns_inner_webpage_style.py +0 -0
  175. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_connected_organization_members200_response.py +0 -0
  176. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_connected_organization_members200_response_connected_organization_members_inner.py +0 -0
  177. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_connected_organization_members200_response_connected_organization_members_inner_member.py +0 -0
  178. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_connected_organizations200_response.py +0 -0
  179. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_connected_organizations200_response_connected_organizations_inner.py +0 -0
  180. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_fields200_response.py +0 -0
  181. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_fields200_response_fields_inner.py +0 -0
  182. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_fields200_response_fields_inner_data.py +0 -0
  183. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_forex_response.py +0 -0
  184. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_fraud_reviews200_response.py +0 -0
  185. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_fraud_reviews200_response_fraud_reviews_inner.py +0 -0
  186. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_fraud_reviews200_response_fraud_reviews_inner_geo.py +0 -0
  187. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_fraud_rules200_response.py +0 -0
  188. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_funding_sources200_response.py +0 -0
  189. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_funding_sources200_response_funding_sources_inner.py +0 -0
  190. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_funding_sources200_response_funding_sources_inner_meta_failure_details.py +0 -0
  191. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_invoices200_response.py +0 -0
  192. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_invoices200_response_invoices_inner.py +0 -0
  193. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_members200_response.py +0 -0
  194. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_members200_response_members_inner.py +0 -0
  195. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_orders200_response.py +0 -0
  196. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_organizations200_response.py +0 -0
  197. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_products_response.py +0 -0
  198. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_products_response_products_inner.py +0 -0
  199. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_products_response_products_inner_countries_inner.py +0 -0
  200. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_products_response_products_inner_documents.py +0 -0
  201. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_products_response_products_inner_images_inner.py +0 -0
  202. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_products_response_products_inner_skus_inner.py +0 -0
  203. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_rewards200_response.py +0 -0
  204. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_rewards200_response_rewards_inner.py +0 -0
  205. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_rewards200_response_rewards_inner_custom_fields_inner.py +0 -0
  206. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_rewards200_response_rewards_inner_delivery.py +0 -0
  207. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_rewards200_response_rewards_inner_value.py +0 -0
  208. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_rewards401_response.py +0 -0
  209. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_rewards401_response_errors.py +0 -0
  210. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_rewards429_response.py +0 -0
  211. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_roles200_response.py +0 -0
  212. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_roles200_response_roles_inner.py +0 -0
  213. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_topups200_response.py +0 -0
  214. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_webhook_events200_response.py +0 -0
  215. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_webhooks200_response.py +0 -0
  216. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/list_webhooks200_response_webhooks_inner.py +0 -0
  217. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/member.py +0 -0
  218. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/member_base.py +0 -0
  219. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/member_with_events.py +0 -0
  220. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/member_without_events.py +0 -0
  221. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/model_field.py +0 -0
  222. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/order_status.py +0 -0
  223. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/order_with_link_rewards_inner.py +0 -0
  224. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/order_without_link_rewards_inner.py +0 -0
  225. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/payout.py +0 -0
  226. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/product.py +0 -0
  227. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/product_documents.py +0 -0
  228. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/report.py +0 -0
  229. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/resend_reward422_response.py +0 -0
  230. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/resend_reward_request.py +0 -0
  231. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/review_country.py +0 -0
  232. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/review_country1.py +0 -0
  233. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/review_email.py +0 -0
  234. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/review_email1.py +0 -0
  235. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/review_ip.py +0 -0
  236. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/review_ip1.py +0 -0
  237. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/review_redeemed_rewards_count.py +0 -0
  238. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/reward.py +0 -0
  239. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/reward_base.py +0 -0
  240. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/reward_base_custom_fields_inner.py +0 -0
  241. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/reward_for_order_create.py +0 -0
  242. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/reward_link.py +0 -0
  243. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/reward_token.py +0 -0
  244. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/reward_value.py +0 -0
  245. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/reward_with_link.py +0 -0
  246. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/reward_with_link_delivery.py +0 -0
  247. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/reward_without_link.py +0 -0
  248. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/reward_without_link_delivery.py +0 -0
  249. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/role.py +0 -0
  250. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/simulate_webhook_request.py +0 -0
  251. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/single_reward_order.py +0 -0
  252. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/single_reward_order_payment.py +0 -0
  253. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/single_reward_order_reward.py +0 -0
  254. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/single_reward_order_reward_custom_fields_inner.py +0 -0
  255. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/single_reward_order_reward_delivery.py +0 -0
  256. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/single_reward_order_reward_delivery_meta.py +0 -0
  257. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/single_reward_order_with_link.py +0 -0
  258. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/single_reward_order_without_link.py +0 -0
  259. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/update_fraud_rule_list200_response.py +0 -0
  260. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/update_fraud_rule_list_request.py +0 -0
  261. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/update_fraud_rule_list_request_config.py +0 -0
  262. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/webhook.py +0 -0
  263. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/models/webhook_post.py +0 -0
  264. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/py.typed +0 -0
  265. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous/rest.py +0 -0
  266. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous_python.egg-info/SOURCES.txt +0 -0
  267. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous_python.egg-info/dependency_links.txt +0 -0
  268. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous_python.egg-info/requires.txt +0 -0
  269. {tremendous_python-5.13.0 → tremendous_python-5.15.0}/tremendous_python.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tremendous-python
3
- Version: 5.13.0
3
+ Version: 5.15.0
4
4
  Summary: Python API client for Tremendous
5
5
  Home-page: https://github.com/tremendous-rewards/tremendous-python
6
6
  Author: Tremendous
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "tremendous"
3
- version = "5.13.0"
3
+ version = "5.15.0"
4
4
  long_description="Python API client for Tremendous"
5
5
  description = "Python API client for Tremendous"
6
6
  authors = ["API Support <developers@tremendous.com>"]
@@ -30,12 +30,13 @@ class BalanceTransaction(BaseModel):
30
30
  A balance transaction represents a specific movement or change in an account's balance.
31
31
  """ # noqa: E501
32
32
  created_at: datetime = Field(description="Date that the transaction was created")
33
- amount: Union[StrictFloat, StrictInt] = Field(description="Amount of the transaction in USD")
34
- balance: Union[StrictFloat, StrictInt] = Field(description="The updated total after the transaction. Note that this running balance may be delayed and contain `null`.")
33
+ amount: Union[StrictFloat, StrictInt] = Field(description="Amount of the transaction, denominated in `currency_code`.")
34
+ currency_code: StrictStr = Field(description="Currency of the transaction amount and running balance. Always matches the organization's currency.")
35
+ balance: Union[StrictFloat, StrictInt] = Field(description="The updated total after the transaction, denominated in `currency_code`. Note that this running balance may be delayed and contain `null`.")
35
36
  action: StrictStr = Field(description="The action that was performed")
36
37
  description: StrictStr = Field(description="A brief description of the transaction")
37
38
  order: Optional[BalanceTransactionOrder] = None
38
- __properties: ClassVar[List[str]] = ["created_at", "amount", "balance", "action", "description", "order"]
39
+ __properties: ClassVar[List[str]] = ["created_at", "amount", "currency_code", "balance", "action", "description", "order"]
39
40
 
40
41
  model_config = ConfigDict(
41
42
  populate_by_name=True,
@@ -93,6 +94,7 @@ class BalanceTransaction(BaseModel):
93
94
  _obj = cls.model_validate({
94
95
  "created_at": obj.get("created_at"),
95
96
  "amount": obj.get("amount"),
97
+ "currency_code": obj.get("currency_code"),
96
98
  "balance": obj.get("balance"),
97
99
  "action": obj.get("action"),
98
100
  "description": obj.get("description"),
@@ -18,7 +18,7 @@ import pprint
18
18
  import re # noqa: F401
19
19
  import json
20
20
 
21
- from pydantic import BaseModel, ConfigDict, Field
21
+ from pydantic import BaseModel, ConfigDict, Field, StrictStr
22
22
  from typing import Any, ClassVar, Dict, List, Optional, Union
23
23
  from typing_extensions import Annotated
24
24
  from tremendous.models.payment_details_refund import PaymentDetailsRefund
@@ -29,12 +29,13 @@ class BalanceTransactionOrderPayment(BaseModel):
29
29
  """
30
30
  BalanceTransactionOrderPayment
31
31
  """ # noqa: E501
32
- subtotal: Union[Annotated[float, Field(strict=True, ge=0)], Annotated[int, Field(strict=True, ge=0)]] = Field(description="Total price of the order before fees (in USD)")
33
- total: Union[Annotated[float, Field(strict=True, ge=0)], Annotated[int, Field(strict=True, ge=0)]] = Field(description="Total price of the order including fees (in USD)")
34
- fees: Union[Annotated[float, Field(strict=True, ge=0)], Annotated[int, Field(strict=True, ge=0)]] = Field(description="Fees for the order (in USD)")
35
- discount: Union[Annotated[float, Field(strict=True, ge=0)], Annotated[int, Field(strict=True, ge=0)]] = Field(description="Discount for the order (in USD)")
32
+ subtotal: Union[Annotated[float, Field(strict=True, ge=0)], Annotated[int, Field(strict=True, ge=0)]] = Field(description="Total price of the order before fees, denominated in `currency_code`.")
33
+ total: Union[Annotated[float, Field(strict=True, ge=0)], Annotated[int, Field(strict=True, ge=0)]] = Field(description="Total price of the order including fees, denominated in `currency_code`.")
34
+ fees: Union[Annotated[float, Field(strict=True, ge=0)], Annotated[int, Field(strict=True, ge=0)]] = Field(description="Fees for the order, denominated in `currency_code`.")
35
+ discount: Union[Annotated[float, Field(strict=True, ge=0)], Annotated[int, Field(strict=True, ge=0)]] = Field(description="Discount for the order, denominated in `currency_code`.")
36
+ currency_code: StrictStr = Field(description="Currency in which the payment amounts (subtotal, total, fees, discount, refund) are denominated. This always matches the organization's currency. ")
36
37
  refund: Optional[PaymentDetailsRefund] = None
37
- __properties: ClassVar[List[str]] = ["subtotal", "total", "fees", "discount", "refund"]
38
+ __properties: ClassVar[List[str]] = ["subtotal", "total", "fees", "discount", "currency_code", "refund"]
38
39
 
39
40
  model_config = ConfigDict(
40
41
  populate_by_name=True,
@@ -70,12 +71,14 @@ class BalanceTransactionOrderPayment(BaseModel):
70
71
  * OpenAPI `readOnly` fields are excluded.
71
72
  * OpenAPI `readOnly` fields are excluded.
72
73
  * OpenAPI `readOnly` fields are excluded.
74
+ * OpenAPI `readOnly` fields are excluded.
73
75
  """
74
76
  excluded_fields: Set[str] = set([
75
77
  "subtotal",
76
78
  "total",
77
79
  "fees",
78
80
  "discount",
81
+ "currency_code",
79
82
  ])
80
83
 
81
84
  _dict = self.model_dump(
@@ -102,6 +105,7 @@ class BalanceTransactionOrderPayment(BaseModel):
102
105
  "total": obj.get("total"),
103
106
  "fees": obj.get("fees"),
104
107
  "discount": obj.get("discount"),
108
+ "currency_code": obj.get("currency_code"),
105
109
  "refund": PaymentDetailsRefund.from_dict(obj["refund"]) if obj.get("refund") is not None else None
106
110
  })
107
111
  return _obj
@@ -34,9 +34,10 @@ class Campaign(BaseModel):
34
34
  name: StrictStr = Field(description="Name of the campaign")
35
35
  description: Optional[StrictStr] = Field(description="Description of the campaign")
36
36
  products: List[Annotated[str, Field(strict=True)]] = Field(description="List of IDs of products (different gift cards, charity, etc.) that are available in this campaign. ")
37
+ fee_charged_to: Optional[StrictStr] = Field(default=None, description="Determines whether fees for premium products are added to the order total (`SENDER`) or deducted from the recipient's reward amount (`RECIPIENT`). Campaigns with `RECIPIENT` must include at least one fee-free product. ")
37
38
  webpage_style: Optional[ListCampaigns200ResponseCampaignsInnerWebpageStyle] = None
38
39
  email_style: Optional[ListCampaigns200ResponseCampaignsInnerEmailStyle] = None
39
- __properties: ClassVar[List[str]] = ["id", "name", "description", "products", "webpage_style", "email_style"]
40
+ __properties: ClassVar[List[str]] = ["id", "name", "description", "products", "fee_charged_to", "webpage_style", "email_style"]
40
41
 
41
42
  @field_validator('id')
42
43
  def id_validate_regular_expression(cls, value):
@@ -48,6 +49,16 @@ class Campaign(BaseModel):
48
49
  raise ValueError(r"must validate the regular expression /[A-Z0-9]{4,20}/")
49
50
  return value
50
51
 
52
+ @field_validator('fee_charged_to')
53
+ def fee_charged_to_validate_enum(cls, value):
54
+ """Validates the enum"""
55
+ if value is None:
56
+ return value
57
+
58
+ if value not in set(['SENDER', 'RECIPIENT']):
59
+ raise ValueError("must be one of enum values ('SENDER', 'RECIPIENT')")
60
+ return value
61
+
51
62
  model_config = ConfigDict(
52
63
  populate_by_name=True,
53
64
  validate_assignment=True,
@@ -100,6 +111,11 @@ class Campaign(BaseModel):
100
111
  if self.description is None and "description" in self.model_fields_set:
101
112
  _dict['description'] = None
102
113
 
114
+ # set to None if fee_charged_to (nullable) is None
115
+ # and model_fields_set contains the field
116
+ if self.fee_charged_to is None and "fee_charged_to" in self.model_fields_set:
117
+ _dict['fee_charged_to'] = None
118
+
103
119
  return _dict
104
120
 
105
121
  @classmethod
@@ -116,6 +132,7 @@ class Campaign(BaseModel):
116
132
  "name": obj.get("name"),
117
133
  "description": obj.get("description"),
118
134
  "products": obj.get("products"),
135
+ "fee_charged_to": obj.get("fee_charged_to"),
119
136
  "webpage_style": ListCampaigns200ResponseCampaignsInnerWebpageStyle.from_dict(obj["webpage_style"]) if obj.get("webpage_style") is not None else None,
120
137
  "email_style": ListCampaigns200ResponseCampaignsInnerEmailStyle.from_dict(obj["email_style"]) if obj.get("email_style") is not None else None
121
138
  })
@@ -34,9 +34,10 @@ class CampaignBase(BaseModel):
34
34
  name: Optional[StrictStr] = Field(default=None, description="Name of the campaign")
35
35
  description: Optional[StrictStr] = Field(default=None, description="Description of the campaign")
36
36
  products: Optional[List[Annotated[str, Field(strict=True)]]] = Field(default=None, description="List of IDs of products (different gift cards, charity, etc.) that are available in this campaign. ")
37
+ fee_charged_to: Optional[StrictStr] = Field(default=None, description="Determines whether fees for premium products are added to the order total (`SENDER`) or deducted from the recipient's reward amount (`RECIPIENT`). Campaigns with `RECIPIENT` must include at least one fee-free product. ")
37
38
  webpage_style: Optional[ListCampaigns200ResponseCampaignsInnerWebpageStyle] = None
38
39
  email_style: Optional[ListCampaigns200ResponseCampaignsInnerEmailStyle] = None
39
- __properties: ClassVar[List[str]] = ["id", "name", "description", "products", "webpage_style", "email_style"]
40
+ __properties: ClassVar[List[str]] = ["id", "name", "description", "products", "fee_charged_to", "webpage_style", "email_style"]
40
41
 
41
42
  @field_validator('id')
42
43
  def id_validate_regular_expression(cls, value):
@@ -48,6 +49,16 @@ class CampaignBase(BaseModel):
48
49
  raise ValueError(r"must validate the regular expression /[A-Z0-9]{4,20}/")
49
50
  return value
50
51
 
52
+ @field_validator('fee_charged_to')
53
+ def fee_charged_to_validate_enum(cls, value):
54
+ """Validates the enum"""
55
+ if value is None:
56
+ return value
57
+
58
+ if value not in set(['SENDER', 'RECIPIENT']):
59
+ raise ValueError("must be one of enum values ('SENDER', 'RECIPIENT')")
60
+ return value
61
+
51
62
  model_config = ConfigDict(
52
63
  populate_by_name=True,
53
64
  validate_assignment=True,
@@ -100,6 +111,11 @@ class CampaignBase(BaseModel):
100
111
  if self.description is None and "description" in self.model_fields_set:
101
112
  _dict['description'] = None
102
113
 
114
+ # set to None if fee_charged_to (nullable) is None
115
+ # and model_fields_set contains the field
116
+ if self.fee_charged_to is None and "fee_charged_to" in self.model_fields_set:
117
+ _dict['fee_charged_to'] = None
118
+
103
119
  return _dict
104
120
 
105
121
  @classmethod
@@ -116,6 +132,7 @@ class CampaignBase(BaseModel):
116
132
  "name": obj.get("name"),
117
133
  "description": obj.get("description"),
118
134
  "products": obj.get("products"),
135
+ "fee_charged_to": obj.get("fee_charged_to"),
119
136
  "webpage_style": ListCampaigns200ResponseCampaignsInnerWebpageStyle.from_dict(obj["webpage_style"]) if obj.get("webpage_style") is not None else None,
120
137
  "email_style": ListCampaigns200ResponseCampaignsInnerEmailStyle.from_dict(obj["email_style"]) if obj.get("email_style") is not None else None
121
138
  })
@@ -32,9 +32,10 @@ class ConnectedOrganizationOrganization(BaseModel):
32
32
  id: Optional[Annotated[str, Field(strict=True)]] = None
33
33
  name: StrictStr = Field(description="Name of the organization")
34
34
  website: StrictStr = Field(description="URL of the website of that organization")
35
+ currency_code: Optional[StrictStr] = Field(default=None, description="Currency used for this organization's balances, orders, and transactions.")
35
36
  status: Optional[StrictStr] = Field(default=None, description="Status of the organization. Organizations need to be approved to be able to use them to send out rewards.")
36
37
  created_at: Optional[date] = Field(default=None, description="Timestamp of when the organization has been created. *This field is only returned when creating an organization.* It is not returned anymore when retrieving or listing organizations. ")
37
- __properties: ClassVar[List[str]] = ["id", "name", "website", "status", "created_at"]
38
+ __properties: ClassVar[List[str]] = ["id", "name", "website", "currency_code", "status", "created_at"]
38
39
 
39
40
  @field_validator('id')
40
41
  def id_validate_regular_expression(cls, value):
@@ -116,6 +117,7 @@ class ConnectedOrganizationOrganization(BaseModel):
116
117
  "id": obj.get("id"),
117
118
  "name": obj.get("name"),
118
119
  "website": obj.get("website"),
120
+ "currency_code": obj.get("currency_code"),
119
121
  "status": obj.get("status"),
120
122
  "created_at": obj.get("created_at")
121
123
  })
@@ -33,9 +33,20 @@ class CreateCampaignRequest(BaseModel):
33
33
  name: StrictStr = Field(description="Name of the campaign")
34
34
  description: Optional[StrictStr] = Field(description="Description of the campaign")
35
35
  products: List[Annotated[str, Field(strict=True)]] = Field(description="List of IDs of products (different gift cards, charity, etc.) that are available in this campaign. ")
36
+ fee_charged_to: Optional[StrictStr] = Field(default=None, description="Determines whether fees for premium products are added to the order total (`SENDER`) or deducted from the recipient's reward amount (`RECIPIENT`). Campaigns with `RECIPIENT` must include at least one fee-free product. ")
36
37
  webpage_style: Optional[ListCampaigns200ResponseCampaignsInnerWebpageStyle] = None
37
38
  email_style: Optional[ListCampaigns200ResponseCampaignsInnerEmailStyle] = None
38
- __properties: ClassVar[List[str]] = ["name", "description", "products", "webpage_style", "email_style"]
39
+ __properties: ClassVar[List[str]] = ["name", "description", "products", "fee_charged_to", "webpage_style", "email_style"]
40
+
41
+ @field_validator('fee_charged_to')
42
+ def fee_charged_to_validate_enum(cls, value):
43
+ """Validates the enum"""
44
+ if value is None:
45
+ return value
46
+
47
+ if value not in set(['SENDER', 'RECIPIENT']):
48
+ raise ValueError("must be one of enum values ('SENDER', 'RECIPIENT')")
49
+ return value
39
50
 
40
51
  model_config = ConfigDict(
41
52
  populate_by_name=True,
@@ -87,6 +98,11 @@ class CreateCampaignRequest(BaseModel):
87
98
  if self.description is None and "description" in self.model_fields_set:
88
99
  _dict['description'] = None
89
100
 
101
+ # set to None if fee_charged_to (nullable) is None
102
+ # and model_fields_set contains the field
103
+ if self.fee_charged_to is None and "fee_charged_to" in self.model_fields_set:
104
+ _dict['fee_charged_to'] = None
105
+
90
106
  return _dict
91
107
 
92
108
  @classmethod
@@ -102,6 +118,7 @@ class CreateCampaignRequest(BaseModel):
102
118
  "name": obj.get("name"),
103
119
  "description": obj.get("description"),
104
120
  "products": obj.get("products"),
121
+ "fee_charged_to": obj.get("fee_charged_to"),
105
122
  "webpage_style": ListCampaigns200ResponseCampaignsInnerWebpageStyle.from_dict(obj["webpage_style"]) if obj.get("webpage_style") is not None else None,
106
123
  "email_style": ListCampaigns200ResponseCampaignsInnerEmailStyle.from_dict(obj["email_style"]) if obj.get("email_style") is not None else None
107
124
  })
@@ -19,7 +19,7 @@ import re # noqa: F401
19
19
  import json
20
20
 
21
21
  from pydantic import BaseModel, ConfigDict, Field, StrictStr
22
- from typing import Any, ClassVar, Dict, List
22
+ from typing import Any, ClassVar, Dict, List, Optional
23
23
  from typing import Optional, Set
24
24
  from typing_extensions import Self
25
25
 
@@ -28,7 +28,10 @@ class CreateConnectedOrganizationMemberRequest(BaseModel):
28
28
  CreateConnectedOrganizationMemberRequest
29
29
  """ # noqa: E501
30
30
  connected_organization_id: StrictStr = Field(description="The ID of the connected organization.")
31
- __properties: ClassVar[List[str]] = ["connected_organization_id"]
31
+ external_name: Optional[StrictStr] = Field(default=None, description="The name associated with the user in your systems.")
32
+ external_email: Optional[StrictStr] = Field(default=None, description="The email associated with the user in your systems.")
33
+ role: Optional[StrictStr] = Field(default=None, description="The role ID to assign to the member within the organization. Only applicable when the connected organization is already linked to an existing Tremendous organization. ")
34
+ __properties: ClassVar[List[str]] = ["connected_organization_id", "external_name", "external_email", "role"]
32
35
 
33
36
  model_config = ConfigDict(
34
37
  populate_by_name=True,
@@ -81,7 +84,10 @@ class CreateConnectedOrganizationMemberRequest(BaseModel):
81
84
  return cls.model_validate(obj)
82
85
 
83
86
  _obj = cls.model_validate({
84
- "connected_organization_id": obj.get("connected_organization_id")
87
+ "connected_organization_id": obj.get("connected_organization_id"),
88
+ "external_name": obj.get("external_name"),
89
+ "external_email": obj.get("external_email"),
90
+ "role": obj.get("role")
85
91
  })
86
92
  return _obj
87
93
 
@@ -34,7 +34,7 @@ class CreateOrder200ResponseOrder(BaseModel):
34
34
  id: Annotated[str, Field(strict=True)] = Field(description="Tremendous ID of the order")
35
35
  external_id: Optional[StrictStr] = Field(default=None, description="Reference for this order, supplied by the customer. When set, `external_id` makes order idempotent. All requests that use the same `external_id` after the initial order creation, will result in a response that returns the data of the initially created order. The response will have a `201` response code. These responses **fail** to create any further orders. It also allows for retrieving by `external_id` instead of `id` only. ")
36
36
  campaign_id: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="ID of the campaign in your account, that defines the available products (different gift cards, charity, etc.) that the recipient can choose from. ")
37
- created_at: datetime = Field(description="Date the order has been created")
37
+ created_at: datetime = Field(description="Date the order was created")
38
38
  status: StrictStr = Field(description="Execution status of a given order <table> <thead> <tr> <th> Status </th> <th> Description </th> </tr> </thead> <tbody> <tr> <td> <code> CANCELED </code> </td> <td> The order and all of its rewards were canceled. </td> </tr> <tr> <td> <code> OPEN </code> </td> <td> The order has been created, but hasn't yet been processed. </td> </tr> <tr> <td> <code> EXECUTED </code> </td> <td> The order has been executed. Payment has been handled and rewards are being delivered (if applicable). </td> </tr> <tr> <td> <code> FAILED </code> </td> <td> The order could not be processed due to an error. E.g. due to insufficient funds in the account. </td> </tr> <tr> <td> <code> PENDING APPROVAL </code> </td> <td> The order has been created but needs approval to be executed. </td> </tr> <tr> <td> <code> PENDING INTERNAL PAYMENT APPROVAL </code> </td> <td> The order has been created but it is under review and requires approval from our team. </td> </tr> <tr> <td> <code> PENDING SETTLEMENT </code> </td> <td> The order has been created but the funds are being held until the settlement window clears. </td> </tr> </tbody> </table> ")
39
39
  channel: Optional[StrictStr] = Field(default=None, description="Name of the channel in which the order was created")
40
40
  payment: Optional[ListOrders200ResponseOrdersInnerPayment] = None
@@ -36,8 +36,9 @@ class CreateOrganization(BaseModel):
36
36
  with_api_key: StrictBool = Field(description="Default value is `false`. Set to true to also generate an API key associated to the new organization.")
37
37
  copy_settings: Optional[CreateOrganizationRequestCopySettings] = None
38
38
  phone: Optional[StrictStr] = Field(default=None, description="Phone number of the organization. For non-US phone numbers, specify the country code (prefixed with +).")
39
+ currency_code: Optional[StrictStr] = Field(default=None, description="Currency code for the new organization. Defaults to the current organization's currency if not provided.")
39
40
  created_at: Optional[date] = Field(default=None, description="Timestamp of when the organization has been created. ")
40
- __properties: ClassVar[List[str]] = ["id", "name", "website", "with_api_key", "copy_settings", "phone", "created_at"]
41
+ __properties: ClassVar[List[str]] = ["id", "name", "website", "with_api_key", "copy_settings", "phone", "currency_code", "created_at"]
41
42
 
42
43
  @field_validator('id')
43
44
  def id_validate_regular_expression(cls, value):
@@ -113,6 +114,7 @@ class CreateOrganization(BaseModel):
113
114
  "with_api_key": obj.get("with_api_key"),
114
115
  "copy_settings": CreateOrganizationRequestCopySettings.from_dict(obj["copy_settings"]) if obj.get("copy_settings") is not None else None,
115
116
  "phone": obj.get("phone"),
117
+ "currency_code": obj.get("currency_code"),
116
118
  "created_at": obj.get("created_at")
117
119
  })
118
120
  return _obj
@@ -35,9 +35,10 @@ class CreateOrganization200ResponseOrganization(BaseModel):
35
35
  website: StrictStr = Field(description="URL of the website of that organization")
36
36
  copy_settings: Optional[CreateOrganizationRequestCopySettings] = None
37
37
  phone: Optional[StrictStr] = Field(default=None, description="Phone number of the organization. For non-US phone numbers, specify the country code (prefixed with +).")
38
+ currency_code: Optional[StrictStr] = Field(default=None, description="Currency code for the new organization. Defaults to the current organization's currency if not provided.")
38
39
  created_at: Optional[date] = Field(default=None, description="Timestamp of when the organization has been created. ")
39
40
  api_key: Optional[StrictStr] = Field(default=None, description="The API key for the created organization. This property is only returned when `api_key` is set to `true`. ")
40
- __properties: ClassVar[List[str]] = ["id", "name", "website", "copy_settings", "phone", "created_at", "api_key"]
41
+ __properties: ClassVar[List[str]] = ["id", "name", "website", "copy_settings", "phone", "currency_code", "created_at", "api_key"]
41
42
 
42
43
  @field_validator('id')
43
44
  def id_validate_regular_expression(cls, value):
@@ -113,6 +114,7 @@ class CreateOrganization200ResponseOrganization(BaseModel):
113
114
  "website": obj.get("website"),
114
115
  "copy_settings": CreateOrganizationRequestCopySettings.from_dict(obj["copy_settings"]) if obj.get("copy_settings") is not None else None,
115
116
  "phone": obj.get("phone"),
117
+ "currency_code": obj.get("currency_code"),
116
118
  "created_at": obj.get("created_at"),
117
119
  "api_key": obj.get("api_key")
118
120
  })
@@ -36,8 +36,9 @@ class CreateOrganizationForResponse(BaseModel):
36
36
  with_api_key: Optional[StrictBool] = Field(default=None, description="Default value is `false`. Set to true to also generate an API key associated to the new organization.")
37
37
  copy_settings: Optional[CreateOrganizationRequestCopySettings] = None
38
38
  phone: Optional[StrictStr] = Field(default=None, description="Phone number of the organization. For non-US phone numbers, specify the country code (prefixed with +).")
39
+ currency_code: Optional[StrictStr] = Field(default=None, description="Currency code for the new organization. Defaults to the current organization's currency if not provided.")
39
40
  created_at: Optional[date] = Field(default=None, description="Timestamp of when the organization has been created. ")
40
- __properties: ClassVar[List[str]] = ["id", "name", "website", "with_api_key", "copy_settings", "phone", "created_at"]
41
+ __properties: ClassVar[List[str]] = ["id", "name", "website", "with_api_key", "copy_settings", "phone", "currency_code", "created_at"]
41
42
 
42
43
  @field_validator('id')
43
44
  def id_validate_regular_expression(cls, value):
@@ -118,6 +119,7 @@ class CreateOrganizationForResponse(BaseModel):
118
119
  "with_api_key": obj.get("with_api_key"),
119
120
  "copy_settings": CreateOrganizationRequestCopySettings.from_dict(obj["copy_settings"]) if obj.get("copy_settings") is not None else None,
120
121
  "phone": obj.get("phone"),
122
+ "currency_code": obj.get("currency_code"),
121
123
  "created_at": obj.get("created_at")
122
124
  })
123
125
  return _obj
@@ -36,8 +36,9 @@ class CreateOrganizationProperties(BaseModel):
36
36
  with_api_key: Optional[StrictBool] = Field(default=None, description="Default value is `false`. Set to true to also generate an API key associated to the new organization.")
37
37
  copy_settings: Optional[CreateOrganizationRequestCopySettings] = None
38
38
  phone: Optional[StrictStr] = Field(default=None, description="Phone number of the organization. For non-US phone numbers, specify the country code (prefixed with +).")
39
+ currency_code: Optional[StrictStr] = Field(default=None, description="Currency code for the new organization. Defaults to the current organization's currency if not provided.")
39
40
  created_at: Optional[date] = Field(default=None, description="Timestamp of when the organization has been created. ")
40
- __properties: ClassVar[List[str]] = ["id", "name", "website", "with_api_key", "copy_settings", "phone", "created_at"]
41
+ __properties: ClassVar[List[str]] = ["id", "name", "website", "with_api_key", "copy_settings", "phone", "currency_code", "created_at"]
41
42
 
42
43
  @field_validator('id')
43
44
  def id_validate_regular_expression(cls, value):
@@ -113,6 +114,7 @@ class CreateOrganizationProperties(BaseModel):
113
114
  "with_api_key": obj.get("with_api_key"),
114
115
  "copy_settings": CreateOrganizationRequestCopySettings.from_dict(obj["copy_settings"]) if obj.get("copy_settings") is not None else None,
115
116
  "phone": obj.get("phone"),
117
+ "currency_code": obj.get("currency_code"),
116
118
  "created_at": obj.get("created_at")
117
119
  })
118
120
  return _obj
@@ -33,7 +33,8 @@ class CreateOrganizationRequest(BaseModel):
33
33
  with_api_key: StrictBool = Field(description="Default value is `false`. Set to true to also generate an API key associated to the new organization.")
34
34
  copy_settings: Optional[CreateOrganizationRequestCopySettings] = None
35
35
  phone: Optional[StrictStr] = Field(default=None, description="Phone number of the organization. For non-US phone numbers, specify the country code (prefixed with +).")
36
- __properties: ClassVar[List[str]] = ["name", "website", "with_api_key", "copy_settings", "phone"]
36
+ currency_code: Optional[StrictStr] = Field(default=None, description="Currency code for the new organization. Defaults to the current organization's currency if not provided.")
37
+ __properties: ClassVar[List[str]] = ["name", "website", "with_api_key", "copy_settings", "phone", "currency_code"]
37
38
 
38
39
  model_config = ConfigDict(
39
40
  populate_by_name=True,
@@ -93,7 +94,8 @@ class CreateOrganizationRequest(BaseModel):
93
94
  "website": obj.get("website"),
94
95
  "with_api_key": obj.get("with_api_key"),
95
96
  "copy_settings": CreateOrganizationRequestCopySettings.from_dict(obj["copy_settings"]) if obj.get("copy_settings") is not None else None,
96
- "phone": obj.get("phone")
97
+ "phone": obj.get("phone"),
98
+ "currency_code": obj.get("currency_code")
97
99
  })
98
100
  return _obj
99
101
 
@@ -29,7 +29,7 @@ class CreateTopupRequest(BaseModel):
29
29
  """ # noqa: E501
30
30
  funding_source_id: StrictStr = Field(description="The ID of the funding source to top up.")
31
31
  idempotency_key: StrictStr = Field(description="Unique key that ensures this request is only processed once. ")
32
- amount: Union[StrictFloat, StrictInt] = Field(description="Amount in USD intended to be added to your organization’s balance.")
32
+ amount: Union[StrictFloat, StrictInt] = Field(description="Amount to add to your organization's balance, denominated in `currency_code`.")
33
33
  __properties: ClassVar[List[str]] = ["funding_source_id", "idempotency_key", "amount"]
34
34
 
35
35
  model_config = ConfigDict(
@@ -28,7 +28,7 @@ class FraudConfigRedeemedRewardsAmount(BaseModel):
28
28
  """
29
29
  FraudConfigRedeemedRewardsAmount
30
30
  """ # noqa: E501
31
- amount: Union[Annotated[float, Field(strict=True, ge=1)], Annotated[int, Field(strict=True, ge=1)]] = Field(description="The total amount in USD of redeemed rewards to use as a threshold.")
31
+ amount: Union[Annotated[float, Field(strict=True, ge=1)], Annotated[int, Field(strict=True, ge=1)]] = Field(description="The total amount of redeemed rewards to use as a threshold. The amount is denominated in the organization's currency.")
32
32
  period: StrictStr = Field(description="The period, in days, to consider for the count. Use `all_time` to consider any redeemed rewards.")
33
33
  __properties: ClassVar[List[str]] = ["amount", "period"]
34
34
 
@@ -21,7 +21,7 @@ import json
21
21
  from datetime import datetime
22
22
  from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
23
23
  from typing import Any, ClassVar, Dict, List, Optional
24
- from tremendous.models.get_fraud_review200_response_fraud_review_related_rewards import GetFraudReview200ResponseFraudReviewRelatedRewards
24
+ from tremendous.models.fraud_review_related_rewards import FraudReviewRelatedRewards
25
25
  from tremendous.models.list_fraud_reviews200_response_fraud_reviews_inner_geo import ListFraudReviews200ResponseFraudReviewsInnerGeo
26
26
  from tremendous.models.order_without_link_rewards_inner import OrderWithoutLinkRewardsInner
27
27
  from typing import Optional, Set
@@ -42,7 +42,7 @@ class FraudReview(BaseModel):
42
42
  reviewed_at: Optional[datetime] = Field(default=None, description="When the reward was blocked or released following fraud review. This field is only present if the status is not `flagged`. ")
43
43
  redemption_method_account_hash: Optional[StrictStr] = Field(default=None, description="A hash of the destination account for redemption methods that require providing 3rd party account details (e.g., PayPal, Venmo, ACH/CashApp, international bank transfers, etc.). The hash is globally unique by redemption method + account combination. This field is omitted for redemption methods that don't have a destination account (e.g., merchant cards, charities, etc.). ")
44
44
  risk: Optional[StrictStr] = Field(default=None, description="The fraud risk associated with the reward.")
45
- related_rewards: Optional[GetFraudReview200ResponseFraudReviewRelatedRewards] = None
45
+ related_rewards: Optional[FraudReviewRelatedRewards] = None
46
46
  __properties: ClassVar[List[str]] = ["status", "reasons", "device_id", "redemption_method", "redeemed_at", "geo", "reward", "reviewed_by", "reviewed_at", "redemption_method_account_hash", "risk", "related_rewards"]
47
47
 
48
48
  @field_validator('status')
@@ -167,7 +167,7 @@ class FraudReview(BaseModel):
167
167
  "reviewed_at": obj.get("reviewed_at"),
168
168
  "redemption_method_account_hash": obj.get("redemption_method_account_hash"),
169
169
  "risk": obj.get("risk"),
170
- "related_rewards": GetFraudReview200ResponseFraudReviewRelatedRewards.from_dict(obj["related_rewards"]) if obj.get("related_rewards") is not None else None
170
+ "related_rewards": FraudReviewRelatedRewards.from_dict(obj["related_rewards"]) if obj.get("related_rewards") is not None else None
171
171
  })
172
172
  return _obj
173
173
 
@@ -26,13 +26,14 @@ from typing_extensions import Self
26
26
 
27
27
  class FraudReviewRelatedRewards(BaseModel):
28
28
  """
29
- FraudReviewRelatedRewards
29
+ The related rewards associated with the fraud review.
30
30
  """ # noqa: E501
31
31
  ids: Optional[List[StrictStr]] = Field(default=None, description="The IDs of rewards that have similar attributes to the fraud reward. A maximum of 100 IDs is returned. ")
32
32
  count: Optional[Union[Annotated[float, Field(strict=True, ge=0)], Annotated[int, Field(strict=True, ge=0)]]] = Field(default=None, description="How many related rewards were found in total.")
33
33
  blocked_count: Optional[Union[Annotated[float, Field(strict=True, ge=0)], Annotated[int, Field(strict=True, ge=0)]]] = Field(default=None, description="How many related rewards have been blocked.")
34
- aggregated_value: Optional[Union[Annotated[float, Field(strict=True, ge=0)], Annotated[int, Field(strict=True, ge=0)]]] = Field(default=None, description="Total amount claimed by the related rewards (in USD).")
35
- __properties: ClassVar[List[str]] = ["ids", "count", "blocked_count", "aggregated_value"]
34
+ aggregated_value: Optional[Union[Annotated[float, Field(strict=True, ge=0)], Annotated[int, Field(strict=True, ge=0)]]] = Field(default=None, description="Total amount claimed by the related rewards, denominated in `currency_code`. ")
35
+ currency_code: Optional[StrictStr] = Field(default=None, description="Currency of the aggregated value. Always matches the organization's currency.")
36
+ __properties: ClassVar[List[str]] = ["ids", "count", "blocked_count", "aggregated_value", "currency_code"]
36
37
 
37
38
  model_config = ConfigDict(
38
39
  populate_by_name=True,
@@ -64,8 +65,10 @@ class FraudReviewRelatedRewards(BaseModel):
64
65
  * `None` is only added to the output dict for nullable fields that
65
66
  were set at model initialization. Other fields with value `None`
66
67
  are ignored.
68
+ * OpenAPI `readOnly` fields are excluded.
67
69
  """
68
70
  excluded_fields: Set[str] = set([
71
+ "currency_code",
69
72
  ])
70
73
 
71
74
  _dict = self.model_dump(
@@ -88,7 +91,8 @@ class FraudReviewRelatedRewards(BaseModel):
88
91
  "ids": obj.get("ids"),
89
92
  "count": obj.get("count"),
90
93
  "blocked_count": obj.get("blocked_count"),
91
- "aggregated_value": obj.get("aggregated_value")
94
+ "aggregated_value": obj.get("aggregated_value"),
95
+ "currency_code": obj.get("currency_code")
92
96
  })
93
97
  return _obj
94
98
 
@@ -21,7 +21,7 @@ from typing_extensions import Self
21
21
 
22
22
  class FraudRuleType(str, Enum):
23
23
  """
24
- * `review_country` - Flags when the recipient's IP country matches the criteria in the rule * `review_ip` - Flags when recipient's IP matches one in the list * `review_email` - Flags when the recipient's email matches one in the list * `review_redeemed_rewards_count` - Flags when the recipient redeemed more than the number of rewards specified in the config * `review_redeemed_rewards_amount` - Flags when the recipient redeemed more than the total amount specified in the config * `review_multiple_emails` - Flags when recipient's device or account has multiple emails associated * `review_vpn` - Flags when VPN is suspected * `review_tremendous_flag_list` - Flags rewards when redemption attributes match at least one criteria defined by the Tremendous flag list * `review_previously_blocked_recipients` - Flags rewards when the recipient has been blocked before * `allow_ip` - Releases a reward when a recipient's IP matches one in the list * `allow_email` - Releases a reward when the recipient's email matches one in the list
24
+ * `review_country` - Flags when the recipient's IP country matches the criteria in the rule * `review_ip` - Flags when recipient's IP matches one in the list * `review_email` - Flags when the recipient's email matches one in the list * `review_redeemed_rewards_count` - Flags when the recipient redeemed more than the number of rewards specified in the config * `review_redeemed_rewards_amount` - Flags when the recipient redeemed more than the total amount specified in the config. The amount is denominated in the organization's currency. * `review_multiple_emails` - Flags when recipient's device or account has multiple emails associated * `review_vpn` - Flags when VPN is suspected * `review_tremendous_flag_list` - Flags rewards when redemption attributes match at least one criteria defined by the Tremendous flag list * `review_previously_blocked_recipients` - Flags rewards when the recipient has been blocked before * `allow_ip` - Releases a reward when a recipient's IP matches one in the list * `allow_email` - Releases a reward when the recipient's email matches one in the list
25
25
  """
26
26
 
27
27
  """
@@ -27,7 +27,7 @@ class FraudRulesListItem(BaseModel):
27
27
  """
28
28
  An active fraud rule
29
29
  """ # noqa: E501
30
- rule_type: Optional[StrictStr] = Field(default=None, description="* `review_country` - Flags when the recipient's IP country matches the criteria in the rule * `review_ip` - Flags when recipient's IP matches one in the list * `review_email` - Flags when the recipient's email matches one in the list * `review_redeemed_rewards_count` - Flags when the recipient redeemed more than the number of rewards specified in the config * `review_redeemed_rewards_amount` - Flags when the recipient redeemed more than the total amount specified in the config * `review_multiple_emails` - Flags when recipient's device or account has multiple emails associated * `review_vpn` - Flags when VPN is suspected * `review_tremendous_flag_list` - Flags rewards when redemption attributes match at least one criteria defined by the Tremendous flag list * `review_previously_blocked_recipients` - Flags rewards when the recipient has been blocked before * `allow_ip` - Releases a reward when a recipient's IP matches one in the list * `allow_email` - Releases a reward when the recipient's email matches one in the list ")
30
+ rule_type: Optional[StrictStr] = Field(default=None, description="* `review_country` - Flags when the recipient's IP country matches the criteria in the rule * `review_ip` - Flags when recipient's IP matches one in the list * `review_email` - Flags when the recipient's email matches one in the list * `review_redeemed_rewards_count` - Flags when the recipient redeemed more than the number of rewards specified in the config * `review_redeemed_rewards_amount` - Flags when the recipient redeemed more than the total amount specified in the config. The amount is denominated in the organization's currency. * `review_multiple_emails` - Flags when recipient's device or account has multiple emails associated * `review_vpn` - Flags when VPN is suspected * `review_tremendous_flag_list` - Flags rewards when redemption attributes match at least one criteria defined by the Tremendous flag list * `review_previously_blocked_recipients` - Flags rewards when the recipient has been blocked before * `allow_ip` - Releases a reward when a recipient's IP matches one in the list * `allow_email` - Releases a reward when the recipient's email matches one in the list ")
31
31
  config: Optional[Dict[str, Any]] = Field(default=None, description="The configuration associated with the rule. The properties allowed depend on the type of rule. This property is only present for rules that require configuration. ")
32
32
  __properties: ClassVar[List[str]] = ["rule_type", "config"]
33
33
 
@@ -31,8 +31,9 @@ class GetFraudReview200ResponseFraudReviewRelatedRewards(BaseModel):
31
31
  ids: Optional[List[StrictStr]] = Field(default=None, description="The IDs of rewards that have similar attributes to the fraud reward. A maximum of 100 IDs is returned. ")
32
32
  count: Optional[Union[Annotated[float, Field(strict=True, ge=0)], Annotated[int, Field(strict=True, ge=0)]]] = Field(default=None, description="How many related rewards were found in total.")
33
33
  blocked_count: Optional[Union[Annotated[float, Field(strict=True, ge=0)], Annotated[int, Field(strict=True, ge=0)]]] = Field(default=None, description="How many related rewards have been blocked.")
34
- aggregated_value: Optional[Union[Annotated[float, Field(strict=True, ge=0)], Annotated[int, Field(strict=True, ge=0)]]] = Field(default=None, description="Total amount claimed by the related rewards (in USD).")
35
- __properties: ClassVar[List[str]] = ["ids", "count", "blocked_count", "aggregated_value"]
34
+ aggregated_value: Optional[Union[Annotated[float, Field(strict=True, ge=0)], Annotated[int, Field(strict=True, ge=0)]]] = Field(default=None, description="Total amount claimed by the related rewards, denominated in `currency_code`. ")
35
+ currency_code: Optional[StrictStr] = Field(default=None, description="Currency of the aggregated value. Always matches the organization's currency.")
36
+ __properties: ClassVar[List[str]] = ["ids", "count", "blocked_count", "aggregated_value", "currency_code"]
36
37
 
37
38
  model_config = ConfigDict(
38
39
  populate_by_name=True,
@@ -88,7 +89,8 @@ class GetFraudReview200ResponseFraudReviewRelatedRewards(BaseModel):
88
89
  "ids": obj.get("ids"),
89
90
  "count": obj.get("count"),
90
91
  "blocked_count": obj.get("blocked_count"),
91
- "aggregated_value": obj.get("aggregated_value")
92
+ "aggregated_value": obj.get("aggregated_value"),
93
+ "currency_code": obj.get("currency_code")
92
94
  })
93
95
  return _obj
94
96
 
@@ -30,12 +30,13 @@ class ListBalanceTransactions200ResponseTransactionsInner(BaseModel):
30
30
  A balance transaction represents a specific movement or change in an account's balance.
31
31
  """ # noqa: E501
32
32
  created_at: datetime = Field(description="Date that the transaction was created")
33
- amount: Union[StrictFloat, StrictInt] = Field(description="Amount of the transaction in USD")
34
- balance: Union[StrictFloat, StrictInt] = Field(description="The updated total after the transaction. Note that this running balance may be delayed and contain `null`.")
33
+ amount: Union[StrictFloat, StrictInt] = Field(description="Amount of the transaction, denominated in `currency_code`.")
34
+ currency_code: StrictStr = Field(description="Currency of the transaction amount and running balance. Always matches the organization's currency.")
35
+ balance: Union[StrictFloat, StrictInt] = Field(description="The updated total after the transaction, denominated in `currency_code`. Note that this running balance may be delayed and contain `null`.")
35
36
  action: StrictStr = Field(description="The action that was performed")
36
37
  description: StrictStr = Field(description="A brief description of the transaction")
37
38
  order: Optional[ListBalanceTransactions200ResponseTransactionsInnerOrder] = None
38
- __properties: ClassVar[List[str]] = ["created_at", "amount", "balance", "action", "description", "order"]
39
+ __properties: ClassVar[List[str]] = ["created_at", "amount", "currency_code", "balance", "action", "description", "order"]
39
40
 
40
41
  model_config = ConfigDict(
41
42
  populate_by_name=True,
@@ -93,6 +94,7 @@ class ListBalanceTransactions200ResponseTransactionsInner(BaseModel):
93
94
  _obj = cls.model_validate({
94
95
  "created_at": obj.get("created_at"),
95
96
  "amount": obj.get("amount"),
97
+ "currency_code": obj.get("currency_code"),
96
98
  "balance": obj.get("balance"),
97
99
  "action": obj.get("action"),
98
100
  "description": obj.get("description"),