fathom-python 0.0.30__py3-none-any.whl → 0.0.31__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.
- fathom_python/_version.py +3 -3
- fathom_python/models/__init__.py +0 -31
- fathom_python/models/crmmatches.py +40 -3
- fathom_python/models/meeting.py +9 -4
- fathom_python/models/security.py +0 -14
- fathom_python/models/transcriptitemspeaker.py +6 -0
- fathom_python/sdk.py +0 -198
- fathom_python/utils/security.py +0 -25
- {fathom_python-0.0.30.dist-info → fathom_python-0.0.31.dist-info}/METADATA +21 -43
- {fathom_python-0.0.30.dist-info → fathom_python-0.0.31.dist-info}/RECORD +11 -13
- fathom_python/models/gettokenop.py +0 -74
- fathom_python/models/schemetokenrequeststandalone.py +0 -42
- {fathom_python-0.0.30.dist-info → fathom_python-0.0.31.dist-info}/WHEEL +0 -0
fathom_python/_version.py
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
import importlib.metadata
|
|
4
4
|
|
|
5
5
|
__title__: str = "fathom-python"
|
|
6
|
-
__version__: str = "0.0.
|
|
6
|
+
__version__: str = "0.0.31"
|
|
7
7
|
__openapi_doc_version__: str = "1.0.0"
|
|
8
|
-
__gen_version__: str = "2.
|
|
9
|
-
__user_agent__: str = "speakeasy-sdk/python 0.0.
|
|
8
|
+
__gen_version__: str = "2.670.1"
|
|
9
|
+
__user_agent__: str = "speakeasy-sdk/python 0.0.31 2.670.1 1.0.0 fathom-python"
|
|
10
10
|
|
|
11
11
|
try:
|
|
12
12
|
if __package__ is not None:
|
fathom_python/models/__init__.py
CHANGED
|
@@ -13,14 +13,6 @@ if TYPE_CHECKING:
|
|
|
13
13
|
from .crmmatches import CRMMatches, CRMMatchesTypedDict
|
|
14
14
|
from .deletewebhookop import DeleteWebhookRequest, DeleteWebhookRequestTypedDict
|
|
15
15
|
from .fathomuser import FathomUser, FathomUserTypedDict
|
|
16
|
-
from .gettokenop import (
|
|
17
|
-
GET_TOKEN_OP_SERVERS,
|
|
18
|
-
GetTokenGrantType,
|
|
19
|
-
GetTokenRequest,
|
|
20
|
-
GetTokenRequestTypedDict,
|
|
21
|
-
GetTokenResponse,
|
|
22
|
-
GetTokenResponseTypedDict,
|
|
23
|
-
)
|
|
24
16
|
from .invitee import Invitee, InviteeTypedDict
|
|
25
17
|
from .listmeetingsop import (
|
|
26
18
|
ListMeetingsMeetingType,
|
|
@@ -37,11 +29,6 @@ if TYPE_CHECKING:
|
|
|
37
29
|
from .meeting import Meeting, MeetingType, MeetingTypedDict
|
|
38
30
|
from .meetinglistresponse import MeetingListResponse, MeetingListResponseTypedDict
|
|
39
31
|
from .meetingsummary import MeetingSummary, MeetingSummaryTypedDict
|
|
40
|
-
from .schemetokenrequeststandalone import (
|
|
41
|
-
GrantType,
|
|
42
|
-
SchemeTokenRequestStandalone,
|
|
43
|
-
SchemeTokenRequestStandaloneTypedDict,
|
|
44
|
-
)
|
|
45
32
|
from .security import Security, SecurityTypedDict
|
|
46
33
|
from .team import Team, TeamTypedDict
|
|
47
34
|
from .teamlistresponse import TeamListResponse, TeamListResponseTypedDict
|
|
@@ -76,13 +63,6 @@ __all__ = [
|
|
|
76
63
|
"DeleteWebhookRequestTypedDict",
|
|
77
64
|
"FathomUser",
|
|
78
65
|
"FathomUserTypedDict",
|
|
79
|
-
"GET_TOKEN_OP_SERVERS",
|
|
80
|
-
"GetTokenGrantType",
|
|
81
|
-
"GetTokenRequest",
|
|
82
|
-
"GetTokenRequestTypedDict",
|
|
83
|
-
"GetTokenResponse",
|
|
84
|
-
"GetTokenResponseTypedDict",
|
|
85
|
-
"GrantType",
|
|
86
66
|
"Invitee",
|
|
87
67
|
"InviteeTypedDict",
|
|
88
68
|
"ListMeetingsMeetingType",
|
|
@@ -101,8 +81,6 @@ __all__ = [
|
|
|
101
81
|
"MeetingSummaryTypedDict",
|
|
102
82
|
"MeetingType",
|
|
103
83
|
"MeetingTypedDict",
|
|
104
|
-
"SchemeTokenRequestStandalone",
|
|
105
|
-
"SchemeTokenRequestStandaloneTypedDict",
|
|
106
84
|
"Security",
|
|
107
85
|
"SecurityTypedDict",
|
|
108
86
|
"Team",
|
|
@@ -140,12 +118,6 @@ _dynamic_imports: dict[str, str] = {
|
|
|
140
118
|
"DeleteWebhookRequestTypedDict": ".deletewebhookop",
|
|
141
119
|
"FathomUser": ".fathomuser",
|
|
142
120
|
"FathomUserTypedDict": ".fathomuser",
|
|
143
|
-
"GET_TOKEN_OP_SERVERS": ".gettokenop",
|
|
144
|
-
"GetTokenGrantType": ".gettokenop",
|
|
145
|
-
"GetTokenRequest": ".gettokenop",
|
|
146
|
-
"GetTokenRequestTypedDict": ".gettokenop",
|
|
147
|
-
"GetTokenResponse": ".gettokenop",
|
|
148
|
-
"GetTokenResponseTypedDict": ".gettokenop",
|
|
149
121
|
"Invitee": ".invitee",
|
|
150
122
|
"InviteeTypedDict": ".invitee",
|
|
151
123
|
"ListMeetingsMeetingType": ".listmeetingsop",
|
|
@@ -164,9 +136,6 @@ _dynamic_imports: dict[str, str] = {
|
|
|
164
136
|
"MeetingListResponseTypedDict": ".meetinglistresponse",
|
|
165
137
|
"MeetingSummary": ".meetingsummary",
|
|
166
138
|
"MeetingSummaryTypedDict": ".meetingsummary",
|
|
167
|
-
"GrantType": ".schemetokenrequeststandalone",
|
|
168
|
-
"SchemeTokenRequestStandalone": ".schemetokenrequeststandalone",
|
|
169
|
-
"SchemeTokenRequestStandaloneTypedDict": ".schemetokenrequeststandalone",
|
|
170
139
|
"Security": ".security",
|
|
171
140
|
"SecurityTypedDict": ".security",
|
|
172
141
|
"Team": ".team",
|
|
@@ -4,7 +4,14 @@ from __future__ import annotations
|
|
|
4
4
|
from .crmcompanymatch import CRMCompanyMatch, CRMCompanyMatchTypedDict
|
|
5
5
|
from .crmcontactmatch import CRMContactMatch, CRMContactMatchTypedDict
|
|
6
6
|
from .crmdealmatch import CRMDealMatch, CRMDealMatchTypedDict
|
|
7
|
-
from fathom_python.types import
|
|
7
|
+
from fathom_python.types import (
|
|
8
|
+
BaseModel,
|
|
9
|
+
Nullable,
|
|
10
|
+
OptionalNullable,
|
|
11
|
+
UNSET,
|
|
12
|
+
UNSET_SENTINEL,
|
|
13
|
+
)
|
|
14
|
+
from pydantic import model_serializer
|
|
8
15
|
from typing import List, Optional
|
|
9
16
|
from typing_extensions import NotRequired, TypedDict
|
|
10
17
|
|
|
@@ -18,7 +25,7 @@ class CRMMatchesTypedDict(TypedDict):
|
|
|
18
25
|
contacts: NotRequired[List[CRMContactMatchTypedDict]]
|
|
19
26
|
companies: NotRequired[List[CRMCompanyMatchTypedDict]]
|
|
20
27
|
deals: NotRequired[List[CRMDealMatchTypedDict]]
|
|
21
|
-
error: NotRequired[str]
|
|
28
|
+
error: NotRequired[Nullable[str]]
|
|
22
29
|
|
|
23
30
|
|
|
24
31
|
class CRMMatches(BaseModel):
|
|
@@ -33,4 +40,34 @@ class CRMMatches(BaseModel):
|
|
|
33
40
|
|
|
34
41
|
deals: Optional[List[CRMDealMatch]] = None
|
|
35
42
|
|
|
36
|
-
error:
|
|
43
|
+
error: OptionalNullable[str] = UNSET
|
|
44
|
+
|
|
45
|
+
@model_serializer(mode="wrap")
|
|
46
|
+
def serialize_model(self, handler):
|
|
47
|
+
optional_fields = ["contacts", "companies", "deals", "error"]
|
|
48
|
+
nullable_fields = ["error"]
|
|
49
|
+
null_default_fields = []
|
|
50
|
+
|
|
51
|
+
serialized = handler(self)
|
|
52
|
+
|
|
53
|
+
m = {}
|
|
54
|
+
|
|
55
|
+
for n, f in type(self).model_fields.items():
|
|
56
|
+
k = f.alias or n
|
|
57
|
+
val = serialized.get(k)
|
|
58
|
+
serialized.pop(k, None)
|
|
59
|
+
|
|
60
|
+
optional_nullable = k in optional_fields and k in nullable_fields
|
|
61
|
+
is_set = (
|
|
62
|
+
self.__pydantic_fields_set__.intersection({n})
|
|
63
|
+
or k in null_default_fields
|
|
64
|
+
) # pylint: disable=no-member
|
|
65
|
+
|
|
66
|
+
if val is not None and val != UNSET_SENTINEL:
|
|
67
|
+
m[k] = val
|
|
68
|
+
elif val != UNSET_SENTINEL and (
|
|
69
|
+
not k in optional_fields or (optional_nullable and is_set)
|
|
70
|
+
):
|
|
71
|
+
m[k] = val
|
|
72
|
+
|
|
73
|
+
return m
|
fathom_python/models/meeting.py
CHANGED
|
@@ -17,7 +17,7 @@ from fathom_python.types import (
|
|
|
17
17
|
UNSET_SENTINEL,
|
|
18
18
|
)
|
|
19
19
|
from pydantic import model_serializer
|
|
20
|
-
from typing import List
|
|
20
|
+
from typing import List
|
|
21
21
|
from typing_extensions import NotRequired, TypedDict
|
|
22
22
|
|
|
23
23
|
|
|
@@ -42,7 +42,7 @@ class MeetingTypedDict(TypedDict):
|
|
|
42
42
|
calendar_invitees: List[InviteeTypedDict]
|
|
43
43
|
recorded_by: FathomUserTypedDict
|
|
44
44
|
transcript: NotRequired[Nullable[List[TranscriptItemTypedDict]]]
|
|
45
|
-
default_summary: NotRequired[MeetingSummaryTypedDict]
|
|
45
|
+
default_summary: NotRequired[Nullable[MeetingSummaryTypedDict]]
|
|
46
46
|
action_items: NotRequired[Nullable[List[ActionItemTypedDict]]]
|
|
47
47
|
crm_matches: NotRequired[Nullable[CRMMatchesTypedDict]]
|
|
48
48
|
r"""CRM data linked to the meeting. Only returns data from your or your team's linked CRM.
|
|
@@ -81,7 +81,7 @@ class Meeting(BaseModel):
|
|
|
81
81
|
|
|
82
82
|
transcript: OptionalNullable[List[TranscriptItem]] = UNSET
|
|
83
83
|
|
|
84
|
-
default_summary:
|
|
84
|
+
default_summary: OptionalNullable[MeetingSummary] = UNSET
|
|
85
85
|
|
|
86
86
|
action_items: OptionalNullable[List[ActionItem]] = UNSET
|
|
87
87
|
|
|
@@ -99,7 +99,12 @@ class Meeting(BaseModel):
|
|
|
99
99
|
"action_items",
|
|
100
100
|
"crm_matches",
|
|
101
101
|
]
|
|
102
|
-
nullable_fields = [
|
|
102
|
+
nullable_fields = [
|
|
103
|
+
"transcript",
|
|
104
|
+
"default_summary",
|
|
105
|
+
"action_items",
|
|
106
|
+
"crm_matches",
|
|
107
|
+
]
|
|
103
108
|
null_default_fields = []
|
|
104
109
|
|
|
105
110
|
serialized = handler(self)
|
fathom_python/models/security.py
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
|
-
from .schemetokenrequeststandalone import (
|
|
5
|
-
SchemeTokenRequestStandalone,
|
|
6
|
-
SchemeTokenRequestStandaloneTypedDict,
|
|
7
|
-
)
|
|
8
4
|
from fathom_python.types import BaseModel
|
|
9
5
|
from fathom_python.utils import FieldMetadata, SecurityMetadata
|
|
10
6
|
from typing import Optional
|
|
@@ -14,7 +10,6 @@ from typing_extensions import Annotated, NotRequired, TypedDict
|
|
|
14
10
|
class SecurityTypedDict(TypedDict):
|
|
15
11
|
api_key_auth: NotRequired[str]
|
|
16
12
|
bearer_auth: NotRequired[str]
|
|
17
|
-
token_request_standalone: NotRequired[SchemeTokenRequestStandaloneTypedDict]
|
|
18
13
|
|
|
19
14
|
|
|
20
15
|
class Security(BaseModel):
|
|
@@ -41,12 +36,3 @@ class Security(BaseModel):
|
|
|
41
36
|
)
|
|
42
37
|
),
|
|
43
38
|
] = None
|
|
44
|
-
|
|
45
|
-
token_request_standalone: Annotated[
|
|
46
|
-
Optional[SchemeTokenRequestStandalone],
|
|
47
|
-
FieldMetadata(
|
|
48
|
-
security=SecurityMetadata(
|
|
49
|
-
scheme=True, scheme_type="http", sub_type="custom"
|
|
50
|
-
)
|
|
51
|
-
),
|
|
52
|
-
] = None
|
|
@@ -9,9 +9,15 @@ from typing_extensions import NotRequired, TypedDict
|
|
|
9
9
|
class TranscriptItemSpeakerTypedDict(TypedDict):
|
|
10
10
|
display_name: str
|
|
11
11
|
matched_calendar_invitee_email: NotRequired[str]
|
|
12
|
+
r"""**Coming soon!**
|
|
13
|
+
|
|
14
|
+
"""
|
|
12
15
|
|
|
13
16
|
|
|
14
17
|
class TranscriptItemSpeaker(BaseModel):
|
|
15
18
|
display_name: str
|
|
16
19
|
|
|
17
20
|
matched_calendar_invitee_email: Optional[str] = None
|
|
21
|
+
r"""**Coming soon!**
|
|
22
|
+
|
|
23
|
+
"""
|
fathom_python/sdk.py
CHANGED
|
@@ -1233,201 +1233,3 @@ class Fathom(BaseSDK):
|
|
|
1233
1233
|
raise errors.APIError("API error occurred", http_res, http_res_text)
|
|
1234
1234
|
|
|
1235
1235
|
raise errors.APIError("Unexpected response received", http_res)
|
|
1236
|
-
|
|
1237
|
-
def get_token(
|
|
1238
|
-
self,
|
|
1239
|
-
*,
|
|
1240
|
-
grant_type: models.GetTokenGrantType,
|
|
1241
|
-
code: str,
|
|
1242
|
-
redirect_uri: str,
|
|
1243
|
-
client_id: str,
|
|
1244
|
-
client_secret: str,
|
|
1245
|
-
refresh_token: Optional[str] = None,
|
|
1246
|
-
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
1247
|
-
server_url: Optional[str] = None,
|
|
1248
|
-
timeout_ms: Optional[int] = None,
|
|
1249
|
-
http_headers: Optional[Mapping[str, str]] = None,
|
|
1250
|
-
) -> models.GetTokenResponse:
|
|
1251
|
-
r"""Token endpoint for exchanging an authorization code or refreshing an access token
|
|
1252
|
-
|
|
1253
|
-
:param grant_type:
|
|
1254
|
-
:param code: authorization code received from `/authorize`
|
|
1255
|
-
:param redirect_uri: must match the redirect URI used in `/authorize`
|
|
1256
|
-
:param client_id:
|
|
1257
|
-
:param client_secret:
|
|
1258
|
-
:param refresh_token: refresh token issued previously
|
|
1259
|
-
:param retries: Override the default retry configuration for this method
|
|
1260
|
-
:param server_url: Override the default server URL for this method
|
|
1261
|
-
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
1262
|
-
:param http_headers: Additional headers to set or replace on requests.
|
|
1263
|
-
"""
|
|
1264
|
-
base_url = None
|
|
1265
|
-
url_variables = None
|
|
1266
|
-
if timeout_ms is None:
|
|
1267
|
-
timeout_ms = self.sdk_configuration.timeout_ms
|
|
1268
|
-
|
|
1269
|
-
if server_url is not None:
|
|
1270
|
-
base_url = server_url
|
|
1271
|
-
else:
|
|
1272
|
-
base_url = models.GET_TOKEN_OP_SERVERS[0]
|
|
1273
|
-
|
|
1274
|
-
request = models.GetTokenRequest(
|
|
1275
|
-
grant_type=grant_type,
|
|
1276
|
-
code=code,
|
|
1277
|
-
redirect_uri=redirect_uri,
|
|
1278
|
-
client_id=client_id,
|
|
1279
|
-
client_secret=client_secret,
|
|
1280
|
-
refresh_token=refresh_token,
|
|
1281
|
-
)
|
|
1282
|
-
|
|
1283
|
-
req = self._build_request(
|
|
1284
|
-
method="POST",
|
|
1285
|
-
path="/oauth2/token",
|
|
1286
|
-
base_url=base_url,
|
|
1287
|
-
url_variables=url_variables,
|
|
1288
|
-
request=request,
|
|
1289
|
-
request_body_required=True,
|
|
1290
|
-
request_has_path_params=False,
|
|
1291
|
-
request_has_query_params=True,
|
|
1292
|
-
user_agent_header="user-agent",
|
|
1293
|
-
accept_header_value="application/json",
|
|
1294
|
-
http_headers=http_headers,
|
|
1295
|
-
security=self.sdk_configuration.security,
|
|
1296
|
-
get_serialized_body=lambda: utils.serialize_request_body(
|
|
1297
|
-
request, False, False, "form", models.GetTokenRequest
|
|
1298
|
-
),
|
|
1299
|
-
timeout_ms=timeout_ms,
|
|
1300
|
-
)
|
|
1301
|
-
|
|
1302
|
-
if retries == UNSET:
|
|
1303
|
-
if self.sdk_configuration.retry_config is not UNSET:
|
|
1304
|
-
retries = self.sdk_configuration.retry_config
|
|
1305
|
-
|
|
1306
|
-
retry_config = None
|
|
1307
|
-
if isinstance(retries, utils.RetryConfig):
|
|
1308
|
-
retry_config = (retries, ["429", "500", "502", "503", "504"])
|
|
1309
|
-
|
|
1310
|
-
http_res = self.do_request(
|
|
1311
|
-
hook_ctx=HookContext(
|
|
1312
|
-
config=self.sdk_configuration,
|
|
1313
|
-
base_url=base_url or "",
|
|
1314
|
-
operation_id="getToken",
|
|
1315
|
-
oauth2_scopes=[],
|
|
1316
|
-
security_source=get_security_from_env(
|
|
1317
|
-
self.sdk_configuration.security, models.Security
|
|
1318
|
-
),
|
|
1319
|
-
),
|
|
1320
|
-
request=req,
|
|
1321
|
-
error_status_codes=["400", "4XX", "5XX"],
|
|
1322
|
-
retry_config=retry_config,
|
|
1323
|
-
)
|
|
1324
|
-
|
|
1325
|
-
if utils.match_response(http_res, "200", "application/json"):
|
|
1326
|
-
return unmarshal_json_response(models.GetTokenResponse, http_res)
|
|
1327
|
-
if utils.match_response(http_res, ["400", "4XX"], "*"):
|
|
1328
|
-
http_res_text = utils.stream_to_text(http_res)
|
|
1329
|
-
raise errors.APIError("API error occurred", http_res, http_res_text)
|
|
1330
|
-
if utils.match_response(http_res, "5XX", "*"):
|
|
1331
|
-
http_res_text = utils.stream_to_text(http_res)
|
|
1332
|
-
raise errors.APIError("API error occurred", http_res, http_res_text)
|
|
1333
|
-
|
|
1334
|
-
raise errors.APIError("Unexpected response received", http_res)
|
|
1335
|
-
|
|
1336
|
-
async def get_token_async(
|
|
1337
|
-
self,
|
|
1338
|
-
*,
|
|
1339
|
-
grant_type: models.GetTokenGrantType,
|
|
1340
|
-
code: str,
|
|
1341
|
-
redirect_uri: str,
|
|
1342
|
-
client_id: str,
|
|
1343
|
-
client_secret: str,
|
|
1344
|
-
refresh_token: Optional[str] = None,
|
|
1345
|
-
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
1346
|
-
server_url: Optional[str] = None,
|
|
1347
|
-
timeout_ms: Optional[int] = None,
|
|
1348
|
-
http_headers: Optional[Mapping[str, str]] = None,
|
|
1349
|
-
) -> models.GetTokenResponse:
|
|
1350
|
-
r"""Token endpoint for exchanging an authorization code or refreshing an access token
|
|
1351
|
-
|
|
1352
|
-
:param grant_type:
|
|
1353
|
-
:param code: authorization code received from `/authorize`
|
|
1354
|
-
:param redirect_uri: must match the redirect URI used in `/authorize`
|
|
1355
|
-
:param client_id:
|
|
1356
|
-
:param client_secret:
|
|
1357
|
-
:param refresh_token: refresh token issued previously
|
|
1358
|
-
:param retries: Override the default retry configuration for this method
|
|
1359
|
-
:param server_url: Override the default server URL for this method
|
|
1360
|
-
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
1361
|
-
:param http_headers: Additional headers to set or replace on requests.
|
|
1362
|
-
"""
|
|
1363
|
-
base_url = None
|
|
1364
|
-
url_variables = None
|
|
1365
|
-
if timeout_ms is None:
|
|
1366
|
-
timeout_ms = self.sdk_configuration.timeout_ms
|
|
1367
|
-
|
|
1368
|
-
if server_url is not None:
|
|
1369
|
-
base_url = server_url
|
|
1370
|
-
else:
|
|
1371
|
-
base_url = models.GET_TOKEN_OP_SERVERS[0]
|
|
1372
|
-
|
|
1373
|
-
request = models.GetTokenRequest(
|
|
1374
|
-
grant_type=grant_type,
|
|
1375
|
-
code=code,
|
|
1376
|
-
redirect_uri=redirect_uri,
|
|
1377
|
-
client_id=client_id,
|
|
1378
|
-
client_secret=client_secret,
|
|
1379
|
-
refresh_token=refresh_token,
|
|
1380
|
-
)
|
|
1381
|
-
|
|
1382
|
-
req = self._build_request_async(
|
|
1383
|
-
method="POST",
|
|
1384
|
-
path="/oauth2/token",
|
|
1385
|
-
base_url=base_url,
|
|
1386
|
-
url_variables=url_variables,
|
|
1387
|
-
request=request,
|
|
1388
|
-
request_body_required=True,
|
|
1389
|
-
request_has_path_params=False,
|
|
1390
|
-
request_has_query_params=True,
|
|
1391
|
-
user_agent_header="user-agent",
|
|
1392
|
-
accept_header_value="application/json",
|
|
1393
|
-
http_headers=http_headers,
|
|
1394
|
-
security=self.sdk_configuration.security,
|
|
1395
|
-
get_serialized_body=lambda: utils.serialize_request_body(
|
|
1396
|
-
request, False, False, "form", models.GetTokenRequest
|
|
1397
|
-
),
|
|
1398
|
-
timeout_ms=timeout_ms,
|
|
1399
|
-
)
|
|
1400
|
-
|
|
1401
|
-
if retries == UNSET:
|
|
1402
|
-
if self.sdk_configuration.retry_config is not UNSET:
|
|
1403
|
-
retries = self.sdk_configuration.retry_config
|
|
1404
|
-
|
|
1405
|
-
retry_config = None
|
|
1406
|
-
if isinstance(retries, utils.RetryConfig):
|
|
1407
|
-
retry_config = (retries, ["429", "500", "502", "503", "504"])
|
|
1408
|
-
|
|
1409
|
-
http_res = await self.do_request_async(
|
|
1410
|
-
hook_ctx=HookContext(
|
|
1411
|
-
config=self.sdk_configuration,
|
|
1412
|
-
base_url=base_url or "",
|
|
1413
|
-
operation_id="getToken",
|
|
1414
|
-
oauth2_scopes=[],
|
|
1415
|
-
security_source=get_security_from_env(
|
|
1416
|
-
self.sdk_configuration.security, models.Security
|
|
1417
|
-
),
|
|
1418
|
-
),
|
|
1419
|
-
request=req,
|
|
1420
|
-
error_status_codes=["400", "4XX", "5XX"],
|
|
1421
|
-
retry_config=retry_config,
|
|
1422
|
-
)
|
|
1423
|
-
|
|
1424
|
-
if utils.match_response(http_res, "200", "application/json"):
|
|
1425
|
-
return unmarshal_json_response(models.GetTokenResponse, http_res)
|
|
1426
|
-
if utils.match_response(http_res, ["400", "4XX"], "*"):
|
|
1427
|
-
http_res_text = await utils.stream_to_text_async(http_res)
|
|
1428
|
-
raise errors.APIError("API error occurred", http_res, http_res_text)
|
|
1429
|
-
if utils.match_response(http_res, "5XX", "*"):
|
|
1430
|
-
http_res_text = await utils.stream_to_text_async(http_res)
|
|
1431
|
-
raise errors.APIError("API error occurred", http_res, http_res_text)
|
|
1432
|
-
|
|
1433
|
-
raise errors.APIError("Unexpected response received", http_res)
|
fathom_python/utils/security.py
CHANGED
|
@@ -70,31 +70,6 @@ def get_security_from_env(security: Any, security_class: Any) -> Optional[BaseMo
|
|
|
70
70
|
if os.getenv("FATHOM_BEARER_AUTH"):
|
|
71
71
|
security_dict["bearer_auth"] = os.getenv("FATHOM_BEARER_AUTH")
|
|
72
72
|
|
|
73
|
-
if os.getenv("FATHOM_GRANT_TYPE"):
|
|
74
|
-
security_dict.setdefault("token_request_standalone", {})["grant_type"] = (
|
|
75
|
-
os.getenv("FATHOM_GRANT_TYPE")
|
|
76
|
-
)
|
|
77
|
-
|
|
78
|
-
if os.getenv("FATHOM_CLIENT_ID"):
|
|
79
|
-
security_dict.setdefault("token_request_standalone", {})["client_id"] = (
|
|
80
|
-
os.getenv("FATHOM_CLIENT_ID")
|
|
81
|
-
)
|
|
82
|
-
|
|
83
|
-
if os.getenv("FATHOM_CLIENT_SECRET"):
|
|
84
|
-
security_dict.setdefault("token_request_standalone", {})["client_secret"] = (
|
|
85
|
-
os.getenv("FATHOM_CLIENT_SECRET")
|
|
86
|
-
)
|
|
87
|
-
|
|
88
|
-
if os.getenv("FATHOM_REDIRECT_URI"):
|
|
89
|
-
security_dict.setdefault("token_request_standalone", {})["redirect_uri"] = (
|
|
90
|
-
os.getenv("FATHOM_REDIRECT_URI")
|
|
91
|
-
)
|
|
92
|
-
|
|
93
|
-
if os.getenv("FATHOM_CODE"):
|
|
94
|
-
security_dict.setdefault("token_request_standalone", {})["code"] = os.getenv(
|
|
95
|
-
"FATHOM_CODE"
|
|
96
|
-
)
|
|
97
|
-
|
|
98
73
|
return security_class(**security_dict) if security_dict else None
|
|
99
74
|
|
|
100
75
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: fathom-python
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.31
|
|
4
4
|
Summary: Python Client SDK Generated by Speakeasy.
|
|
5
5
|
Author: Speakeasy
|
|
6
6
|
Requires-Python: >=3.9.2
|
|
@@ -30,21 +30,22 @@ optionally receive webhooks when content from a new meeting is ready.
|
|
|
30
30
|
<!-- Start Table of Contents [toc] -->
|
|
31
31
|
## Table of Contents
|
|
32
32
|
<!-- $toc-max-depth=2 -->
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
33
|
+
* fathom-api
|
|
34
|
+
* SDK Installation
|
|
35
|
+
* Requirements
|
|
36
|
+
* SDK Example Usage
|
|
37
|
+
* Authentication
|
|
38
|
+
* Available Resources and Operations
|
|
39
|
+
* Standalone functions
|
|
40
|
+
* Pagination
|
|
41
|
+
* Retries
|
|
42
|
+
* Error Handling
|
|
43
|
+
* Custom HTTP Client
|
|
44
|
+
* Resource Management
|
|
45
|
+
* Debugging
|
|
46
|
+
* Development
|
|
47
|
+
* Maturity
|
|
48
|
+
* Custom HTTP Client
|
|
48
49
|
|
|
49
50
|
<!-- End Table of Contents [toc] -->
|
|
50
51
|
|
|
@@ -200,11 +201,10 @@ asyncio.run(main())
|
|
|
200
201
|
|
|
201
202
|
This SDK supports the following security schemes globally:
|
|
202
203
|
|
|
203
|
-
| Name
|
|
204
|
-
|
|
|
205
|
-
| `api_key_auth`
|
|
206
|
-
| `bearer_auth`
|
|
207
|
-
| `token_request_standalone` | http | Custom HTTP | `FATHOM_TOKEN_REQUEST_STANDALONE` |
|
|
204
|
+
| Name | Type | Scheme | Environment Variable |
|
|
205
|
+
| -------------- | ------ | ----------- | --------------------- |
|
|
206
|
+
| `api_key_auth` | apiKey | API key | `FATHOM_API_KEY_AUTH` |
|
|
207
|
+
| `bearer_auth` | http | HTTP Bearer | `FATHOM_BEARER_AUTH` |
|
|
208
208
|
|
|
209
209
|
You can set the security parameters through the `security` optional parameter when initializing the SDK client instance. The selected scheme will be used by default to authenticate with the API for all operations that support it. For example:
|
|
210
210
|
```python
|
|
@@ -253,7 +253,6 @@ with Fathom(
|
|
|
253
253
|
* [list_team_members](docs/sdks/fathom/README.md#list_team_members) - List team members
|
|
254
254
|
* [create_webhook](docs/sdks/fathom/README.md#create_webhook) - Create a webhook
|
|
255
255
|
* [delete_webhook](docs/sdks/fathom/README.md#delete_webhook) - Delete a webhook
|
|
256
|
-
* [get_token](docs/sdks/fathom/README.md#get_token) - Token endpoint for exchanging an authorization code or refreshing an access token
|
|
257
256
|
|
|
258
257
|
</details>
|
|
259
258
|
<!-- End Available Resources and Operations [operations] -->
|
|
@@ -490,27 +489,6 @@ with Fathom(
|
|
|
490
489
|
|
|
491
490
|
res = res.next()
|
|
492
491
|
|
|
493
|
-
```
|
|
494
|
-
|
|
495
|
-
### Override Server URL Per-Operation
|
|
496
|
-
|
|
497
|
-
The server URL can also be overridden on a per-operation basis, provided a server list was specified for the operation. For example:
|
|
498
|
-
```python
|
|
499
|
-
from fathom_python import Fathom, models
|
|
500
|
-
import os
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
with Fathom(
|
|
504
|
-
security=models.Security(
|
|
505
|
-
api_key_auth=os.getenv("FATHOM_API_KEY_AUTH", ""),
|
|
506
|
-
),
|
|
507
|
-
) as fathom:
|
|
508
|
-
|
|
509
|
-
res = fathom.get_token(grant_type=models.GetTokenGrantType.REFRESH_TOKEN, code="<value>", redirect_uri="https://aware-honesty.info", client_id="<id>", client_secret="<value>", server_url="https://fathom.video/external/v1")
|
|
510
|
-
|
|
511
|
-
# Handle response
|
|
512
|
-
print(res)
|
|
513
|
-
|
|
514
492
|
```
|
|
515
493
|
<!-- End Server Selection [server] -->
|
|
516
494
|
|
|
@@ -3,7 +3,7 @@ fathom_python/_hooks/__init__.py,sha256=9_7W5jAYw8rcO8Kfc-Ty-lB82BHfksAJJpVFb_Ue
|
|
|
3
3
|
fathom_python/_hooks/registration.py,sha256=1QZB41w6If7I9dXiOSQx6dhSc6BPWrnI5Q5bMOr4iVA,624
|
|
4
4
|
fathom_python/_hooks/sdkhooks.py,sha256=SyxWCUZakr1ZlORVhbgZJ-xM5W4QvTTS4Mymtte2LrI,2530
|
|
5
5
|
fathom_python/_hooks/types.py,sha256=OOkf6lkat8zumtftMupq5qK6pigExGTdcBF38RyT_gU,2992
|
|
6
|
-
fathom_python/_version.py,sha256=
|
|
6
|
+
fathom_python/_version.py,sha256=SSGDVArSMSi7xgfMx__aZLRgPIvNSz52c182t0NWoqM,470
|
|
7
7
|
fathom_python/basesdk.py,sha256=9qN6Bu3fwQg-SBOTMoF2vJRRKZc2MNJxgRRk6dpqM9Q,11919
|
|
8
8
|
fathom_python/errors/__init__.py,sha256=aoR8B-AGozzmcw2Ke7VFzd_rwuYfHDXP46FR2mOPTIw,1408
|
|
9
9
|
fathom_python/errors/apierror.py,sha256=R3kCxpU61dTgCgfMRAClKc1rQo_qYAQlzEfNlrKdx_A,1225
|
|
@@ -11,35 +11,33 @@ fathom_python/errors/fathomerror.py,sha256=jduH6kU8A6QXhH-OyYIaXDWcOXayfcJ1kGX1E
|
|
|
11
11
|
fathom_python/errors/no_response_error.py,sha256=FQG44Lq6uF7uUlzbUYfM3dJon6sbqXzJ0Ri6YrDdsEs,380
|
|
12
12
|
fathom_python/errors/responsevalidationerror.py,sha256=wL-ySlcDiysdVUiWJJA9W1YMdKuFc04EGPAQaJlY-_o,692
|
|
13
13
|
fathom_python/httpclient.py,sha256=Eu73urOAiZQtdUIyOUnPccxCiBbWEKrXG-JrRG3SLM4,3946
|
|
14
|
-
fathom_python/models/__init__.py,sha256=
|
|
14
|
+
fathom_python/models/__init__.py,sha256=8kW-0O47Ao9-BBBUbQdLrAexkyZZzYPgJu-8a7JDBeM,6511
|
|
15
15
|
fathom_python/models/actionitem.py,sha256=Ab36zDi8torOZAMXyTfVlcbayc-m1114XDLVBMJSljE,849
|
|
16
16
|
fathom_python/models/assignee.py,sha256=q7FZ4ai6dKZPBTP9cEVoYgwHyCWLkxjaTSy-9lu617U,1384
|
|
17
17
|
fathom_python/models/createwebhookop.py,sha256=Uel0Wbs49TQIqayPA6pUCDp7Xo1kvP06hGe4h5aE3A4,1336
|
|
18
18
|
fathom_python/models/crmcompanymatch.py,sha256=5Ksn1RxvOD4QaPdTMSsZUj2W1JD0zl_Q8fGA80ORL14,340
|
|
19
19
|
fathom_python/models/crmcontactmatch.py,sha256=eULhxxw54i9moVGJG5MbS8Ync0mw0-GmqiRO1mXvR2E,371
|
|
20
20
|
fathom_python/models/crmdealmatch.py,sha256=n8PTc9ceEaDS4wG2KGz13VUm1g525OhDU5mLv1hGru8,439
|
|
21
|
-
fathom_python/models/crmmatches.py,sha256=
|
|
21
|
+
fathom_python/models/crmmatches.py,sha256=NyvFBbCFg5xbV-9sg-GBO7edTThXZyOZayuELnCRvV0,2347
|
|
22
22
|
fathom_python/models/deletewebhookop.py,sha256=MWARoymWlECo7vcOZn6YY9JsE0T5SQZvDYfs_-3yMYc,564
|
|
23
23
|
fathom_python/models/fathomuser.py,sha256=65woueqr3ivmO5X8jni59-vEZ8g0MESNy9Pv_GjkN2U,1331
|
|
24
|
-
fathom_python/models/gettokenop.py,sha256=TdOzo_0WwQqstWQPUkmMRiSCud2oE2ighT5-M5HgyK0,1994
|
|
25
24
|
fathom_python/models/invitee.py,sha256=JKKZ-x2Mvm0d9pGX9If5WW88Vcavm5opObqgcmaTI78,1689
|
|
26
25
|
fathom_python/models/listmeetingsop.py,sha256=vTaGNNm5D_phZRbKgzhKgaeuYp4D06UN6zr7ePEeDm0,5898
|
|
27
26
|
fathom_python/models/listteammembersop.py,sha256=pOF9Y-5_e80sw6Eh-Mkr2DzFkIE4Y-wOjTyOI9W0_z8,868
|
|
28
27
|
fathom_python/models/listteamsop.py,sha256=JyNw9GHJIp5cOqU9pitgr_iDz4Uc9Dnr7Ju2JBdVfpk,624
|
|
29
|
-
fathom_python/models/meeting.py,sha256=
|
|
28
|
+
fathom_python/models/meeting.py,sha256=ce1giBFYDX2NeXZ5164l0KfFFDYz3dr79CyGpWjKAA4,3715
|
|
30
29
|
fathom_python/models/meetinglistresponse.py,sha256=DWgl0mQn76jXk91xK9syGFaxw_g-7zUOUBGscLQSXNg,1501
|
|
31
30
|
fathom_python/models/meetingsummary.py,sha256=AKmIdH7fci9FSEyHFEIoA0HnVvwhLURXNR2ZjexA1BY,1485
|
|
32
|
-
fathom_python/models/
|
|
33
|
-
fathom_python/models/security.py,sha256=11TuLaEmqCcibbIvjGuFOeDFttIDQoVOhPRImopsIOQ,1493
|
|
31
|
+
fathom_python/models/security.py,sha256=hcxt1Cf-Bg5WplpU91H68EyvsxiMISup1sCJgilsjxQ,1032
|
|
34
32
|
fathom_python/models/team.py,sha256=-bOFAH_rcYvRQU10bd9KUJSbV_3V3VrFQCIwrXH6o9U,358
|
|
35
33
|
fathom_python/models/teamlistresponse.py,sha256=7Sxs2CgfkOY1ROji1mJ6Wzpro54pL0arNoxo0ClqYvk,1451
|
|
36
34
|
fathom_python/models/teammember.py,sha256=Zrq8DeGXNB_x6QlumTdWTwYtStqkuypfC04N3DhSf2Y,401
|
|
37
35
|
fathom_python/models/teammemberlistresponse.py,sha256=fItFDZd7RtXPHs-jfGJad8tuBoulg0600ciSsWPz-ug,1493
|
|
38
36
|
fathom_python/models/transcriptitem.py,sha256=pGg4S32z86vBu0eaSLK1Tf1TvvvTZj10nJSRz8vW3JY,645
|
|
39
|
-
fathom_python/models/transcriptitemspeaker.py,sha256=
|
|
37
|
+
fathom_python/models/transcriptitemspeaker.py,sha256=GFF9PKJtf0aHaB8x8dievopoT43JUIcOAj70oFi5ilE,547
|
|
40
38
|
fathom_python/models/webhook.py,sha256=3LA4QgRAgkyQPcKXrOFWegn_StWPkDaj3MmRLjlpr5g,922
|
|
41
39
|
fathom_python/py.typed,sha256=zrp19r0G21lr2yRiMC0f8MFkQFGj9wMpSbboePMg8KM,59
|
|
42
|
-
fathom_python/sdk.py,sha256=
|
|
40
|
+
fathom_python/sdk.py,sha256=rXOV_XS34EzB7BcUGyvUBO92JGg2jo1tiWjRT4foXQk,50606
|
|
43
41
|
fathom_python/sdkconfiguration.py,sha256=s06HLCZA48IdYWZd8E9q8AK7WazaxybG7ZdqoWF-e7s,1586
|
|
44
42
|
fathom_python/types/__init__.py,sha256=RArOwSgeeTIva6h-4ttjXwMUeCkz10nAFBL9D-QljI4,377
|
|
45
43
|
fathom_python/types/basemodel.py,sha256=L79WXvTECbSqaJzs8D3ud_KdIWkU7Cx2wbohDAktE9E,1127
|
|
@@ -55,11 +53,11 @@ fathom_python/utils/metadata.py,sha256=Per2KFXXOqOtoUWXrlIfjrSrBg199KrRW0nKQDgHI
|
|
|
55
53
|
fathom_python/utils/queryparams.py,sha256=MTK6inMS1_WwjmMJEJmAn67tSHHJyarpdGRlorRHEtI,5899
|
|
56
54
|
fathom_python/utils/requestbodies.py,sha256=ySjEyjcLi731LNUahWvLOrES2HihuA8VrOJx4eQ7Qzg,2101
|
|
57
55
|
fathom_python/utils/retries.py,sha256=6yhfZifqIat9i76xF0lTR2jLj1IN9BNGyqqxATlEFPU,6348
|
|
58
|
-
fathom_python/utils/security.py,sha256=
|
|
56
|
+
fathom_python/utils/security.py,sha256=ObqK8V4EbMaHb9Gc3MpVs8mEY3F8I6H5Y_EsQf7lS0k,6133
|
|
59
57
|
fathom_python/utils/serializers.py,sha256=Hndks5M_rJXVub_N5lu0gKZQUoEmWrn6PN7R-0HwvOE,5999
|
|
60
58
|
fathom_python/utils/unmarshal_json_response.py,sha256=M1-rdgF0E7flFEKlOODnhlvvrvpdnD-ZF_E31FgEWVA,589
|
|
61
59
|
fathom_python/utils/url.py,sha256=BgGPgcTA6MRK4bF8fjP2dUopN3NzEzxWMXPBVg8NQUA,5254
|
|
62
60
|
fathom_python/utils/values.py,sha256=CcaCXEa3xHhkUDROyXZocN8f0bdITftv9Y0P9lTf0YM,3517
|
|
63
|
-
fathom_python-0.0.
|
|
64
|
-
fathom_python-0.0.
|
|
65
|
-
fathom_python-0.0.
|
|
61
|
+
fathom_python-0.0.31.dist-info/METADATA,sha256=1Xo7kdLeOQOJOPxQjF_X7GLyS76g_afudQcHBOIQkxM,19764
|
|
62
|
+
fathom_python-0.0.31.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
63
|
+
fathom_python-0.0.31.dist-info/RECORD,,
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
from enum import Enum
|
|
5
|
-
from fathom_python.types import BaseModel
|
|
6
|
-
from fathom_python.utils import FieldMetadata
|
|
7
|
-
from typing import Optional
|
|
8
|
-
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
GET_TOKEN_OP_SERVERS = [
|
|
12
|
-
# Auth server
|
|
13
|
-
"https://fathom.video/external/v1",
|
|
14
|
-
]
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
class GetTokenGrantType(str, Enum):
|
|
18
|
-
AUTHORIZATION_CODE = "authorization_code"
|
|
19
|
-
REFRESH_TOKEN = "refresh_token"
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
class GetTokenRequestTypedDict(TypedDict):
|
|
23
|
-
grant_type: GetTokenGrantType
|
|
24
|
-
code: str
|
|
25
|
-
r"""authorization code received from `/authorize`"""
|
|
26
|
-
redirect_uri: str
|
|
27
|
-
r"""must match the redirect URI used in `/authorize`"""
|
|
28
|
-
client_id: str
|
|
29
|
-
client_secret: str
|
|
30
|
-
refresh_token: NotRequired[str]
|
|
31
|
-
r"""refresh token issued previously"""
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
class GetTokenRequest(BaseModel):
|
|
35
|
-
grant_type: Annotated[GetTokenGrantType, FieldMetadata(form=True)]
|
|
36
|
-
|
|
37
|
-
code: Annotated[str, FieldMetadata(form=True)]
|
|
38
|
-
r"""authorization code received from `/authorize`"""
|
|
39
|
-
|
|
40
|
-
redirect_uri: Annotated[str, FieldMetadata(form=True)]
|
|
41
|
-
r"""must match the redirect URI used in `/authorize`"""
|
|
42
|
-
|
|
43
|
-
client_id: Annotated[str, FieldMetadata(form=True)]
|
|
44
|
-
|
|
45
|
-
client_secret: Annotated[str, FieldMetadata(form=True)]
|
|
46
|
-
|
|
47
|
-
refresh_token: Annotated[Optional[str], FieldMetadata(form=True)] = None
|
|
48
|
-
r"""refresh token issued previously"""
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
class GetTokenResponseTypedDict(TypedDict):
|
|
52
|
-
r"""Access token (and optionally refresh token) response"""
|
|
53
|
-
|
|
54
|
-
access_token: str
|
|
55
|
-
expires_in: int
|
|
56
|
-
r"""seconds until expiration"""
|
|
57
|
-
refresh_token: str
|
|
58
|
-
token_type: NotRequired[str]
|
|
59
|
-
scope: NotRequired[str]
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
class GetTokenResponse(BaseModel):
|
|
63
|
-
r"""Access token (and optionally refresh token) response"""
|
|
64
|
-
|
|
65
|
-
access_token: str
|
|
66
|
-
|
|
67
|
-
expires_in: int
|
|
68
|
-
r"""seconds until expiration"""
|
|
69
|
-
|
|
70
|
-
refresh_token: str
|
|
71
|
-
|
|
72
|
-
token_type: Optional[str] = None
|
|
73
|
-
|
|
74
|
-
scope: Optional[str] = None
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
from enum import Enum
|
|
5
|
-
from fathom_python.types import BaseModel
|
|
6
|
-
from fathom_python.utils import FieldMetadata, SecurityMetadata
|
|
7
|
-
from typing import Optional
|
|
8
|
-
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class GrantType(str, Enum):
|
|
12
|
-
AUTHORIZATION_CODE = "authorization_code"
|
|
13
|
-
REFRESH_TOKEN = "refresh_token"
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
class SchemeTokenRequestStandaloneTypedDict(TypedDict):
|
|
17
|
-
client_id: str
|
|
18
|
-
client_secret: str
|
|
19
|
-
redirect_uri: str
|
|
20
|
-
code: str
|
|
21
|
-
grant_type: NotRequired[GrantType]
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
class SchemeTokenRequestStandalone(BaseModel):
|
|
25
|
-
client_id: Annotated[
|
|
26
|
-
str, FieldMetadata(security=SecurityMetadata(field_name="client_id"))
|
|
27
|
-
]
|
|
28
|
-
|
|
29
|
-
client_secret: Annotated[
|
|
30
|
-
str, FieldMetadata(security=SecurityMetadata(field_name="client_secret"))
|
|
31
|
-
]
|
|
32
|
-
|
|
33
|
-
redirect_uri: Annotated[
|
|
34
|
-
str, FieldMetadata(security=SecurityMetadata(field_name="redirect_uri"))
|
|
35
|
-
]
|
|
36
|
-
|
|
37
|
-
code: Annotated[str, FieldMetadata(security=SecurityMetadata(field_name="code"))]
|
|
38
|
-
|
|
39
|
-
grant_type: Annotated[
|
|
40
|
-
Optional[GrantType],
|
|
41
|
-
FieldMetadata(security=SecurityMetadata(field_name="grant_type")),
|
|
42
|
-
] = None
|
|
File without changes
|