fathom-python 0.0.30__tar.gz → 0.0.31__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.
Files changed (67) hide show
  1. {fathom_python-0.0.30 → fathom_python-0.0.31}/PKG-INFO +21 -43
  2. {fathom_python-0.0.30 → fathom_python-0.0.31}/README.md +20 -42
  3. {fathom_python-0.0.30 → fathom_python-0.0.31}/pyproject.toml +1 -1
  4. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/_version.py +3 -3
  5. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/models/__init__.py +0 -31
  6. fathom_python-0.0.31/src/fathom_python/models/crmmatches.py +73 -0
  7. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/models/meeting.py +9 -4
  8. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/models/security.py +0 -14
  9. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/models/transcriptitemspeaker.py +6 -0
  10. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/sdk.py +0 -198
  11. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/utils/security.py +0 -25
  12. fathom_python-0.0.30/src/fathom_python/models/crmmatches.py +0 -36
  13. fathom_python-0.0.30/src/fathom_python/models/gettokenop.py +0 -74
  14. fathom_python-0.0.30/src/fathom_python/models/schemetokenrequeststandalone.py +0 -42
  15. {fathom_python-0.0.30 → fathom_python-0.0.31}/py.typed +0 -0
  16. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/__init__.py +0 -0
  17. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/_hooks/__init__.py +0 -0
  18. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/_hooks/registration.py +0 -0
  19. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/_hooks/sdkhooks.py +0 -0
  20. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/_hooks/types.py +0 -0
  21. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/basesdk.py +0 -0
  22. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/errors/__init__.py +0 -0
  23. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/errors/apierror.py +0 -0
  24. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/errors/fathomerror.py +0 -0
  25. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/errors/no_response_error.py +0 -0
  26. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/errors/responsevalidationerror.py +0 -0
  27. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/httpclient.py +0 -0
  28. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/models/actionitem.py +0 -0
  29. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/models/assignee.py +0 -0
  30. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/models/createwebhookop.py +0 -0
  31. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/models/crmcompanymatch.py +0 -0
  32. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/models/crmcontactmatch.py +0 -0
  33. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/models/crmdealmatch.py +0 -0
  34. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/models/deletewebhookop.py +0 -0
  35. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/models/fathomuser.py +0 -0
  36. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/models/invitee.py +0 -0
  37. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/models/listmeetingsop.py +0 -0
  38. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/models/listteammembersop.py +0 -0
  39. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/models/listteamsop.py +0 -0
  40. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/models/meetinglistresponse.py +0 -0
  41. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/models/meetingsummary.py +0 -0
  42. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/models/team.py +0 -0
  43. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/models/teamlistresponse.py +0 -0
  44. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/models/teammember.py +0 -0
  45. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/models/teammemberlistresponse.py +0 -0
  46. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/models/transcriptitem.py +0 -0
  47. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/models/webhook.py +0 -0
  48. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/py.typed +0 -0
  49. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/sdkconfiguration.py +0 -0
  50. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/types/__init__.py +0 -0
  51. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/types/basemodel.py +0 -0
  52. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/utils/__init__.py +0 -0
  53. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/utils/annotations.py +0 -0
  54. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/utils/datetimes.py +0 -0
  55. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/utils/enums.py +0 -0
  56. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/utils/eventstreaming.py +0 -0
  57. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/utils/forms.py +0 -0
  58. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/utils/headers.py +0 -0
  59. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/utils/logger.py +0 -0
  60. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/utils/metadata.py +0 -0
  61. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/utils/queryparams.py +0 -0
  62. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/utils/requestbodies.py +0 -0
  63. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/utils/retries.py +0 -0
  64. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/utils/serializers.py +0 -0
  65. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/utils/unmarshal_json_response.py +0 -0
  66. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/utils/url.py +0 -0
  67. {fathom_python-0.0.30 → fathom_python-0.0.31}/src/fathom_python/utils/values.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: fathom-python
