-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmpt_client.py
More file actions
142 lines (112 loc) · 3.63 KB
/
mpt_client.py
File metadata and controls
142 lines (112 loc) · 3.63 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
from typing import Self
from mpt_api_client.http import AsyncHTTPClient, HTTPClient
from mpt_api_client.resources import (
Accounts,
AsyncAccounts,
AsyncAudit,
AsyncBilling,
AsyncCatalog,
AsyncCommerce,
AsyncHelpdesk,
AsyncNotifications,
Audit,
Billing,
Catalog,
Commerce,
Helpdesk,
Notifications,
)
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) -> Self:
"""Create MPT client from configuration.
Args:
api_token: MPT API Token
base_url: MPT Base URL
Returns:
MPT Client
"""
return cls(AsyncHTTPClient(base_url=base_url, api_token=api_token))
@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)
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) -> Self:
"""Create MPT client from configuration.
Args:
api_token: MPT API Token
base_url: MPT Base URL
Returns:
MPT Client
"""
return cls(HTTPClient(base_url=base_url, api_token=api_token))
@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)