stigg-api-client-v2 0.579.8__py3-none-any.whl → 5.9.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- stigg/_edge_utils.py +58 -0
- stigg/client.py +97 -21
- stigg/generated/__init__.py +777 -44
- stigg/generated/apply_subscription.py +4 -12
- stigg/generated/archive_customer.py +2 -3
- stigg/generated/async_base_client.py +187 -29
- stigg/generated/async_client.py +3701 -587
- stigg/generated/base_client.py +144 -23
- stigg/generated/base_model.py +16 -47
- stigg/generated/cancel_subscription.py +2 -3
- stigg/generated/cancel_subscription_updates.py +1 -4
- stigg/generated/client.py +3703 -585
- stigg/generated/create_payment_session.py +20 -0
- stigg/generated/create_subscription.py +2 -3
- stigg/generated/delegate_subscription_to_customer.py +22 -0
- stigg/generated/detach_customer_payment_method.py +20 -0
- stigg/generated/enums.py +449 -7
- stigg/generated/estimate_subscription.py +2 -3
- stigg/generated/estimate_subscription_update.py +2 -3
- stigg/generated/exceptions.py +9 -5
- stigg/generated/fragments.py +1983 -788
- stigg/generated/get_active_subscriptions.py +2 -3
- stigg/generated/get_active_subscriptions_list.py +22 -0
- stigg/generated/get_checkout_state.py +2 -3
- stigg/generated/get_coupons.py +4 -5
- stigg/generated/get_credit_balance.py +20 -0
- stigg/generated/get_credit_grants.py +36 -0
- stigg/generated/get_credit_ledger.py +25 -0
- stigg/generated/get_credit_usage.py +18 -0
- stigg/generated/get_customer_by_id.py +2 -3
- stigg/generated/get_customer_portal_by_ref_id.py +2 -3
- stigg/generated/get_customer_statistics.py +22 -0
- stigg/generated/get_entitlement.py +2 -3
- stigg/generated/get_entitlements.py +2 -3
- stigg/generated/get_entitlements_state.py +31 -0
- stigg/generated/get_mock_paywall.py +3 -5
- stigg/generated/get_paywall.py +2 -3
- stigg/generated/get_products.py +4 -5
- stigg/generated/get_sdk_configuration.py +3 -3
- stigg/generated/get_subscription.py +18 -0
- stigg/generated/get_subscriptions.py +35 -0
- stigg/generated/get_usage_history.py +2 -3
- stigg/generated/get_usage_history_v_2.py +18 -0
- stigg/generated/grant_credits.py +20 -0
- stigg/generated/grant_promotional_entitlements.py +2 -3
- stigg/generated/grant_promotional_entitlements_group.py +24 -0
- stigg/generated/import_customer.py +2 -3
- stigg/generated/import_customer_bulk.py +1 -4
- stigg/generated/import_subscriptions_bulk.py +1 -4
- stigg/generated/input_types.py +3950 -1825
- stigg/generated/migrate_subscription_to_latest.py +2 -3
- stigg/generated/preview_next_invoice.py +20 -0
- stigg/generated/preview_subscription.py +2 -3
- stigg/generated/provision_customer.py +4 -22
- stigg/generated/provision_subscription.py +4 -15
- stigg/generated/report_entitlement_check_requested.py +1 -4
- stigg/generated/report_event.py +1 -4
- stigg/generated/report_usage.py +6 -13
- stigg/generated/report_usage_bulk.py +22 -0
- stigg/generated/revoke_promotional_entitlement.py +5 -4
- stigg/generated/revoke_promotional_entitlements_group.py +24 -0
- stigg/generated/transfer_subscription.py +2 -3
- stigg/generated/transfer_subscription_to_resource.py +22 -0
- stigg/generated/unarchive_customer.py +20 -0
- stigg/generated/unlink_promotional_entitlements_group.py +24 -0
- stigg/generated/update_customer.py +2 -3
- stigg/generated/update_subscription.py +2 -3
- stigg/generated/void_credit_grant.py +18 -0
- stigg_api_client_v2-5.9.0.dist-info/LICENSE +14 -0
- {stigg_api_client_v2-0.579.8.dist-info → stigg_api_client_v2-5.9.0.dist-info}/METADATA +5 -2
- stigg_api_client_v2-5.9.0.dist-info/RECORD +73 -0
- stigg/edge_utils.py +0 -28
- stigg/generated/scalars.py +0 -6
- stigg_api_client_v2-0.579.8.dist-info/RECORD +0 -51
- {stigg_api_client_v2-0.579.8.dist-info → stigg_api_client_v2-5.9.0.dist-info}/WHEEL +0 -0
stigg/_edge_utils.py
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
from typing import Tuple, Dict
|
|
2
|
+
|
|
3
|
+
from stigg.generated import FetchEntitlementsQuery, GetPaywallInput, FetchEntitlementQuery, GetActiveSubscriptionsInput
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def build_get_entitlement_data(edge_url: str, query: FetchEntitlementQuery) -> Tuple[str, Dict]:
|
|
7
|
+
url = f"{edge_url}/v1/c/{query.customer_id}/entitlements.json"
|
|
8
|
+
params = {}
|
|
9
|
+
if query.resource_id is not None:
|
|
10
|
+
params["resourceId"] = query.resource_id
|
|
11
|
+
|
|
12
|
+
if query.feature_id is not None:
|
|
13
|
+
params["featureId"] = query.feature_id
|
|
14
|
+
|
|
15
|
+
if query.options is not None and query.options.requested_usage is not None:
|
|
16
|
+
params['requestedUsage'] = query.options.requested_usage
|
|
17
|
+
|
|
18
|
+
return url, params
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def build_get_entitlements_data(edge_url: str, query: FetchEntitlementsQuery) -> Tuple[str, Dict]:
|
|
22
|
+
url = f"{edge_url}/v1/c/{query.customer_id}/entitlements.json"
|
|
23
|
+
params = {}
|
|
24
|
+
if query.resource_id is not None:
|
|
25
|
+
params["resourceId"] = query.resource_id
|
|
26
|
+
|
|
27
|
+
return url, params
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def build_get_paywall_data(edge_url: str, _input: GetPaywallInput) -> Tuple[str, Dict]:
|
|
31
|
+
if _input.product_id is not None:
|
|
32
|
+
url = f"{edge_url}/v1/p/{_input.product_id}/paywall.json"
|
|
33
|
+
else:
|
|
34
|
+
url = f"{edge_url}/v1/paywall.json"
|
|
35
|
+
|
|
36
|
+
params = {}
|
|
37
|
+
if _input.billing_country_code is not None:
|
|
38
|
+
params["billingCountryCode"] = _input.billing_country_code
|
|
39
|
+
|
|
40
|
+
if _input.fetch_all_countries_prices is not None:
|
|
41
|
+
params["fetchAllCountriesPrices"] = _input.fetch_all_countries_prices
|
|
42
|
+
|
|
43
|
+
if _input.include_hidden_plans is not None:
|
|
44
|
+
params["includeHiddenPlans"] = _input.include_hidden_plans
|
|
45
|
+
|
|
46
|
+
return url, params
|
|
47
|
+
|
|
48
|
+
def build_get_subscriptions_data(edge_url: str, _input: GetActiveSubscriptionsInput) -> Tuple[str, Dict]:
|
|
49
|
+
url = f"{edge_url}/v1/c/{_input.customer_id}/subscriptions.json"
|
|
50
|
+
|
|
51
|
+
params = {}
|
|
52
|
+
if _input.resource_id is not None:
|
|
53
|
+
params["resourceId"] = _input.resource_id
|
|
54
|
+
|
|
55
|
+
if _input.resource_ids is not None:
|
|
56
|
+
params["resourceIds"] = _input.resource_ids
|
|
57
|
+
|
|
58
|
+
return url, params
|
stigg/client.py
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
from typing import Union, Optional, Dict, Any
|
|
2
|
+
|
|
1
3
|
import httpx
|
|
2
4
|
from httpx import Timeout
|
|
3
5
|
from tenacity import retry, retry_if_exception_type, stop_after_attempt
|
|
@@ -5,8 +7,9 @@ from tenacity import retry, retry_if_exception_type, stop_after_attempt
|
|
|
5
7
|
from stigg.generated.client import Client
|
|
6
8
|
from stigg.generated.async_client import AsyncClient
|
|
7
9
|
from stigg.generated import FetchEntitlementsQuery, GetEntitlements, GraphQLClientHttpError, GetPaywallInput, \
|
|
8
|
-
|
|
9
|
-
|
|
10
|
+
GetPaywall, GraphQLClientInvalidResponseError, FetchEntitlementQuery, GetEntitlement, UsageMeasurementCreateInput, \
|
|
11
|
+
ReportUsage, ReportUsageInput, GetActiveSubscriptionsInput, GetActiveSubscriptionsList
|
|
12
|
+
from stigg._edge_utils import build_get_entitlements_data, build_get_paywall_data, build_get_entitlement_data, build_get_subscriptions_data
|
|
10
13
|
|
|
11
14
|
PRODUCTION_API_URL = "https://api.stigg.io/graphql"
|
|
12
15
|
PRODUCTION_EDGE_API_URL = "https://edge.api.stigg.io"
|
|
@@ -18,12 +21,13 @@ HTTP_TRANSPORT_RETRY_COUNT = 5
|
|
|
18
21
|
|
|
19
22
|
RETRY_KWARGS = {
|
|
20
23
|
"retry": (
|
|
21
|
-
retry_if_exception_type(GraphQLClientHttpError) | retry_if_exception_type(
|
|
24
|
+
retry_if_exception_type(GraphQLClientHttpError) | retry_if_exception_type(GraphQLClientInvalidResponseError)
|
|
22
25
|
),
|
|
23
26
|
"stop": stop_after_attempt(STIGG_REQUESTS_RETRY_COUNT),
|
|
24
27
|
"reraise": True,
|
|
25
28
|
}
|
|
26
29
|
|
|
30
|
+
X_GRAPHQL_OPERATION_NAME = 'x-graphql-operation-name'
|
|
27
31
|
|
|
28
32
|
class StiggClient(Client):
|
|
29
33
|
def __init__(self, enable_edge: bool, edge_api_url: str, *args, **kwargs):
|
|
@@ -32,29 +36,64 @@ class StiggClient(Client):
|
|
|
32
36
|
|
|
33
37
|
super().__init__(*args, **kwargs)
|
|
34
38
|
|
|
39
|
+
def execute(
|
|
40
|
+
self,
|
|
41
|
+
query: str,
|
|
42
|
+
operation_name: Optional[str] = None,
|
|
43
|
+
variables: Optional[Dict[str, Any]] = None,
|
|
44
|
+
**kwargs: Any,
|
|
45
|
+
) -> httpx.Response:
|
|
46
|
+
headers = kwargs.get("headers", {})
|
|
47
|
+
headers[X_GRAPHQL_OPERATION_NAME] = operation_name
|
|
48
|
+
kwargs['headers'] = headers
|
|
49
|
+
|
|
50
|
+
return super().execute(query, operation_name, variables, **kwargs)
|
|
51
|
+
|
|
35
52
|
@retry(**RETRY_KWARGS)
|
|
36
53
|
def get_data(self, *args, **kwargs):
|
|
37
54
|
return super().get_data(*args, **kwargs)
|
|
38
55
|
|
|
39
|
-
def
|
|
56
|
+
def get_entitlement(self, input: FetchEntitlementQuery, **kwargs: Any) -> GetEntitlement:
|
|
40
57
|
if self.enable_edge is False:
|
|
41
|
-
return super().
|
|
58
|
+
return super().get_entitlement(input, **kwargs)
|
|
42
59
|
|
|
43
|
-
url, params =
|
|
60
|
+
url, params = build_get_entitlement_data(self.edge_api_url, input)
|
|
61
|
+
|
|
62
|
+
response = self.http_client.get(url=url, params=params, **kwargs)
|
|
63
|
+
data = self.get_data(response)
|
|
64
|
+
return GetEntitlement.model_validate(data)
|
|
65
|
+
|
|
66
|
+
def get_entitlements(self, query: FetchEntitlementsQuery, **kwargs: Any) -> GetEntitlements:
|
|
67
|
+
if self.enable_edge is False:
|
|
68
|
+
return super().get_entitlements(query, **kwargs)
|
|
44
69
|
|
|
45
|
-
|
|
70
|
+
url, params = build_get_entitlements_data(self.edge_api_url, query)
|
|
71
|
+
response = self.http_client.get(url=url, params=params, **kwargs)
|
|
46
72
|
data = self.get_data(response)
|
|
47
|
-
return GetEntitlements.
|
|
73
|
+
return GetEntitlements.model_validate(data)
|
|
48
74
|
|
|
49
|
-
def
|
|
75
|
+
def get_active_subscriptions_list(self, input: GetActiveSubscriptionsInput, **kwargs: Any) -> GetActiveSubscriptionsList:
|
|
50
76
|
if self.enable_edge is False:
|
|
51
|
-
return super().
|
|
77
|
+
return super().get_active_subscriptions_list(input, **kwargs)
|
|
78
|
+
|
|
79
|
+
url, params = build_get_subscriptions_data(self.edge_api_url, input)
|
|
80
|
+
|
|
81
|
+
response = self.http_client.get(url=url, params=params, **kwargs)
|
|
82
|
+
data = self.get_data(response)
|
|
83
|
+
return GetActiveSubscriptionsList.model_validate(data)
|
|
84
|
+
|
|
85
|
+
def get_paywall(self, input: GetPaywallInput, **kwargs: Any) -> GetPaywall:
|
|
86
|
+
if input.customer_id is not None or self.enable_edge is False:
|
|
87
|
+
return super().get_paywall(input, **kwargs)
|
|
52
88
|
|
|
53
89
|
url, params = build_get_paywall_data(self.edge_api_url, input)
|
|
54
90
|
|
|
55
|
-
response = self.http_client.get(url=url, params=params)
|
|
91
|
+
response = self.http_client.get(url=url, params=params, **kwargs)
|
|
56
92
|
data = self.get_data(response)
|
|
57
|
-
return GetPaywall.
|
|
93
|
+
return GetPaywall.model_validate(data)
|
|
94
|
+
|
|
95
|
+
def report_usage(self, input: Union[UsageMeasurementCreateInput, ReportUsageInput], **kwargs: Any) -> ReportUsage:
|
|
96
|
+
return super().report_usage(input, **kwargs)
|
|
58
97
|
|
|
59
98
|
|
|
60
99
|
class AsyncStiggClient(AsyncClient):
|
|
@@ -64,33 +103,70 @@ class AsyncStiggClient(AsyncClient):
|
|
|
64
103
|
|
|
65
104
|
super().__init__(*args, **kwargs)
|
|
66
105
|
|
|
106
|
+
def execute(
|
|
107
|
+
self,
|
|
108
|
+
query: str,
|
|
109
|
+
operation_name: Optional[str] = None,
|
|
110
|
+
variables: Optional[Dict[str, Any]] = None,
|
|
111
|
+
**kwargs: Any,
|
|
112
|
+
) -> httpx.Response:
|
|
113
|
+
headers = kwargs.get("headers", {})
|
|
114
|
+
headers[X_GRAPHQL_OPERATION_NAME] = operation_name
|
|
115
|
+
kwargs['headers'] = headers
|
|
116
|
+
|
|
117
|
+
return super().execute(query, operation_name, variables, **kwargs)
|
|
118
|
+
|
|
119
|
+
|
|
67
120
|
@retry(**RETRY_KWARGS)
|
|
68
121
|
def get_data(self, *args, **kwargs):
|
|
69
122
|
return super().get_data(*args, **kwargs)
|
|
70
123
|
|
|
71
|
-
async def
|
|
124
|
+
async def get_entitlement(self, input: FetchEntitlementQuery, **kwargs: Any) -> GetEntitlement:
|
|
72
125
|
if self.enable_edge is False:
|
|
73
|
-
return await super().
|
|
126
|
+
return await super().get_entitlement(input, **kwargs)
|
|
127
|
+
|
|
128
|
+
url, params = build_get_entitlement_data(self.edge_api_url, input)
|
|
129
|
+
|
|
130
|
+
response = await self.http_client.get(url=url, params=params, **kwargs)
|
|
131
|
+
data = self.get_data(response)
|
|
132
|
+
return GetEntitlement.model_validate(data)
|
|
133
|
+
|
|
134
|
+
async def get_entitlements(self, query: FetchEntitlementsQuery, **kwargs: Any) -> GetEntitlements:
|
|
135
|
+
if self.enable_edge is False:
|
|
136
|
+
return await super().get_entitlements(query, **kwargs)
|
|
74
137
|
|
|
75
138
|
url, params = build_get_entitlements_data(self.edge_api_url, query)
|
|
76
139
|
|
|
77
|
-
response = await self.http_client.get(url=url, params=params)
|
|
140
|
+
response = await self.http_client.get(url=url, params=params, **kwargs)
|
|
78
141
|
data = self.get_data(response)
|
|
79
|
-
return GetEntitlements.
|
|
142
|
+
return GetEntitlements.model_validate(data)
|
|
80
143
|
|
|
81
|
-
async def
|
|
144
|
+
async def get_active_subscriptions_list(self, input: GetActiveSubscriptionsInput, **kwargs: Any) -> GetActiveSubscriptionsList:
|
|
82
145
|
if self.enable_edge is False:
|
|
83
|
-
return await super().
|
|
146
|
+
return await super().get_active_subscriptions_list(input, **kwargs)
|
|
147
|
+
|
|
148
|
+
url, params = build_get_subscriptions_data(self.edge_api_url, input)
|
|
149
|
+
|
|
150
|
+
response = await self.http_client.get(url=url, params=params, **kwargs)
|
|
151
|
+
data = self.get_data(response)
|
|
152
|
+
return GetActiveSubscriptionsList.model_validate(data)
|
|
153
|
+
|
|
154
|
+
async def get_paywall(self, input: GetPaywallInput, **kwargs: Any) -> GetPaywall:
|
|
155
|
+
if input.customer_id is not None or self.enable_edge is False:
|
|
156
|
+
return await super().get_paywall(input, **kwargs)
|
|
84
157
|
|
|
85
158
|
url, params = build_get_paywall_data(self.edge_api_url, input)
|
|
86
159
|
|
|
87
|
-
response = await self.http_client.get(url=url, params=params)
|
|
160
|
+
response = await self.http_client.get(url=url, params=params, **kwargs)
|
|
88
161
|
data = self.get_data(response)
|
|
89
|
-
return GetPaywall.
|
|
162
|
+
return GetPaywall.model_validate(data)
|
|
163
|
+
|
|
164
|
+
async def report_usage(self, input: Union[UsageMeasurementCreateInput, ReportUsageInput], **kwargs: Any) -> ReportUsage:
|
|
165
|
+
return await super().report_usage(input, **kwargs)
|
|
90
166
|
|
|
91
167
|
|
|
92
168
|
def get_headers(api_key: str):
|
|
93
|
-
return {"X-API-KEY": api_key, "Content-Type": "application/json"}
|
|
169
|
+
return {"X-API-KEY": api_key, "X-API-VERSION": "1", "Content-Type": "application/json"}
|
|
94
170
|
|
|
95
171
|
|
|
96
172
|
class Stigg:
|