-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmpt_client.py
More file actions
202 lines (164 loc) · 5.25 KB
/
mpt_client.py
File metadata and controls
202 lines (164 loc) · 5.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
from typing import Self
from mpt_api_client.http import AsyncHTTPClient, HTTPClient
from mpt_api_client.resources import (
Accounts,
AsyncAccounts,
AsyncAudit,
AsyncBilling,
AsyncCatalog,
AsyncCommerce,
AsyncExchange,
AsyncHelpdesk,
AsyncIntegration,
AsyncNotifications,
AsyncProgram,
AsyncSpotlight,
Audit,
Billing,
Catalog,
Commerce,
Exchange,
Helpdesk,
Integration,
Notifications,
Program,
Spotlight,
)
class AsyncMPTClient:
"""MPT API Client."""
def __init__(
self,
http_client: AsyncHTTPClient | None = None,
):
self.http_client = http_client or AsyncHTTPClient()
@classmethod
def from_config(
cls,
api_token: str,
base_url: str,
timeout: float = 60.0,
) -> Self:
"""Create MPT client from configuration.
Args:
api_token: MPT API Token
base_url: MPT Base URL
timeout: HTTP request timeout in seconds. Defaults to 60.0.
Returns:
MPT Client
"""
return cls(AsyncHTTPClient(base_url=base_url, api_token=api_token, timeout=timeout))
@property
def catalog(self) -> AsyncCatalog:
"""Catalog MPT API Client."""
return AsyncCatalog(http_client=self.http_client)
@property
def commerce(self) -> AsyncCommerce:
"""Commerce MPT API Client."""
return AsyncCommerce(http_client=self.http_client)
@property
def audit(self) -> AsyncAudit:
"""Audit MPT API Client."""
return AsyncAudit(http_client=self.http_client)
@property
def billing(self) -> AsyncBilling:
"""Billing MPT API Client."""
return AsyncBilling(http_client=self.http_client)
@property
def accounts(self) -> AsyncAccounts:
"""Accounts MPT API Client."""
return AsyncAccounts(http_client=self.http_client)
@property
def notifications(self) -> AsyncNotifications:
"""Notifications MPT API Client."""
return AsyncNotifications(http_client=self.http_client)
@property
def helpdesk(self) -> AsyncHelpdesk:
"""Helpdesk MPT API Client."""
return AsyncHelpdesk(http_client=self.http_client)
@property
def exchange(self) -> AsyncExchange:
"""Exchange MPT API Client."""
return AsyncExchange(http_client=self.http_client)
@property
def integration(self) -> AsyncIntegration:
"""Integration MPT API Client."""
return AsyncIntegration(http_client=self.http_client)
@property
def program(self) -> AsyncProgram:
"""Program MPT API Client."""
return AsyncProgram(http_client=self.http_client)
@property
def spotlight(self) -> AsyncSpotlight:
"""Spotlight MPT API Client."""
return AsyncSpotlight(http_client=self.http_client)
class MPTClient:
"""MPT API Client."""
def __init__(
self,
http_client: HTTPClient | None = None,
):
self.http_client = http_client or HTTPClient()
@classmethod
def from_config(
cls,
api_token: str,
base_url: str,
timeout: float = 60.0,
) -> Self:
"""Create MPT client from configuration.
Args:
api_token: MPT API Token
base_url: MPT Base URL
timeout: HTTP request timeout in seconds. Defaults to 60.0.
Returns:
MPT Client
"""
return cls(HTTPClient(base_url=base_url, api_token=api_token, timeout=timeout))
@property
def commerce(self) -> Commerce:
"""Commerce MPT API Client.
The Commerce API provides a comprehensive set of endpoints
for managing agreements, requests, subscriptions, and orders
within a vendor-client-ops ecosystem.
"""
return Commerce(http_client=self.http_client)
@property
def catalog(self) -> Catalog:
"""Catalog MPT API Client."""
return Catalog(http_client=self.http_client)
@property
def audit(self) -> Audit:
"""Audit MPT API Client."""
return Audit(http_client=self.http_client)
@property
def billing(self) -> Billing:
"""Billing MPT API Client."""
return Billing(http_client=self.http_client)
@property
def accounts(self) -> Accounts:
"""Accounts MPT API Client."""
return Accounts(http_client=self.http_client)
@property
def notifications(self) -> Notifications:
"""Notifications MPT API Client."""
return Notifications(http_client=self.http_client)
@property
def helpdesk(self) -> Helpdesk:
"""Helpdesk MPT API Client."""
return Helpdesk(http_client=self.http_client)
@property
def exchange(self) -> Exchange:
"""Exchange MPT API Client."""
return Exchange(http_client=self.http_client)
@property
def integration(self) -> Integration:
"""Integration MPT API Client."""
return Integration(http_client=self.http_client)
@property
def program(self) -> Program:
"""Program MPT API Client."""
return Program(http_client=self.http_client)
@property
def spotlight(self) -> Spotlight:
"""Spotlight MPT API Client."""
return Spotlight(http_client=self.http_client)