tremendous-python 2.2.3__tar.gz → 3.2.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.
- tremendous_python-3.2.0/LICENSE +21 -0
- tremendous_python-3.2.0/PKG-INFO +15 -0
- tremendous_python-3.2.0/README.md +92 -0
- tremendous_python-3.2.0/pyproject.toml +69 -0
- {tremendous-python-2.2.3 → tremendous_python-3.2.0}/setup.cfg +1 -1
- tremendous_python-3.2.0/setup.py +32 -0
- tremendous_python-3.2.0/test/test_campaigns.py +31 -0
- tremendous_python-3.2.0/test/test_funding_sources.py +21 -0
- tremendous_python-3.2.0/test/test_invoices.py +22 -0
- tremendous_python-3.2.0/test/test_members.py +22 -0
- tremendous_python-3.2.0/test/test_orders.py +81 -0
- tremendous_python-3.2.0/test/test_products.py +30 -0
- tremendous_python-3.2.0/tremendous/__init__.py +172 -0
- tremendous_python-3.2.0/tremendous/api/__init__.py +5 -0
- tremendous_python-3.2.0/tremendous/api/tremendous_api.py +12716 -0
- tremendous_python-3.2.0/tremendous/api_client.py +759 -0
- tremendous_python-3.2.0/tremendous/api_response.py +21 -0
- tremendous_python-3.2.0/tremendous/configuration.py +452 -0
- tremendous_python-3.2.0/tremendous/exceptions.py +200 -0
- tremendous_python-3.2.0/tremendous/models/__init__.py +155 -0
- tremendous_python-3.2.0/tremendous/models/balance_transaction.py +97 -0
- tremendous_python-3.2.0/tremendous/models/campaign.py +124 -0
- tremendous_python-3.2.0/tremendous/models/campaign_base.py +124 -0
- tremendous_python-3.2.0/tremendous/models/create_api_key200_response.py +88 -0
- tremendous_python-3.2.0/tremendous/models/create_campaign201_response.py +92 -0
- tremendous_python-3.2.0/tremendous/models/create_campaign_request.py +110 -0
- tremendous_python-3.2.0/tremendous/models/create_invoice.py +102 -0
- tremendous_python-3.2.0/tremendous/models/create_invoice200_response.py +92 -0
- tremendous_python-3.2.0/tremendous/models/create_invoice_request.py +102 -0
- tremendous_python-3.2.0/tremendous/models/create_member.py +90 -0
- tremendous_python-3.2.0/tremendous/models/create_member200_response.py +92 -0
- tremendous_python-3.2.0/tremendous/models/create_member_request.py +90 -0
- tremendous_python-3.2.0/tremendous/models/create_order200_response.py +92 -0
- tremendous_python-3.2.0/tremendous/models/create_order200_response_order.py +150 -0
- tremendous_python-3.2.0/tremendous/models/create_order200_response_order_rewards_inner.py +154 -0
- tremendous_python-3.2.0/tremendous/models/create_order200_response_order_rewards_inner_delivery.py +106 -0
- tremendous_python-3.2.0/tremendous/models/create_order201_response.py +92 -0
- tremendous_python-3.2.0/tremendous/models/create_order_request.py +105 -0
- tremendous_python-3.2.0/tremendous/models/create_order_request_payment.py +88 -0
- tremendous_python-3.2.0/tremendous/models/create_order_request_reward.py +149 -0
- tremendous_python-3.2.0/tremendous/models/create_order_request_reward_custom_fields_inner.py +106 -0
- tremendous_python-3.2.0/tremendous/models/create_order_request_reward_delivery.py +98 -0
- tremendous_python-3.2.0/tremendous/models/create_organization.py +100 -0
- tremendous_python-3.2.0/tremendous/models/create_organization200_response.py +92 -0
- tremendous_python-3.2.0/tremendous/models/create_organization200_response_organization.py +120 -0
- tremendous_python-3.2.0/tremendous/models/create_organization_request.py +100 -0
- tremendous_python-3.2.0/tremendous/models/create_organization_request_copy_settings.py +102 -0
- tremendous_python-3.2.0/tremendous/models/create_public_key.py +88 -0
- tremendous_python-3.2.0/tremendous/models/create_public_key200_response.py +92 -0
- tremendous_python-3.2.0/tremendous/models/create_public_key_request.py +88 -0
- tremendous_python-3.2.0/tremendous/models/create_webhook200_response.py +92 -0
- tremendous_python-3.2.0/tremendous/models/create_webhook_request.py +88 -0
- tremendous_python-3.2.0/tremendous/models/currency_codes.py +152 -0
- tremendous_python-3.2.0/tremendous/models/custom_field.py +110 -0
- tremendous_python-3.2.0/tremendous/models/delivery_details.py +106 -0
- tremendous_python-3.2.0/tremendous/models/delivery_details_with_link.py +110 -0
- tremendous_python-3.2.0/tremendous/models/delivery_method.py +39 -0
- tremendous_python-3.2.0/tremendous/models/delivery_status.py +40 -0
- tremendous_python-3.2.0/tremendous/models/error_model.py +92 -0
- tremendous_python-3.2.0/tremendous/models/funding_source.py +125 -0
- tremendous_python-3.2.0/tremendous/models/generate_reward_link200_response.py +92 -0
- tremendous_python-3.2.0/tremendous/models/generate_reward_link200_response_reward.py +101 -0
- tremendous_python-3.2.0/tremendous/models/generate_reward_link403_response.py +92 -0
- tremendous_python-3.2.0/tremendous/models/generate_reward_token200_response.py +92 -0
- tremendous_python-3.2.0/tremendous/models/generate_reward_token200_response_reward.py +104 -0
- tremendous_python-3.2.0/tremendous/models/get_funding_source200_response.py +92 -0
- tremendous_python-3.2.0/tremendous/models/get_member200_response.py +92 -0
- tremendous_python-3.2.0/tremendous/models/get_member200_response_member.py +133 -0
- tremendous_python-3.2.0/tremendous/models/get_member200_response_member_events_inner.py +106 -0
- tremendous_python-3.2.0/tremendous/models/get_organization200_response.py +92 -0
- tremendous_python-3.2.0/tremendous/models/get_product_response.py +92 -0
- tremendous_python-3.2.0/tremendous/models/get_reward200_response.py +92 -0
- tremendous_python-3.2.0/tremendous/models/invoice.py +121 -0
- tremendous_python-3.2.0/tremendous/models/list_balance_transactions200_response.py +96 -0
- tremendous_python-3.2.0/tremendous/models/list_balance_transactions200_response_invoices_inner.py +97 -0
- tremendous_python-3.2.0/tremendous/models/list_campaigns200_response.py +96 -0
- tremendous_python-3.2.0/tremendous/models/list_campaigns200_response_campaigns_inner.py +122 -0
- tremendous_python-3.2.0/tremendous/models/list_campaigns200_response_campaigns_inner_email_style.py +118 -0
- tremendous_python-3.2.0/tremendous/models/list_campaigns200_response_campaigns_inner_webpage_style.py +118 -0
- tremendous_python-3.2.0/tremendous/models/list_fields200_response.py +96 -0
- tremendous_python-3.2.0/tremendous/models/list_fields200_response_fields_inner.py +109 -0
- tremendous_python-3.2.0/tremendous/models/list_forex_response.py +88 -0
- tremendous_python-3.2.0/tremendous/models/list_funding_sources200_response.py +96 -0
- tremendous_python-3.2.0/tremendous/models/list_funding_sources200_response_funding_sources_inner.py +123 -0
- tremendous_python-3.2.0/tremendous/models/list_funding_sources200_response_funding_sources_inner_meta.py +172 -0
- tremendous_python-3.2.0/tremendous/models/list_invoices200_response.py +98 -0
- tremendous_python-3.2.0/tremendous/models/list_invoices200_response_invoices_inner.py +121 -0
- tremendous_python-3.2.0/tremendous/models/list_members200_response.py +96 -0
- tremendous_python-3.2.0/tremendous/models/list_members200_response_members_inner.py +133 -0
- tremendous_python-3.2.0/tremendous/models/list_orders200_response.py +98 -0
- tremendous_python-3.2.0/tremendous/models/list_orders200_response_orders_inner.py +146 -0
- tremendous_python-3.2.0/tremendous/models/list_orders200_response_orders_inner_payment.py +111 -0
- tremendous_python-3.2.0/tremendous/models/list_orders200_response_orders_inner_payment_refund.py +89 -0
- tremendous_python-3.2.0/tremendous/models/list_organizations200_response.py +96 -0
- tremendous_python-3.2.0/tremendous/models/list_organizations200_response_organizations_inner.py +118 -0
- tremendous_python-3.2.0/tremendous/models/list_products_response.py +96 -0
- tremendous_python-3.2.0/tremendous/models/list_products_response_products_inner.py +151 -0
- tremendous_python-3.2.0/tremendous/models/list_products_response_products_inner_countries_inner.py +88 -0
- tremendous_python-3.2.0/tremendous/models/list_products_response_products_inner_images_inner.py +97 -0
- tremendous_python-3.2.0/tremendous/models/list_products_response_products_inner_skus_inner.py +91 -0
- tremendous_python-3.2.0/tremendous/models/list_rewards200_response.py +98 -0
- tremendous_python-3.2.0/tremendous/models/list_rewards200_response_rewards_inner.py +154 -0
- tremendous_python-3.2.0/tremendous/models/list_rewards200_response_rewards_inner_custom_fields_inner.py +108 -0
- tremendous_python-3.2.0/tremendous/models/list_rewards200_response_rewards_inner_delivery.py +104 -0
- tremendous_python-3.2.0/tremendous/models/list_rewards200_response_rewards_inner_recipient.py +92 -0
- tremendous_python-3.2.0/tremendous/models/list_rewards200_response_rewards_inner_value.py +97 -0
- tremendous_python-3.2.0/tremendous/models/list_rewards401_response.py +92 -0
- tremendous_python-3.2.0/tremendous/models/list_rewards401_response_errors.py +90 -0
- tremendous_python-3.2.0/tremendous/models/list_rewards429_response.py +92 -0
- tremendous_python-3.2.0/tremendous/models/list_roles200_response.py +96 -0
- tremendous_python-3.2.0/tremendous/models/list_roles200_response_roles_inner.py +100 -0
- tremendous_python-3.2.0/tremendous/models/list_webhook_events200_response.py +88 -0
- tremendous_python-3.2.0/tremendous/models/list_webhooks200_response.py +96 -0
- tremendous_python-3.2.0/tremendous/models/list_webhooks200_response_webhooks_inner.py +108 -0
- tremendous_python-3.2.0/tremendous/models/member.py +141 -0
- tremendous_python-3.2.0/tremendous/models/member_base.py +127 -0
- tremendous_python-3.2.0/tremendous/models/member_with_events.py +139 -0
- tremendous_python-3.2.0/tremendous/models/member_without_events.py +141 -0
- tremendous_python-3.2.0/tremendous/models/model_field.py +111 -0
- tremendous_python-3.2.0/tremendous/models/order.py +156 -0
- tremendous_python-3.2.0/tremendous/models/order_base.py +150 -0
- tremendous_python-3.2.0/tremendous/models/order_base_payment.py +117 -0
- tremendous_python-3.2.0/tremendous/models/order_for_create.py +105 -0
- tremendous_python-3.2.0/tremendous/models/order_for_create_reward.py +181 -0
- tremendous_python-3.2.0/tremendous/models/order_status.py +42 -0
- tremendous_python-3.2.0/tremendous/models/order_with_link.py +160 -0
- tremendous_python-3.2.0/tremendous/models/order_with_link_rewards_inner.py +179 -0
- tremendous_python-3.2.0/tremendous/models/order_without_link.py +156 -0
- tremendous_python-3.2.0/tremendous/models/order_without_link_reward.py +179 -0
- tremendous_python-3.2.0/tremendous/models/organization.py +124 -0
- tremendous_python-3.2.0/tremendous/models/payment_details.py +117 -0
- tremendous_python-3.2.0/tremendous/models/payment_details_refund.py +91 -0
- tremendous_python-3.2.0/tremendous/models/product.py +153 -0
- tremendous_python-3.2.0/tremendous/models/public_key.py +111 -0
- tremendous_python-3.2.0/tremendous/models/public_keys_response.py +96 -0
- tremendous_python-3.2.0/tremendous/models/public_keys_response_public_keys_inner.py +109 -0
- tremendous_python-3.2.0/tremendous/models/recipient.py +92 -0
- tremendous_python-3.2.0/tremendous/models/refund_details.py +91 -0
- tremendous_python-3.2.0/tremendous/models/resend_reward422_response.py +92 -0
- tremendous_python-3.2.0/tremendous/models/reward.py +179 -0
- tremendous_python-3.2.0/tremendous/models/reward_base.py +173 -0
- tremendous_python-3.2.0/tremendous/models/reward_base_custom_fields_inner.py +110 -0
- tremendous_python-3.2.0/tremendous/models/reward_for_order_create.py +181 -0
- tremendous_python-3.2.0/tremendous/models/reward_link.py +105 -0
- tremendous_python-3.2.0/tremendous/models/reward_token.py +110 -0
- tremendous_python-3.2.0/tremendous/models/reward_value.py +97 -0
- tremendous_python-3.2.0/tremendous/models/reward_with_link.py +179 -0
- tremendous_python-3.2.0/tremendous/models/reward_with_link_delivery.py +110 -0
- tremendous_python-3.2.0/tremendous/models/reward_without_link.py +179 -0
- tremendous_python-3.2.0/tremendous/models/reward_without_link_delivery.py +106 -0
- tremendous_python-3.2.0/tremendous/models/role.py +102 -0
- tremendous_python-3.2.0/tremendous/models/simulate_webhook_request.py +88 -0
- tremendous_python-3.2.0/tremendous/models/test_public_key.py +88 -0
- tremendous_python-3.2.0/tremendous/models/test_public_key_request.py +88 -0
- tremendous_python-3.2.0/tremendous/models/update_campaign.py +124 -0
- tremendous_python-3.2.0/tremendous/models/update_campaign_request.py +110 -0
- tremendous_python-3.2.0/tremendous/models/webhook.py +112 -0
- tremendous_python-3.2.0/tremendous/models/webhook_post.py +88 -0
- tremendous_python-3.2.0/tremendous/py.typed +0 -0
- tremendous_python-3.2.0/tremendous/rest.py +258 -0
- tremendous_python-3.2.0/tremendous/version.py +1 -0
- tremendous_python-3.2.0/tremendous_python.egg-info/PKG-INFO +15 -0
- tremendous_python-3.2.0/tremendous_python.egg-info/SOURCES.txt +165 -0
- tremendous_python-3.2.0/tremendous_python.egg-info/requires.txt +4 -0
- tremendous-python-2.2.3/LICENSE.txt +0 -20
- tremendous-python-2.2.3/PKG-INFO +0 -17
- tremendous-python-2.2.3/README.md +0 -81
- tremendous-python-2.2.3/setup.py +0 -29
- tremendous-python-2.2.3/tremendous/__init__.py +0 -4
- tremendous-python-2.2.3/tremendous/campaign.py +0 -10
- tremendous-python-2.2.3/tremendous/client.py +0 -23
- tremendous-python-2.2.3/tremendous/funding_source.py +0 -9
- tremendous-python-2.2.3/tremendous/http.py +0 -109
- tremendous-python-2.2.3/tremendous/member.py +0 -12
- tremendous-python-2.2.3/tremendous/order.py +0 -10
- tremendous-python-2.2.3/tremendous/organization.py +0 -12
- tremendous-python-2.2.3/tremendous/product.py +0 -7
- tremendous-python-2.2.3/tremendous/reward.py +0 -7
- tremendous-python-2.2.3/tremendous/version.py +0 -1
- tremendous-python-2.2.3/tremendous/webhook.py +0 -19
- tremendous-python-2.2.3/tremendous_python.egg-info/PKG-INFO +0 -17
- tremendous-python-2.2.3/tremendous_python.egg-info/SOURCES.txt +0 -22
- tremendous-python-2.2.3/tremendous_python.egg-info/not-zip-safe +0 -1
- tremendous-python-2.2.3/tremendous_python.egg-info/requires.txt +0 -1
- {tremendous-python-2.2.3 → tremendous_python-3.2.0}/tremendous_python.egg-info/dependency_links.txt +0 -0
- {tremendous-python-2.2.3 → tremendous_python-3.2.0}/tremendous_python.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2018 Tremendous, Inc. <developers@tremendous.com>
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: tremendous-python
|
|
3
|
+
Version: 3.2.0
|
|
4
|
+
Summary: Python API client for Tremendous
|
|
5
|
+
Home-page: https://github.com/tremendous-rewards/tremendous-python
|
|
6
|
+
Author: Tremendous
|
|
7
|
+
Author-email: developers@tremendous.com
|
|
8
|
+
Keywords: Api,Gift cards,Rewards,Incentives,Tremendous
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Requires-Dist: urllib3<2.1.0,>=1.25.3
|
|
11
|
+
Requires-Dist: python-dateutil
|
|
12
|
+
Requires-Dist: pydantic>=2
|
|
13
|
+
Requires-Dist: typing-extensions>=4.7.1
|
|
14
|
+
|
|
15
|
+
Python API client for Tremendous
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Tremendous
|
|
2
|
+
|
|
3
|
+
A Python client library for the [Tremendous API][docs].
|
|
4
|
+
|
|
5
|
+
> [!NOTE]
|
|
6
|
+
> This branch includes the v3 version of the Tremendous Python client, a new version based
|
|
7
|
+
> on our [API schema][ref] docs. If you are using the v2 versions, please check our
|
|
8
|
+
> [`UPGRADING`](UPGRADING.md) guide
|
|
9
|
+
|
|
10
|
+
## Installation
|
|
11
|
+
|
|
12
|
+
```sh
|
|
13
|
+
$ pip install tremendous-python
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Getting started
|
|
17
|
+
|
|
18
|
+
All API requests require an access token. A sandbox access token is assigned upon signup through the [Tremendous Sandbox Environment][docs]. Once you are ready to move to production, you will be assigned a production access token.
|
|
19
|
+
|
|
20
|
+
### Authentication
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
```py
|
|
24
|
+
from tremendous import Configuration, ApiClient, TremendousApi
|
|
25
|
+
|
|
26
|
+
# you can use `Configuration.Environment["production"]` when ready to use our production environment.
|
|
27
|
+
configuration = Configuration(server_index=Configuration.Environment["testflight"], access_token="[SANDBOX_ACCESS_TOKEN]")
|
|
28
|
+
|
|
29
|
+
api = ApiClient(configuration)
|
|
30
|
+
client = TremendousApi(api)
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Examples
|
|
34
|
+
|
|
35
|
+
Submitting an order:
|
|
36
|
+
|
|
37
|
+
```py
|
|
38
|
+
from tremendous import CreateOrderRequest
|
|
39
|
+
|
|
40
|
+
request = CreateOrderRequest(
|
|
41
|
+
payment = {
|
|
42
|
+
"funding_source_id": "balance"
|
|
43
|
+
},
|
|
44
|
+
reward = {
|
|
45
|
+
"campaign_id": "CAMPAIGN_ID",
|
|
46
|
+
"delivery": {
|
|
47
|
+
"method": "EMAIL"
|
|
48
|
+
},
|
|
49
|
+
"recipient": {
|
|
50
|
+
"email": "sarah@tremendous.com",
|
|
51
|
+
"name": "Sarah Smith"
|
|
52
|
+
},
|
|
53
|
+
"value": {
|
|
54
|
+
"denomination": 20,
|
|
55
|
+
"currency_code": "USD"
|
|
56
|
+
}
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
response = client.create_order(request)
|
|
60
|
+
print("Order created! ID: %s" % response.order.id)
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Retrieving an Order and a Reward
|
|
64
|
+
|
|
65
|
+
```py
|
|
66
|
+
order = client.get_order("[ORDER_ID]").order
|
|
67
|
+
reward = client.get_reward("[REWARD_ID]").reward
|
|
68
|
+
|
|
69
|
+
print("The order status is %s" % order.status)
|
|
70
|
+
print("The reward was delivered to %s" % reward.recipient.email)
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Listing products:
|
|
74
|
+
|
|
75
|
+
```py
|
|
76
|
+
products = api_client.list_products().products
|
|
77
|
+
|
|
78
|
+
for product in products:
|
|
79
|
+
print(product.name)
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Listing funding sources:
|
|
83
|
+
|
|
84
|
+
```py
|
|
85
|
+
funding_sources = client.funding_sources().funding_sources
|
|
86
|
+
|
|
87
|
+
for funding_source in funding_sources:
|
|
88
|
+
print("* %s => %s" % (funding_source.method, funding_source.id))
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
[ref]: https://developers.tremendous.com/reference
|
|
92
|
+
[docs]: https://tremendous.com/docs
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
[tool.poetry]
|
|
2
|
+
name = "tremendous"
|
|
3
|
+
version = "3.2.0"
|
|
4
|
+
long_description="Python API client for Tremendous"
|
|
5
|
+
description = "Python API client for Tremendous"
|
|
6
|
+
authors = ["API Support <developers@tremendous.com>"]
|
|
7
|
+
license = "MIT"
|
|
8
|
+
readme = "README.md"
|
|
9
|
+
repository = "https://github.com/tremendous-rewards/tremendous-python"
|
|
10
|
+
keywords = ["Api", "Gift cards", "Rewards", "Incentives", "Tremendous"]
|
|
11
|
+
include = ["tremendous/py.typed"]
|
|
12
|
+
|
|
13
|
+
[tool.poetry.dependencies]
|
|
14
|
+
python = "^3.7"
|
|
15
|
+
|
|
16
|
+
urllib3 = ">= 1.25.3"
|
|
17
|
+
python-dateutil = ">=2.8.2"
|
|
18
|
+
pydantic = ">=2"
|
|
19
|
+
typing-extensions = ">=4.7.1"
|
|
20
|
+
|
|
21
|
+
[tool.poetry.dev-dependencies]
|
|
22
|
+
pytest = ">=7.2.1"
|
|
23
|
+
types-python-dateutil = ">=2.8.19.14"
|
|
24
|
+
mypy = "1.4.1"
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
[build-system]
|
|
28
|
+
requires = ["setuptools"]
|
|
29
|
+
build-backend = "setuptools.build_meta"
|
|
30
|
+
|
|
31
|
+
[tool.pylint.'MESSAGES CONTROL']
|
|
32
|
+
extension-pkg-whitelist = "pydantic"
|
|
33
|
+
|
|
34
|
+
[tool.mypy]
|
|
35
|
+
files = [
|
|
36
|
+
"tremendous",
|
|
37
|
+
"test", # hand-written tests
|
|
38
|
+
]
|
|
39
|
+
# TODO: enable "strict" once all these individual checks are passing
|
|
40
|
+
# strict = true
|
|
41
|
+
|
|
42
|
+
# List from: https://mypy.readthedocs.io/en/stable/existing_code.html#introduce-stricter-options
|
|
43
|
+
warn_unused_configs = true
|
|
44
|
+
warn_redundant_casts = true
|
|
45
|
+
warn_unused_ignores = true
|
|
46
|
+
|
|
47
|
+
## Getting these passing should be easy
|
|
48
|
+
strict_equality = true
|
|
49
|
+
strict_concatenate = true
|
|
50
|
+
|
|
51
|
+
## Strongly recommend enabling this one as soon as you can
|
|
52
|
+
check_untyped_defs = true
|
|
53
|
+
|
|
54
|
+
## These shouldn't be too much additional work, but may be tricky to
|
|
55
|
+
## get passing if you use a lot of untyped libraries
|
|
56
|
+
disallow_subclassing_any = true
|
|
57
|
+
disallow_untyped_decorators = true
|
|
58
|
+
disallow_any_generics = true
|
|
59
|
+
|
|
60
|
+
### These next few are various gradations of forcing use of type annotations
|
|
61
|
+
#disallow_untyped_calls = true
|
|
62
|
+
#disallow_incomplete_defs = true
|
|
63
|
+
#disallow_untyped_defs = true
|
|
64
|
+
#
|
|
65
|
+
### This one isn't too hard to get passing, but return on investment is lower
|
|
66
|
+
#no_implicit_reexport = true
|
|
67
|
+
#
|
|
68
|
+
### This one can be tricky to get passing if you use a lot of untyped libraries
|
|
69
|
+
#warn_return_any = true
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
import os
|
|
3
|
+
|
|
4
|
+
from setuptools import setup, find_packages
|
|
5
|
+
|
|
6
|
+
PYTHON_REQUIRES = ">=3.7"
|
|
7
|
+
|
|
8
|
+
data = {}
|
|
9
|
+
root = os.path.abspath(os.path.dirname(__file__))
|
|
10
|
+
|
|
11
|
+
with open(os.path.join(root, "tremendous", "version.py")) as f:
|
|
12
|
+
exec(f.read(), data)
|
|
13
|
+
|
|
14
|
+
setup(
|
|
15
|
+
name="tremendous-python",
|
|
16
|
+
version=data["__version__"],
|
|
17
|
+
description="Python API client for Tremendous",
|
|
18
|
+
long_description="Python API client for Tremendous",
|
|
19
|
+
author="Tremendous",
|
|
20
|
+
author_email="developers@tremendous.com",
|
|
21
|
+
url="https://github.com/tremendous-rewards/tremendous-python",
|
|
22
|
+
keywords=["Api", "Gift cards", "Rewards", "Incentives", "Tremendous"],
|
|
23
|
+
install_requires=[
|
|
24
|
+
"urllib3 >= 1.25.3, < 2.1.0",
|
|
25
|
+
"python-dateutil",
|
|
26
|
+
"pydantic >= 2",
|
|
27
|
+
"typing-extensions >= 4.7.1",
|
|
28
|
+
],
|
|
29
|
+
packages=find_packages(exclude=["test"]),
|
|
30
|
+
include_package_data=True,
|
|
31
|
+
package_data={'README': ['README.md'], "tremendous": ["py.typed"]},
|
|
32
|
+
)
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import os
|
|
2
|
+
from tremendous import Configuration, ApiClient, TremendousApi
|
|
3
|
+
|
|
4
|
+
CAMPAIGN_ID = os.environ["TEST_CAMPAIGN_ID"]
|
|
5
|
+
|
|
6
|
+
class TestCampaigns:
|
|
7
|
+
configuration = Configuration(
|
|
8
|
+
server_index=Configuration.Environment["testflight"],
|
|
9
|
+
access_token = os.environ["SANDBOX_API_TOKEN"]
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
api = ApiClient(configuration)
|
|
13
|
+
client = TremendousApi(api)
|
|
14
|
+
|
|
15
|
+
def test_list_campaigns(self):
|
|
16
|
+
campaigns = self.client.list_campaigns().campaigns
|
|
17
|
+
|
|
18
|
+
assert len(campaigns) > 0
|
|
19
|
+
|
|
20
|
+
for campaign in campaigns[:10]:
|
|
21
|
+
assert hasattr(campaign, "id")
|
|
22
|
+
assert hasattr(campaign, "name")
|
|
23
|
+
assert hasattr(campaign, "description")
|
|
24
|
+
assert hasattr(campaign, "products")
|
|
25
|
+
|
|
26
|
+
def test_get_campaign(self):
|
|
27
|
+
campaign = self.client.get_campaign(CAMPAIGN_ID).campaign
|
|
28
|
+
|
|
29
|
+
assert campaign.id == CAMPAIGN_ID
|
|
30
|
+
assert len(campaign.products) == 3
|
|
31
|
+
assert campaign.name == "Default Campaign"
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import os
|
|
2
|
+
from tremendous import Configuration, ApiClient, TremendousApi
|
|
3
|
+
|
|
4
|
+
class TestFundingSources:
|
|
5
|
+
configuration = Configuration(
|
|
6
|
+
server_index=Configuration.Environment["testflight"],
|
|
7
|
+
access_token = os.environ["SANDBOX_API_TOKEN"]
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
api = ApiClient(configuration)
|
|
11
|
+
client = TremendousApi(api)
|
|
12
|
+
|
|
13
|
+
def test_list_funding_sources(self):
|
|
14
|
+
funding_sources = self.client.list_funding_sources().funding_sources
|
|
15
|
+
|
|
16
|
+
assert len(funding_sources) > 0
|
|
17
|
+
|
|
18
|
+
for funding_source in funding_sources:
|
|
19
|
+
assert hasattr(funding_source, "id")
|
|
20
|
+
assert hasattr(funding_source, "method")
|
|
21
|
+
assert hasattr(funding_source, "meta")
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import os
|
|
2
|
+
from tremendous import Configuration, ApiClient, TremendousApi
|
|
3
|
+
|
|
4
|
+
class TestInvoices:
|
|
5
|
+
configuration = Configuration(
|
|
6
|
+
server_index=Configuration.Environment["testflight"],
|
|
7
|
+
access_token = os.environ["SANDBOX_API_TOKEN"]
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
api = ApiClient(configuration)
|
|
11
|
+
client = TremendousApi(api)
|
|
12
|
+
|
|
13
|
+
def test_list_invoices(self):
|
|
14
|
+
invoices = self.client.list_invoices().invoices
|
|
15
|
+
|
|
16
|
+
assert len(invoices) > 0
|
|
17
|
+
|
|
18
|
+
for invoice in invoices:
|
|
19
|
+
assert hasattr(invoice, "id")
|
|
20
|
+
assert hasattr(invoice, "po_number")
|
|
21
|
+
assert hasattr(invoice, "amount")
|
|
22
|
+
assert hasattr(invoice, "created_at")
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import os
|
|
2
|
+
from tremendous import Configuration, ApiClient, TremendousApi
|
|
3
|
+
|
|
4
|
+
class TestMembers:
|
|
5
|
+
configuration = Configuration(
|
|
6
|
+
server_index=Configuration.Environment["testflight"],
|
|
7
|
+
access_token = os.environ["SANDBOX_API_TOKEN"]
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
api = ApiClient(configuration)
|
|
11
|
+
client = TremendousApi(api)
|
|
12
|
+
|
|
13
|
+
def test_list_members(self):
|
|
14
|
+
members = self.client.list_members().members
|
|
15
|
+
|
|
16
|
+
assert len(members) > 0
|
|
17
|
+
|
|
18
|
+
for member in members:
|
|
19
|
+
assert hasattr(member, "id")
|
|
20
|
+
assert hasattr(member, "email")
|
|
21
|
+
assert hasattr(member, "name")
|
|
22
|
+
assert hasattr(member, "role")
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import json
|
|
2
|
+
import os
|
|
3
|
+
|
|
4
|
+
import pytest
|
|
5
|
+
from tremendous import Configuration, ApiClient, TremendousApi, CreateOrderRequest
|
|
6
|
+
from tremendous.exceptions import BadRequestException
|
|
7
|
+
|
|
8
|
+
CAMPAIGN_ID = os.environ["TEST_CAMPAIGN_ID"]
|
|
9
|
+
RECIPIENT_EMAIL = os.environ["TEST_RECIPIENT_EMAIL"]
|
|
10
|
+
|
|
11
|
+
class TestOrders:
|
|
12
|
+
configuration = Configuration(
|
|
13
|
+
server_index=Configuration.Environment["testflight"],
|
|
14
|
+
access_token = os.environ["SANDBOX_API_TOKEN"]
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
api = ApiClient(configuration)
|
|
18
|
+
client = TremendousApi(api)
|
|
19
|
+
|
|
20
|
+
def test_list_orders(self):
|
|
21
|
+
orders = self.client.list_orders().orders
|
|
22
|
+
|
|
23
|
+
assert len(orders) > 0
|
|
24
|
+
|
|
25
|
+
for campaign in orders[:10]:
|
|
26
|
+
assert hasattr(campaign, "id")
|
|
27
|
+
assert hasattr(campaign, "created_at")
|
|
28
|
+
assert hasattr(campaign, "payment")
|
|
29
|
+
|
|
30
|
+
def test_submit_order(self):
|
|
31
|
+
request = CreateOrderRequest(
|
|
32
|
+
payment = {
|
|
33
|
+
"funding_source_id": "balance"
|
|
34
|
+
},
|
|
35
|
+
reward = {
|
|
36
|
+
"campaign_id": CAMPAIGN_ID,
|
|
37
|
+
"delivery": {
|
|
38
|
+
"method": "EMAIL"
|
|
39
|
+
},
|
|
40
|
+
"recipient": {
|
|
41
|
+
"name": "Recipient Name",
|
|
42
|
+
"email": RECIPIENT_EMAIL
|
|
43
|
+
},
|
|
44
|
+
"value": {
|
|
45
|
+
"denomination": 5.0,
|
|
46
|
+
"currency_code": "USD"
|
|
47
|
+
}
|
|
48
|
+
})
|
|
49
|
+
|
|
50
|
+
data = self.client.create_order(request)
|
|
51
|
+
|
|
52
|
+
assert data.order.id != None
|
|
53
|
+
assert data.order.campaign_id == CAMPAIGN_ID
|
|
54
|
+
assert data.order.status == "EXECUTED"
|
|
55
|
+
|
|
56
|
+
def test_raise_validation_errors(self):
|
|
57
|
+
with pytest.raises(BadRequestException) as e_info:
|
|
58
|
+
request = CreateOrderRequest(
|
|
59
|
+
payment = {
|
|
60
|
+
"funding_source_id": "NOT A VALID FUNDING SOURCE ID"
|
|
61
|
+
},
|
|
62
|
+
reward = {
|
|
63
|
+
"campaign_id": CAMPAIGN_ID,
|
|
64
|
+
"delivery": {
|
|
65
|
+
"method": "EMAIL"
|
|
66
|
+
},
|
|
67
|
+
"recipient": {
|
|
68
|
+
"name": "Recipient Name",
|
|
69
|
+
"email": RECIPIENT_EMAIL
|
|
70
|
+
},
|
|
71
|
+
"value": {
|
|
72
|
+
"denomination": 5.0,
|
|
73
|
+
"currency_code": "USD"
|
|
74
|
+
}
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
self.client.create_order(request)
|
|
78
|
+
|
|
79
|
+
response = json.loads(e_info.value.body)
|
|
80
|
+
assert "message" in response["errors"]
|
|
81
|
+
assert "payload" in response["errors"]
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import os
|
|
2
|
+
from tremendous import Configuration, ApiClient, TremendousApi
|
|
3
|
+
|
|
4
|
+
PRODUCT_ID = os.environ["TEST_PRODUCT_ID"]
|
|
5
|
+
|
|
6
|
+
class TestProducts:
|
|
7
|
+
configuration = Configuration(
|
|
8
|
+
server_index=Configuration.Environment["testflight"],
|
|
9
|
+
access_token = os.environ["SANDBOX_API_TOKEN"]
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
api = ApiClient(configuration)
|
|
13
|
+
client = TremendousApi(api)
|
|
14
|
+
|
|
15
|
+
def test_list_products(self):
|
|
16
|
+
products = self.client.list_products().products
|
|
17
|
+
|
|
18
|
+
assert len(products) > 0
|
|
19
|
+
|
|
20
|
+
for product in products[:10]:
|
|
21
|
+
assert hasattr(product, "id")
|
|
22
|
+
assert hasattr(product, "name")
|
|
23
|
+
assert hasattr(product, "currency_codes")
|
|
24
|
+
|
|
25
|
+
def test_get_product(self):
|
|
26
|
+
product = self.client.get_product(PRODUCT_ID).product
|
|
27
|
+
|
|
28
|
+
assert product.id == PRODUCT_ID
|
|
29
|
+
assert hasattr(product, "name")
|
|
30
|
+
assert hasattr(product, "currency_codes")
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
|
|
3
|
+
# flake8: noqa
|
|
4
|
+
|
|
5
|
+
"""
|
|
6
|
+
API Endpoints
|
|
7
|
+
|
|
8
|
+
Deliver monetary rewards and incentives to employees, customers, survey participants, and more through the Tremendous API. For organizational tasks, like managing your organization and it's members within Tremendous, please see the Tremendous Organizational API.
|
|
9
|
+
|
|
10
|
+
The version of the OpenAPI document: 2
|
|
11
|
+
Contact: developers@tremendous.com
|
|
12
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
|
13
|
+
|
|
14
|
+
Do not edit the class manually.
|
|
15
|
+
""" # noqa: E501
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
from tremendous.version import __version__
|
|
19
|
+
|
|
20
|
+
# import apis into sdk package
|
|
21
|
+
from tremendous.api.tremendous_api import TremendousApi
|
|
22
|
+
|
|
23
|
+
# import ApiClient
|
|
24
|
+
from tremendous.api_response import ApiResponse
|
|
25
|
+
from tremendous.api_client import ApiClient
|
|
26
|
+
from tremendous.configuration import Configuration
|
|
27
|
+
from tremendous.exceptions import OpenApiException
|
|
28
|
+
from tremendous.exceptions import ApiTypeError
|
|
29
|
+
from tremendous.exceptions import ApiValueError
|
|
30
|
+
from tremendous.exceptions import ApiKeyError
|
|
31
|
+
from tremendous.exceptions import ApiAttributeError
|
|
32
|
+
from tremendous.exceptions import ApiException
|
|
33
|
+
|
|
34
|
+
# import models into sdk package
|
|
35
|
+
from tremendous.models.balance_transaction import BalanceTransaction
|
|
36
|
+
from tremendous.models.campaign import Campaign
|
|
37
|
+
from tremendous.models.campaign_base import CampaignBase
|
|
38
|
+
from tremendous.models.create_api_key200_response import CreateApiKey200Response
|
|
39
|
+
from tremendous.models.create_campaign201_response import CreateCampaign201Response
|
|
40
|
+
from tremendous.models.create_campaign_request import CreateCampaignRequest
|
|
41
|
+
from tremendous.models.create_invoice import CreateInvoice
|
|
42
|
+
from tremendous.models.create_invoice200_response import CreateInvoice200Response
|
|
43
|
+
from tremendous.models.create_invoice_request import CreateInvoiceRequest
|
|
44
|
+
from tremendous.models.create_member import CreateMember
|
|
45
|
+
from tremendous.models.create_member200_response import CreateMember200Response
|
|
46
|
+
from tremendous.models.create_member_request import CreateMemberRequest
|
|
47
|
+
from tremendous.models.create_order200_response import CreateOrder200Response
|
|
48
|
+
from tremendous.models.create_order200_response_order import CreateOrder200ResponseOrder
|
|
49
|
+
from tremendous.models.create_order200_response_order_rewards_inner import CreateOrder200ResponseOrderRewardsInner
|
|
50
|
+
from tremendous.models.create_order200_response_order_rewards_inner_delivery import CreateOrder200ResponseOrderRewardsInnerDelivery
|
|
51
|
+
from tremendous.models.create_order201_response import CreateOrder201Response
|
|
52
|
+
from tremendous.models.create_order_request import CreateOrderRequest
|
|
53
|
+
from tremendous.models.create_order_request_payment import CreateOrderRequestPayment
|
|
54
|
+
from tremendous.models.create_order_request_reward import CreateOrderRequestReward
|
|
55
|
+
from tremendous.models.create_order_request_reward_custom_fields_inner import CreateOrderRequestRewardCustomFieldsInner
|
|
56
|
+
from tremendous.models.create_order_request_reward_delivery import CreateOrderRequestRewardDelivery
|
|
57
|
+
from tremendous.models.create_organization import CreateOrganization
|
|
58
|
+
from tremendous.models.create_organization200_response import CreateOrganization200Response
|
|
59
|
+
from tremendous.models.create_organization200_response_organization import CreateOrganization200ResponseOrganization
|
|
60
|
+
from tremendous.models.create_organization_request import CreateOrganizationRequest
|
|
61
|
+
from tremendous.models.create_organization_request_copy_settings import CreateOrganizationRequestCopySettings
|
|
62
|
+
from tremendous.models.create_public_key import CreatePublicKey
|
|
63
|
+
from tremendous.models.create_public_key200_response import CreatePublicKey200Response
|
|
64
|
+
from tremendous.models.create_public_key_request import CreatePublicKeyRequest
|
|
65
|
+
from tremendous.models.create_webhook200_response import CreateWebhook200Response
|
|
66
|
+
from tremendous.models.create_webhook_request import CreateWebhookRequest
|
|
67
|
+
from tremendous.models.currency_codes import CurrencyCodes
|
|
68
|
+
from tremendous.models.custom_field import CustomField
|
|
69
|
+
from tremendous.models.delivery_details import DeliveryDetails
|
|
70
|
+
from tremendous.models.delivery_details_with_link import DeliveryDetailsWithLink
|
|
71
|
+
from tremendous.models.delivery_method import DeliveryMethod
|
|
72
|
+
from tremendous.models.delivery_status import DeliveryStatus
|
|
73
|
+
from tremendous.models.error_model import ErrorModel
|
|
74
|
+
from tremendous.models.funding_source import FundingSource
|
|
75
|
+
from tremendous.models.generate_reward_link200_response import GenerateRewardLink200Response
|
|
76
|
+
from tremendous.models.generate_reward_link200_response_reward import GenerateRewardLink200ResponseReward
|
|
77
|
+
from tremendous.models.generate_reward_link403_response import GenerateRewardLink403Response
|
|
78
|
+
from tremendous.models.generate_reward_token200_response import GenerateRewardToken200Response
|
|
79
|
+
from tremendous.models.generate_reward_token200_response_reward import GenerateRewardToken200ResponseReward
|
|
80
|
+
from tremendous.models.get_funding_source200_response import GetFundingSource200Response
|
|
81
|
+
from tremendous.models.get_member200_response import GetMember200Response
|
|
82
|
+
from tremendous.models.get_member200_response_member import GetMember200ResponseMember
|
|
83
|
+
from tremendous.models.get_member200_response_member_events_inner import GetMember200ResponseMemberEventsInner
|
|
84
|
+
from tremendous.models.get_organization200_response import GetOrganization200Response
|
|
85
|
+
from tremendous.models.get_product_response import GetProductResponse
|
|
86
|
+
from tremendous.models.get_reward200_response import GetReward200Response
|
|
87
|
+
from tremendous.models.invoice import Invoice
|
|
88
|
+
from tremendous.models.list_balance_transactions200_response import ListBalanceTransactions200Response
|
|
89
|
+
from tremendous.models.list_balance_transactions200_response_invoices_inner import ListBalanceTransactions200ResponseInvoicesInner
|
|
90
|
+
from tremendous.models.list_campaigns200_response import ListCampaigns200Response
|
|
91
|
+
from tremendous.models.list_campaigns200_response_campaigns_inner import ListCampaigns200ResponseCampaignsInner
|
|
92
|
+
from tremendous.models.list_campaigns200_response_campaigns_inner_email_style import ListCampaigns200ResponseCampaignsInnerEmailStyle
|
|
93
|
+
from tremendous.models.list_campaigns200_response_campaigns_inner_webpage_style import ListCampaigns200ResponseCampaignsInnerWebpageStyle
|
|
94
|
+
from tremendous.models.list_fields200_response import ListFields200Response
|
|
95
|
+
from tremendous.models.list_fields200_response_fields_inner import ListFields200ResponseFieldsInner
|
|
96
|
+
from tremendous.models.list_forex_response import ListForexResponse
|
|
97
|
+
from tremendous.models.list_funding_sources200_response import ListFundingSources200Response
|
|
98
|
+
from tremendous.models.list_funding_sources200_response_funding_sources_inner import ListFundingSources200ResponseFundingSourcesInner
|
|
99
|
+
from tremendous.models.list_funding_sources200_response_funding_sources_inner_meta import ListFundingSources200ResponseFundingSourcesInnerMeta
|
|
100
|
+
from tremendous.models.list_invoices200_response import ListInvoices200Response
|
|
101
|
+
from tremendous.models.list_invoices200_response_invoices_inner import ListInvoices200ResponseInvoicesInner
|
|
102
|
+
from tremendous.models.list_members200_response import ListMembers200Response
|
|
103
|
+
from tremendous.models.list_members200_response_members_inner import ListMembers200ResponseMembersInner
|
|
104
|
+
from tremendous.models.list_orders200_response import ListOrders200Response
|
|
105
|
+
from tremendous.models.list_orders200_response_orders_inner import ListOrders200ResponseOrdersInner
|
|
106
|
+
from tremendous.models.list_orders200_response_orders_inner_payment import ListOrders200ResponseOrdersInnerPayment
|
|
107
|
+
from tremendous.models.list_orders200_response_orders_inner_payment_refund import ListOrders200ResponseOrdersInnerPaymentRefund
|
|
108
|
+
from tremendous.models.list_organizations200_response import ListOrganizations200Response
|
|
109
|
+
from tremendous.models.list_organizations200_response_organizations_inner import ListOrganizations200ResponseOrganizationsInner
|
|
110
|
+
from tremendous.models.list_products_response import ListProductsResponse
|
|
111
|
+
from tremendous.models.list_products_response_products_inner import ListProductsResponseProductsInner
|
|
112
|
+
from tremendous.models.list_products_response_products_inner_countries_inner import ListProductsResponseProductsInnerCountriesInner
|
|
113
|
+
from tremendous.models.list_products_response_products_inner_images_inner import ListProductsResponseProductsInnerImagesInner
|
|
114
|
+
from tremendous.models.list_products_response_products_inner_skus_inner import ListProductsResponseProductsInnerSkusInner
|
|
115
|
+
from tremendous.models.list_rewards200_response import ListRewards200Response
|
|
116
|
+
from tremendous.models.list_rewards200_response_rewards_inner import ListRewards200ResponseRewardsInner
|
|
117
|
+
from tremendous.models.list_rewards200_response_rewards_inner_custom_fields_inner import ListRewards200ResponseRewardsInnerCustomFieldsInner
|
|
118
|
+
from tremendous.models.list_rewards200_response_rewards_inner_delivery import ListRewards200ResponseRewardsInnerDelivery
|
|
119
|
+
from tremendous.models.list_rewards200_response_rewards_inner_recipient import ListRewards200ResponseRewardsInnerRecipient
|
|
120
|
+
from tremendous.models.list_rewards200_response_rewards_inner_value import ListRewards200ResponseRewardsInnerValue
|
|
121
|
+
from tremendous.models.list_rewards401_response import ListRewards401Response
|
|
122
|
+
from tremendous.models.list_rewards401_response_errors import ListRewards401ResponseErrors
|
|
123
|
+
from tremendous.models.list_rewards429_response import ListRewards429Response
|
|
124
|
+
from tremendous.models.list_roles200_response import ListRoles200Response
|
|
125
|
+
from tremendous.models.list_roles200_response_roles_inner import ListRoles200ResponseRolesInner
|
|
126
|
+
from tremendous.models.list_webhook_events200_response import ListWebhookEvents200Response
|
|
127
|
+
from tremendous.models.list_webhooks200_response import ListWebhooks200Response
|
|
128
|
+
from tremendous.models.list_webhooks200_response_webhooks_inner import ListWebhooks200ResponseWebhooksInner
|
|
129
|
+
from tremendous.models.member import Member
|
|
130
|
+
from tremendous.models.member_base import MemberBase
|
|
131
|
+
from tremendous.models.member_with_events import MemberWithEvents
|
|
132
|
+
from tremendous.models.member_without_events import MemberWithoutEvents
|
|
133
|
+
from tremendous.models.model_field import ModelField
|
|
134
|
+
from tremendous.models.order import Order
|
|
135
|
+
from tremendous.models.order_base import OrderBase
|
|
136
|
+
from tremendous.models.order_base_payment import OrderBasePayment
|
|
137
|
+
from tremendous.models.order_for_create import OrderForCreate
|
|
138
|
+
from tremendous.models.order_for_create_reward import OrderForCreateReward
|
|
139
|
+
from tremendous.models.order_status import OrderStatus
|
|
140
|
+
from tremendous.models.order_with_link import OrderWithLink
|
|
141
|
+
from tremendous.models.order_with_link_rewards_inner import OrderWithLinkRewardsInner
|
|
142
|
+
from tremendous.models.order_without_link import OrderWithoutLink
|
|
143
|
+
from tremendous.models.order_without_link_reward import OrderWithoutLinkReward
|
|
144
|
+
from tremendous.models.organization import Organization
|
|
145
|
+
from tremendous.models.payment_details import PaymentDetails
|
|
146
|
+
from tremendous.models.payment_details_refund import PaymentDetailsRefund
|
|
147
|
+
from tremendous.models.product import Product
|
|
148
|
+
from tremendous.models.public_key import PublicKey
|
|
149
|
+
from tremendous.models.public_keys_response import PublicKeysResponse
|
|
150
|
+
from tremendous.models.public_keys_response_public_keys_inner import PublicKeysResponsePublicKeysInner
|
|
151
|
+
from tremendous.models.recipient import Recipient
|
|
152
|
+
from tremendous.models.refund_details import RefundDetails
|
|
153
|
+
from tremendous.models.resend_reward422_response import ResendReward422Response
|
|
154
|
+
from tremendous.models.reward import Reward
|
|
155
|
+
from tremendous.models.reward_base import RewardBase
|
|
156
|
+
from tremendous.models.reward_base_custom_fields_inner import RewardBaseCustomFieldsInner
|
|
157
|
+
from tremendous.models.reward_for_order_create import RewardForOrderCreate
|
|
158
|
+
from tremendous.models.reward_link import RewardLink
|
|
159
|
+
from tremendous.models.reward_token import RewardToken
|
|
160
|
+
from tremendous.models.reward_value import RewardValue
|
|
161
|
+
from tremendous.models.reward_with_link import RewardWithLink
|
|
162
|
+
from tremendous.models.reward_with_link_delivery import RewardWithLinkDelivery
|
|
163
|
+
from tremendous.models.reward_without_link import RewardWithoutLink
|
|
164
|
+
from tremendous.models.reward_without_link_delivery import RewardWithoutLinkDelivery
|
|
165
|
+
from tremendous.models.role import Role
|
|
166
|
+
from tremendous.models.simulate_webhook_request import SimulateWebhookRequest
|
|
167
|
+
from tremendous.models.test_public_key import TestPublicKey
|
|
168
|
+
from tremendous.models.test_public_key_request import TestPublicKeyRequest
|
|
169
|
+
from tremendous.models.update_campaign import UpdateCampaign
|
|
170
|
+
from tremendous.models.update_campaign_request import UpdateCampaignRequest
|
|
171
|
+
from tremendous.models.webhook import Webhook
|
|
172
|
+
from tremendous.models.webhook_post import WebhookPost
|