3
- Version: 0.0.30
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
- * [fathom-python](#fathom-python)
34
- * [SDK Installation](#sdk-installation)
35
- * [IDE Support](#ide-support)
36
- * [SDK Example Usage](#sdk-example-usage)
37
- * [Authentication](#authentication)
38
- * [Available Resources and Operations](#available-resources-and-operations)
39
- * [Pagination](#pagination)
40
- * [Retries](#retries)
41
- * [Error Handling](#error-handling)
42
- * [Server Selection](#server-selection)
43
- * [Custom HTTP Client](#custom-http-client)
44
- * [Resource Management](#resource-management)
45
- * [Debugging](#debugging)
46
- * [Development](#development)
47
- * [Maturity](#maturity)
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 | Type | Scheme | Environment Variable |
204
- | -------------------------- | ------ | ----------- | --------------------------------- |
205
- | `api_key_auth` | apiKey | API key | `FATHOM_API_KEY_AUTH` |
206
- | `bearer_auth` | http | HTTP Bearer | `FATHOM_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
 
@@ -10,21 +10,22 @@ optionally receive webhooks when content from a new meeting is ready.
10
10
  <!-- Start Table of Contents [toc] -->
11
11
  ## Table of Contents
12
12
  <!-- $toc-max-depth=2 -->
13
- * [fathom-python](#fathom-python)
14
- * [SDK Installation](#sdk-installation)
15
- * [IDE Support](#ide-support)
16
- * [SDK Example Usage](#sdk-example-usage)
17
- * [Authentication](#authentication)
18
- * [Available Resources and Operations](#available-resources-and-operations)
19
- * [Pagination](#pagination)
20
- * [Retries](#retries)
21
- * [Error Handling](#error-handling)
22
- * [Server Selection](#server-selection)
23
- * [Custom HTTP Client](#custom-http-client)
24
- * [Resource Management](#resource-management)
25
- * [Debugging](#debugging)
26
- * [Development](#development)
27
- * [Maturity](#maturity)
13
+ * fathom-api
14
+ * SDK Installation
15
+ * Requirements
16
+ * SDK Example Usage
17
+ * Authentication
18
+ * Available Resources and Operations
19
+ * Standalone functions
20
+ * Pagination
21
+ * Retries
22
+ * Error Handling
23
+ * Custom HTTP Client
24
+ * Resource Management
25
+ * Debugging
26
+ * Development
27
+ * Maturity
28
+ * Custom HTTP Client
28
29
 
29
30
  <!-- End Table of Contents [toc] -->
30
31
 
@@ -180,11 +181,10 @@ asyncio.run(main())
180
181
 
181
182
  This SDK supports the following security schemes globally:
182
183
 
183
- | Name | Type | Scheme | Environment Variable |
184
- | -------------------------- | ------ | ----------- | --------------------------------- |
185
- | `api_key_auth` | apiKey | API key | `FATHOM_API_KEY_AUTH` |
186
- | `bearer_auth` | http | HTTP Bearer | `FATHOM_BEARER_AUTH` |
187
- | `token_request_standalone` | http | Custom HTTP | `FATHOM_TOKEN_REQUEST_STANDALONE` |
184
+ | Name | Type | Scheme | Environment Variable |
185
+ | -------------- | ------ | ----------- | --------------------- |
186
+ | `api_key_auth` | apiKey | API key | `FATHOM_API_KEY_AUTH` |
187
+ | `bearer_auth` | http | HTTP Bearer | `FATHOM_BEARER_AUTH` |
188
188
 
189
189
  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:
190
190
  ```python
@@ -233,7 +233,6 @@ with Fathom(
233
233
  * [list_team_members](docs/sdks/fathom/README.md#list_team_members) - List team members
234
234
  * [create_webhook](docs/sdks/fathom/README.md#create_webhook) - Create a webhook
235
235
  * [delete_webhook](docs/sdks/fathom/README.md#delete_webhook) - Delete a webhook
236
- * [get_token](docs/sdks/fathom/README.md#get_token) - Token endpoint for exchanging an authorization code or refreshing an access token
237
236
 
238
237
  </details>
239
238
  <!-- End Available Resources and Operations [operations] -->
@@ -470,27 +469,6 @@ with Fathom(
470
469
 
471
470
  res = res.next()
472
471
 
473
- ```
474
-
475
- ### Override Server URL Per-Operation
476
-
477
- The server URL can also be overridden on a per-operation basis, provided a server list was specified for the operation. For example:
478
- ```python
479
- from fathom_python import Fathom, models
480
- import os
481
-
482
-
483
- with Fathom(
484
- security=models.Security(
485
- api_key_auth=os.getenv("FATHOM_API_KEY_AUTH", ""),
486
- ),
487
- ) as fathom:
488
-
489
- 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")
490
-
491
- # Handle response
492
- print(res)
493
-
494
472
  ```
495
473
  <!-- End Server Selection [server] -->
496
474
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "fathom-python"
3
- version = "0.0.30"
3
+ version = "0.0.31"
4
4
  description = "Python Client SDK Generated by Speakeasy."
5
5
  authors = [{ name = "Speakeasy" },]
6
6
  readme = "README.md"
@@ -3,10 +3,10 @@
3
3
  import importlib.metadata
4
4
 
5
5
  __title__: str = "fathom-python"
6
- __version__: str = "0.0.30"
6
+ __version__: str = "0.0.31"
7
7
  __openapi_doc_version__: str = "1.0.0"
8
- __gen_version__: str = "2.669.0"
9
- __user_agent__: str = "speakeasy-sdk/python 0.0.30 2.669.0 1.0.0 fathom-python"
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:
@@ -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",
@@ -0,0 +1,73 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .crmcompanymatch import CRMCompanyMatch, CRMCompanyMatchTypedDict
5
+ from .crmcontactmatch import CRMContactMatch, CRMContactMatchTypedDict
6
+ from .crmdealmatch import CRMDealMatch, CRMDealMatchTypedDict
7
+ from fathom_python.types import (
8
+ BaseModel,
9
+ Nullable,
10
+ OptionalNullable,
11
+ UNSET,
12
+ UNSET_SENTINEL,
13
+ )
14
+ from pydantic import model_serializer
15
+ from typing import List, Optional
16
+ from typing_extensions import NotRequired, TypedDict
17
+
18
+
19
+ class CRMMatchesTypedDict(TypedDict):
20
+ r"""CRM data linked to the meeting. Only returns data from your or your team's linked CRM.
21
+ If no CRM is connected for the workspace, the `error` field will be populated.
22
+
23
+ """
24
+
25
+ contacts: NotRequired[List[CRMContactMatchTypedDict]]
26
+ companies: NotRequired[List[CRMCompanyMatchTypedDict]]
27
+ deals: NotRequired[List[CRMDealMatchTypedDict]]
28
+ error: NotRequired[Nullable[str]]
29
+
30
+
31
+ class CRMMatches(BaseModel):
32
+ r"""CRM data linked to the meeting. Only returns data from your or your team's linked CRM.
33
+ If no CRM is connected for the workspace, the `error` field will be populated.
34
+
35
+ """
36
+
37
+ contacts: Optional[List[CRMContactMatch]] = None
38
+
39
+ companies: Optional[List[CRMCompanyMatch]] = None
40
+
41
+ deals: Optional[List[CRMDealMatch]] = None
42
+
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
@@ -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, Optional
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: Optional[MeetingSummary] = None
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 = ["transcript", "action_items", "crm_matches"]
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)
@@ -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
+ """
@@ -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)
@@ -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,36 +0,0 @@
1
- """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
-
3
- from __future__ import annotations
4
- from .crmcompanymatch import CRMCompanyMatch, CRMCompanyMatchTypedDict
5
- from .crmcontactmatch import CRMContactMatch, CRMContactMatchTypedDict
6
- from .crmdealmatch import CRMDealMatch, CRMDealMatchTypedDict
7
- from fathom_python.types import BaseModel
8
- from typing import List, Optional
9
- from typing_extensions import NotRequired, TypedDict
10
-
11
-
12
- class CRMMatchesTypedDict(TypedDict):
13
- r"""CRM data linked to the meeting. Only returns data from your or your team's linked CRM.
14
- If no CRM is connected for the workspace, the `error` field will be populated.
15
-
16
- """
17
-
18
- contacts: NotRequired[List[CRMContactMatchTypedDict]]
19
- companies: NotRequired[List[CRMCompanyMatchTypedDict]]
20
- deals: NotRequired[List[CRMDealMatchTypedDict]]
21
- error: NotRequired[str]
22
-
23
-
24
- class CRMMatches(BaseModel):
25
- r"""CRM data linked to the meeting. Only returns data from your or your team's linked CRM.
26
- If no CRM is connected for the workspace, the `error` field will be populated.
27
-
28
- """
29
-
30
- contacts: Optional[List[CRMContactMatch]] = None
31
-
32
- companies: Optional[List[CRMCompanyMatch]] = None
33
-
34
- deals: Optional[List[CRMDealMatch]] = None
35
-
36
- error: Optional[str] = None
@@ -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