fathom-python 0.0.26__py3-none-any.whl → 0.0.28__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/__init__.py +0 -2
- fathom/base_client.py +12 -341
- fathom/core/client_wrapper.py +2 -2
- fathom/errors/__init__.py +3 -1
- fathom/errors/not_found_error.py +10 -0
- fathom/errors/too_many_requests_error.py +10 -0
- fathom/meetings/__init__.py +7 -0
- fathom/meetings/client.py +250 -0
- fathom/meetings/raw_client.py +349 -0
- fathom/meetings/types/__init__.py +7 -0
- fathom/team_members/__init__.py +4 -0
- fathom/team_members/client.py +119 -0
- fathom/team_members/raw_client.py +210 -0
- fathom/teams/__init__.py +4 -0
- fathom/teams/client.py +105 -0
- fathom/teams/raw_client.py +192 -0
- fathom/types/__init__.py +2 -2
- fathom/types/crm_deal_match.py +5 -1
- fathom/types/crm_matches.py +1 -1
- fathom/types/meeting.py +2 -2
- fathom/types/webhook.py +35 -0
- fathom/webhooks/__init__.py +4 -0
- fathom/webhooks/client.py +209 -0
- fathom/webhooks/raw_client.py +383 -0
- {fathom_python-0.0.26.dist-info → fathom_python-0.0.28.dist-info}/METADATA +1 -1
- {fathom_python-0.0.26.dist-info → fathom_python-0.0.28.dist-info}/RECORD +28 -13
- fathom/raw_base_client.py +0 -592
- /fathom/{types → meetings/types}/list_meetings_request_meeting_type.py +0 -0
- {fathom_python-0.0.26.dist-info → fathom_python-0.0.28.dist-info}/WHEEL +0 -0
fathom/__init__.py
CHANGED
|
@@ -11,7 +11,6 @@ from .types import (
|
|
|
11
11
|
CrmMatches,
|
|
12
12
|
FathomUser,
|
|
13
13
|
Invitee,
|
|
14
|
-
ListMeetingsRequestMeetingType,
|
|
15
14
|
Meeting,
|
|
16
15
|
MeetingListResponse,
|
|
17
16
|
MeetingMeetingType,
|
|
@@ -41,7 +40,6 @@ __all__ = [
|
|
|
41
40
|
"CrmMatches",
|
|
42
41
|
"FathomUser",
|
|
43
42
|
"Invitee",
|
|
44
|
-
"ListMeetingsRequestMeetingType",
|
|
45
43
|
"Meeting",
|
|
46
44
|
"MeetingListResponse",
|
|
47
45
|
"MeetingMeetingType",
|
fathom/base_client.py
CHANGED
|
@@ -4,14 +4,11 @@ import typing
|
|
|
4
4
|
|
|
5
5
|
import httpx
|
|
6
6
|
from .core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
|
|
7
|
-
from .core.pagination import AsyncPager, SyncPager
|
|
8
|
-
from .core.request_options import RequestOptions
|
|
9
7
|
from .environment import FathomApiEnvironment
|
|
10
|
-
from .
|
|
11
|
-
from .
|
|
12
|
-
from .
|
|
13
|
-
from .
|
|
14
|
-
from .types.team_member import TeamMember
|
|
8
|
+
from .meetings.client import AsyncMeetingsClient, MeetingsClient
|
|
9
|
+
from .team_members.client import AsyncTeamMembersClient, TeamMembersClient
|
|
10
|
+
from .teams.client import AsyncTeamsClient, TeamsClient
|
|
11
|
+
from .webhooks.client import AsyncWebhooksClient, WebhooksClient
|
|
15
12
|
|
|
16
13
|
|
|
17
14
|
class BaseClient:
|
|
@@ -69,167 +66,10 @@ class BaseClient:
|
|
|
69
66
|
else httpx.Client(timeout=_defaulted_timeout),
|
|
70
67
|
timeout=_defaulted_timeout,
|
|
71
68
|
)
|
|
72
|
-
self.
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
"""
|
|
77
|
-
Retrieves a raw implementation of this client that returns raw responses.
|
|
78
|
-
|
|
79
|
-
Returns
|
|
80
|
-
-------
|
|
81
|
-
RawBaseClient
|
|
82
|
-
"""
|
|
83
|
-
return self._raw_client
|
|
84
|
-
|
|
85
|
-
def list_meetings(
|
|
86
|
-
self,
|
|
87
|
-
*,
|
|
88
|
-
recorded_by: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
|
|
89
|
-
teams: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
|
|
90
|
-
calendar_invitees: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
|
|
91
|
-
created_after: typing.Optional[str] = None,
|
|
92
|
-
meeting_type: typing.Optional[ListMeetingsRequestMeetingType] = None,
|
|
93
|
-
include_transcript: typing.Optional[bool] = None,
|
|
94
|
-
cursor: typing.Optional[str] = None,
|
|
95
|
-
request_options: typing.Optional[RequestOptions] = None,
|
|
96
|
-
) -> SyncPager[Meeting]:
|
|
97
|
-
"""
|
|
98
|
-
Parameters
|
|
99
|
-
----------
|
|
100
|
-
recorded_by : typing.Optional[typing.Union[str, typing.Sequence[str]]]
|
|
101
|
-
Email addresses of meeting owners.
|
|
102
|
-
|
|
103
|
-
Pass the parameter once per value, e.g.
|
|
104
|
-
`recorded_by[]=ceo@acme.com&recorded_by[]=pm@acme.com`.
|
|
105
|
-
|
|
106
|
-
Returns meetings hosted by any of the specified users.
|
|
107
|
-
|
|
108
|
-
teams : typing.Optional[typing.Union[str, typing.Sequence[str]]]
|
|
109
|
-
Team names to filter by.
|
|
110
|
-
|
|
111
|
-
Pass the parameter once per value, e.g.
|
|
112
|
-
`teams[]=Sales&teams[]=Engineering`.
|
|
113
|
-
|
|
114
|
-
Returns meetings that belong to any of the specified teams.
|
|
115
|
-
|
|
116
|
-
calendar_invitees : typing.Optional[typing.Union[str, typing.Sequence[str]]]
|
|
117
|
-
Email addresses of calendar_invitees.
|
|
118
|
-
|
|
119
|
-
Pass the parameter once per value, e.g.
|
|
120
|
-
`calendar_invitees[]=cfo@acme.com&calendar_invitees[]=legal@acme.com`.
|
|
121
|
-
|
|
122
|
-
Returns meetings where any of the given email addresses appear
|
|
123
|
-
in the calendar_invitees list.
|
|
124
|
-
|
|
125
|
-
created_after : typing.Optional[str]
|
|
126
|
-
Filter to meetings with created_at after this timestamp, e.g. `created_after=2025-01-01T00:00:00Z`.
|
|
127
|
-
|
|
128
|
-
meeting_type : typing.Optional[ListMeetingsRequestMeetingType]
|
|
129
|
-
Filter by meeting type.
|
|
130
|
-
|
|
131
|
-
include_transcript : typing.Optional[bool]
|
|
132
|
-
Include the transcript for each meeting.
|
|
133
|
-
|
|
134
|
-
cursor : typing.Optional[str]
|
|
135
|
-
Cursor for pagination.
|
|
136
|
-
|
|
137
|
-
request_options : typing.Optional[RequestOptions]
|
|
138
|
-
Request-specific configuration.
|
|
139
|
-
|
|
140
|
-
Returns
|
|
141
|
-
-------
|
|
142
|
-
SyncPager[Meeting]
|
|
143
|
-
Paginated list of meetings.
|
|
144
|
-
|
|
145
|
-
Examples
|
|
146
|
-
--------
|
|
147
|
-
from fathom import FathomApi
|
|
148
|
-
client = FathomApi(api_key="YOUR_API_KEY", )
|
|
149
|
-
response = client.list_meetings()
|
|
150
|
-
for item in response:
|
|
151
|
-
yield item
|
|
152
|
-
# alternatively, you can paginate page-by-page
|
|
153
|
-
for page in response.iter_pages():
|
|
154
|
-
yield page
|
|
155
|
-
"""
|
|
156
|
-
return self._raw_client.list_meetings(
|
|
157
|
-
recorded_by=recorded_by,
|
|
158
|
-
teams=teams,
|
|
159
|
-
calendar_invitees=calendar_invitees,
|
|
160
|
-
created_after=created_after,
|
|
161
|
-
meeting_type=meeting_type,
|
|
162
|
-
include_transcript=include_transcript,
|
|
163
|
-
cursor=cursor,
|
|
164
|
-
request_options=request_options,
|
|
165
|
-
)
|
|
166
|
-
|
|
167
|
-
def list_teams(
|
|
168
|
-
self, *, cursor: typing.Optional[str] = None, request_options: typing.Optional[RequestOptions] = None
|
|
169
|
-
) -> SyncPager[Team]:
|
|
170
|
-
"""
|
|
171
|
-
Parameters
|
|
172
|
-
----------
|
|
173
|
-
cursor : typing.Optional[str]
|
|
174
|
-
Cursor for pagination.
|
|
175
|
-
|
|
176
|
-
request_options : typing.Optional[RequestOptions]
|
|
177
|
-
Request-specific configuration.
|
|
178
|
-
|
|
179
|
-
Returns
|
|
180
|
-
-------
|
|
181
|
-
SyncPager[Team]
|
|
182
|
-
Paginated list of teams.
|
|
183
|
-
|
|
184
|
-
Examples
|
|
185
|
-
--------
|
|
186
|
-
from fathom import FathomApi
|
|
187
|
-
client = FathomApi(api_key="YOUR_API_KEY", )
|
|
188
|
-
response = client.list_teams()
|
|
189
|
-
for item in response:
|
|
190
|
-
yield item
|
|
191
|
-
# alternatively, you can paginate page-by-page
|
|
192
|
-
for page in response.iter_pages():
|
|
193
|
-
yield page
|
|
194
|
-
"""
|
|
195
|
-
return self._raw_client.list_teams(cursor=cursor, request_options=request_options)
|
|
196
|
-
|
|
197
|
-
def list_team_members(
|
|
198
|
-
self,
|
|
199
|
-
*,
|
|
200
|
-
team: typing.Optional[str] = None,
|
|
201
|
-
cursor: typing.Optional[str] = None,
|
|
202
|
-
request_options: typing.Optional[RequestOptions] = None,
|
|
203
|
-
) -> SyncPager[TeamMember]:
|
|
204
|
-
"""
|
|
205
|
-
Parameters
|
|
206
|
-
----------
|
|
207
|
-
team : typing.Optional[str]
|
|
208
|
-
Team name to filter by.
|
|
209
|
-
|
|
210
|
-
cursor : typing.Optional[str]
|
|
211
|
-
Cursor for pagination.
|
|
212
|
-
|
|
213
|
-
request_options : typing.Optional[RequestOptions]
|
|
214
|
-
Request-specific configuration.
|
|
215
|
-
|
|
216
|
-
Returns
|
|
217
|
-
-------
|
|
218
|
-
SyncPager[TeamMember]
|
|
219
|
-
Paginated list of team members.
|
|
220
|
-
|
|
221
|
-
Examples
|
|
222
|
-
--------
|
|
223
|
-
from fathom import FathomApi
|
|
224
|
-
client = FathomApi(api_key="YOUR_API_KEY", )
|
|
225
|
-
response = client.list_team_members()
|
|
226
|
-
for item in response:
|
|
227
|
-
yield item
|
|
228
|
-
# alternatively, you can paginate page-by-page
|
|
229
|
-
for page in response.iter_pages():
|
|
230
|
-
yield page
|
|
231
|
-
"""
|
|
232
|
-
return self._raw_client.list_team_members(team=team, cursor=cursor, request_options=request_options)
|
|
69
|
+
self.meetings = MeetingsClient(client_wrapper=self._client_wrapper)
|
|
70
|
+
self.teams = TeamsClient(client_wrapper=self._client_wrapper)
|
|
71
|
+
self.team_members = TeamMembersClient(client_wrapper=self._client_wrapper)
|
|
72
|
+
self.webhooks = WebhooksClient(client_wrapper=self._client_wrapper)
|
|
233
73
|
|
|
234
74
|
|
|
235
75
|
class AsyncBaseClient:
|
|
@@ -287,179 +127,10 @@ class AsyncBaseClient:
|
|
|
287
127
|
else httpx.AsyncClient(timeout=_defaulted_timeout),
|
|
288
128
|
timeout=_defaulted_timeout,
|
|
289
129
|
)
|
|
290
|
-
self.
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
"""
|
|
295
|
-
Retrieves a raw implementation of this client that returns raw responses.
|
|
296
|
-
|
|
297
|
-
Returns
|
|
298
|
-
-------
|
|
299
|
-
AsyncRawBaseClient
|
|
300
|
-
"""
|
|
301
|
-
return self._raw_client
|
|
302
|
-
|
|
303
|
-
async def list_meetings(
|
|
304
|
-
self,
|
|
305
|
-
*,
|
|
306
|
-
recorded_by: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
|
|
307
|
-
teams: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
|
|
308
|
-
calendar_invitees: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
|
|
309
|
-
created_after: typing.Optional[str] = None,
|
|
310
|
-
meeting_type: typing.Optional[ListMeetingsRequestMeetingType] = None,
|
|
311
|
-
include_transcript: typing.Optional[bool] = None,
|
|
312
|
-
cursor: typing.Optional[str] = None,
|
|
313
|
-
request_options: typing.Optional[RequestOptions] = None,
|
|
314
|
-
) -> AsyncPager[Meeting]:
|
|
315
|
-
"""
|
|
316
|
-
Parameters
|
|
317
|
-
----------
|
|
318
|
-
recorded_by : typing.Optional[typing.Union[str, typing.Sequence[str]]]
|
|
319
|
-
Email addresses of meeting owners.
|
|
320
|
-
|
|
321
|
-
Pass the parameter once per value, e.g.
|
|
322
|
-
`recorded_by[]=ceo@acme.com&recorded_by[]=pm@acme.com`.
|
|
323
|
-
|
|
324
|
-
Returns meetings hosted by any of the specified users.
|
|
325
|
-
|
|
326
|
-
teams : typing.Optional[typing.Union[str, typing.Sequence[str]]]
|
|
327
|
-
Team names to filter by.
|
|
328
|
-
|
|
329
|
-
Pass the parameter once per value, e.g.
|
|
330
|
-
`teams[]=Sales&teams[]=Engineering`.
|
|
331
|
-
|
|
332
|
-
Returns meetings that belong to any of the specified teams.
|
|
333
|
-
|
|
334
|
-
calendar_invitees : typing.Optional[typing.Union[str, typing.Sequence[str]]]
|
|
335
|
-
Email addresses of calendar_invitees.
|
|
336
|
-
|
|
337
|
-
Pass the parameter once per value, e.g.
|
|
338
|
-
`calendar_invitees[]=cfo@acme.com&calendar_invitees[]=legal@acme.com`.
|
|
339
|
-
|
|
340
|
-
Returns meetings where any of the given email addresses appear
|
|
341
|
-
in the calendar_invitees list.
|
|
342
|
-
|
|
343
|
-
created_after : typing.Optional[str]
|
|
344
|
-
Filter to meetings with created_at after this timestamp, e.g. `created_after=2025-01-01T00:00:00Z`.
|
|
345
|
-
|
|
346
|
-
meeting_type : typing.Optional[ListMeetingsRequestMeetingType]
|
|
347
|
-
Filter by meeting type.
|
|
348
|
-
|
|
349
|
-
include_transcript : typing.Optional[bool]
|
|
350
|
-
Include the transcript for each meeting.
|
|
351
|
-
|
|
352
|
-
cursor : typing.Optional[str]
|
|
353
|
-
Cursor for pagination.
|
|
354
|
-
|
|
355
|
-
request_options : typing.Optional[RequestOptions]
|
|
356
|
-
Request-specific configuration.
|
|
357
|
-
|
|
358
|
-
Returns
|
|
359
|
-
-------
|
|
360
|
-
AsyncPager[Meeting]
|
|
361
|
-
Paginated list of meetings.
|
|
362
|
-
|
|
363
|
-
Examples
|
|
364
|
-
--------
|
|
365
|
-
from fathom import AsyncFathomApi
|
|
366
|
-
import asyncio
|
|
367
|
-
client = AsyncFathomApi(api_key="YOUR_API_KEY", )
|
|
368
|
-
async def main() -> None:
|
|
369
|
-
response = await client.list_meetings()
|
|
370
|
-
async for item in response:
|
|
371
|
-
yield item
|
|
372
|
-
|
|
373
|
-
# alternatively, you can paginate page-by-page
|
|
374
|
-
async for page in response.iter_pages():
|
|
375
|
-
yield page
|
|
376
|
-
asyncio.run(main())
|
|
377
|
-
"""
|
|
378
|
-
return await self._raw_client.list_meetings(
|
|
379
|
-
recorded_by=recorded_by,
|
|
380
|
-
teams=teams,
|
|
381
|
-
calendar_invitees=calendar_invitees,
|
|
382
|
-
created_after=created_after,
|
|
383
|
-
meeting_type=meeting_type,
|
|
384
|
-
include_transcript=include_transcript,
|
|
385
|
-
cursor=cursor,
|
|
386
|
-
request_options=request_options,
|
|
387
|
-
)
|
|
388
|
-
|
|
389
|
-
async def list_teams(
|
|
390
|
-
self, *, cursor: typing.Optional[str] = None, request_options: typing.Optional[RequestOptions] = None
|
|
391
|
-
) -> AsyncPager[Team]:
|
|
392
|
-
"""
|
|
393
|
-
Parameters
|
|
394
|
-
----------
|
|
395
|
-
cursor : typing.Optional[str]
|
|
396
|
-
Cursor for pagination.
|
|
397
|
-
|
|
398
|
-
request_options : typing.Optional[RequestOptions]
|
|
399
|
-
Request-specific configuration.
|
|
400
|
-
|
|
401
|
-
Returns
|
|
402
|
-
-------
|
|
403
|
-
AsyncPager[Team]
|
|
404
|
-
Paginated list of teams.
|
|
405
|
-
|
|
406
|
-
Examples
|
|
407
|
-
--------
|
|
408
|
-
from fathom import AsyncFathomApi
|
|
409
|
-
import asyncio
|
|
410
|
-
client = AsyncFathomApi(api_key="YOUR_API_KEY", )
|
|
411
|
-
async def main() -> None:
|
|
412
|
-
response = await client.list_teams()
|
|
413
|
-
async for item in response:
|
|
414
|
-
yield item
|
|
415
|
-
|
|
416
|
-
# alternatively, you can paginate page-by-page
|
|
417
|
-
async for page in response.iter_pages():
|
|
418
|
-
yield page
|
|
419
|
-
asyncio.run(main())
|
|
420
|
-
"""
|
|
421
|
-
return await self._raw_client.list_teams(cursor=cursor, request_options=request_options)
|
|
422
|
-
|
|
423
|
-
async def list_team_members(
|
|
424
|
-
self,
|
|
425
|
-
*,
|
|
426
|
-
team: typing.Optional[str] = None,
|
|
427
|
-
cursor: typing.Optional[str] = None,
|
|
428
|
-
request_options: typing.Optional[RequestOptions] = None,
|
|
429
|
-
) -> AsyncPager[TeamMember]:
|
|
430
|
-
"""
|
|
431
|
-
Parameters
|
|
432
|
-
----------
|
|
433
|
-
team : typing.Optional[str]
|
|
434
|
-
Team name to filter by.
|
|
435
|
-
|
|
436
|
-
cursor : typing.Optional[str]
|
|
437
|
-
Cursor for pagination.
|
|
438
|
-
|
|
439
|
-
request_options : typing.Optional[RequestOptions]
|
|
440
|
-
Request-specific configuration.
|
|
441
|
-
|
|
442
|
-
Returns
|
|
443
|
-
-------
|
|
444
|
-
AsyncPager[TeamMember]
|
|
445
|
-
Paginated list of team members.
|
|
446
|
-
|
|
447
|
-
Examples
|
|
448
|
-
--------
|
|
449
|
-
from fathom import AsyncFathomApi
|
|
450
|
-
import asyncio
|
|
451
|
-
client = AsyncFathomApi(api_key="YOUR_API_KEY", )
|
|
452
|
-
async def main() -> None:
|
|
453
|
-
response = await client.list_team_members()
|
|
454
|
-
async for item in response:
|
|
455
|
-
yield item
|
|
456
|
-
|
|
457
|
-
# alternatively, you can paginate page-by-page
|
|
458
|
-
async for page in response.iter_pages():
|
|
459
|
-
yield page
|
|
460
|
-
asyncio.run(main())
|
|
461
|
-
"""
|
|
462
|
-
return await self._raw_client.list_team_members(team=team, cursor=cursor, request_options=request_options)
|
|
130
|
+
self.meetings = AsyncMeetingsClient(client_wrapper=self._client_wrapper)
|
|
131
|
+
self.teams = AsyncTeamsClient(client_wrapper=self._client_wrapper)
|
|
132
|
+
self.team_members = AsyncTeamMembersClient(client_wrapper=self._client_wrapper)
|
|
133
|
+
self.webhooks = AsyncWebhooksClient(client_wrapper=self._client_wrapper)
|
|
463
134
|
|
|
464
135
|
|
|
465
136
|
def _get_base_url(*, base_url: typing.Optional[str] = None, environment: FathomApiEnvironment) -> str:
|
fathom/core/client_wrapper.py
CHANGED
|
@@ -14,10 +14,10 @@ class BaseClientWrapper:
|
|
|
14
14
|
|
|
15
15
|
def get_headers(self) -> typing.Dict[str, str]:
|
|
16
16
|
headers: typing.Dict[str, str] = {
|
|
17
|
-
"User-Agent": "fathom-python/0.0.
|
|
17
|
+
"User-Agent": "fathom-python/0.0.28",
|
|
18
18
|
"X-Fern-Language": "Python",
|
|
19
19
|
"X-Fern-SDK-Name": "fathom-python",
|
|
20
|
-
"X-Fern-SDK-Version": "0.0.
|
|
20
|
+
"X-Fern-SDK-Version": "0.0.28",
|
|
21
21
|
}
|
|
22
22
|
headers["X-Api-Key"] = self.api_key
|
|
23
23
|
return headers
|
fathom/errors/__init__.py
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
# isort: skip_file
|
|
4
4
|
|
|
5
5
|
from .bad_request_error import BadRequestError
|
|
6
|
+
from .not_found_error import NotFoundError
|
|
7
|
+
from .too_many_requests_error import TooManyRequestsError
|
|
6
8
|
from .unauthorized_error import UnauthorizedError
|
|
7
9
|
|
|
8
|
-
__all__ = ["BadRequestError", "UnauthorizedError"]
|
|
10
|
+
__all__ = ["BadRequestError", "NotFoundError", "TooManyRequestsError", "UnauthorizedError"]
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
from ..core.api_error import ApiError
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class NotFoundError(ApiError):
|
|
9
|
+
def __init__(self, body: typing.Optional[typing.Any], headers: typing.Optional[typing.Dict[str, str]] = None):
|
|
10
|
+
super().__init__(status_code=404, headers=headers, body=body)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
from ..core.api_error import ApiError
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class TooManyRequestsError(ApiError):
|
|
9
|
+
def __init__(self, body: typing.Optional[typing.Any], headers: typing.Optional[typing.Dict[str, str]] = None):
|
|
10
|
+
super().__init__(status_code=429, headers=headers, body=body)
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
|
|
6
|
+
from ..core.pagination import AsyncPager, SyncPager
|
|
7
|
+
from ..core.request_options import RequestOptions
|
|
8
|
+
from ..types.meeting import Meeting
|
|
9
|
+
from .raw_client import AsyncRawMeetingsClient, RawMeetingsClient
|
|
10
|
+
from .types.list_meetings_request_meeting_type import ListMeetingsRequestMeetingType
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class MeetingsClient:
|
|
14
|
+
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
|
15
|
+
self._raw_client = RawMeetingsClient(client_wrapper=client_wrapper)
|
|
16
|
+
|
|
17
|
+
@property
|
|
18
|
+
def with_raw_response(self) -> RawMeetingsClient:
|
|
19
|
+
"""
|
|
20
|
+
Retrieves a raw implementation of this client that returns raw responses.
|
|
21
|
+
|
|
22
|
+
Returns
|
|
23
|
+
-------
|
|
24
|
+
RawMeetingsClient
|
|
25
|
+
"""
|
|
26
|
+
return self._raw_client
|
|
27
|
+
|
|
28
|
+
def list_meetings(
|
|
29
|
+
self,
|
|
30
|
+
*,
|
|
31
|
+
calendar_invitees: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
|
|
32
|
+
calendar_invitees_domains: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
|
|
33
|
+
created_after: typing.Optional[str] = None,
|
|
34
|
+
created_before: typing.Optional[str] = None,
|
|
35
|
+
cursor: typing.Optional[str] = None,
|
|
36
|
+
include_crm_matches: typing.Optional[bool] = None,
|
|
37
|
+
include_transcript: typing.Optional[bool] = None,
|
|
38
|
+
meeting_type: typing.Optional[ListMeetingsRequestMeetingType] = None,
|
|
39
|
+
recorded_by: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
|
|
40
|
+
teams: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
|
|
41
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
42
|
+
) -> SyncPager[Meeting]:
|
|
43
|
+
"""
|
|
44
|
+
Parameters
|
|
45
|
+
----------
|
|
46
|
+
calendar_invitees : typing.Optional[typing.Union[str, typing.Sequence[str]]]
|
|
47
|
+
Email address of calendar_invitees to filter by.
|
|
48
|
+
|
|
49
|
+
Pass the parameter once per value, e.g.
|
|
50
|
+
`calendar_invitees[]=cfo@acme.com&calendar_invitees[]=legal@acme.com`.
|
|
51
|
+
|
|
52
|
+
Returns meetings where any of the given email addresses appear
|
|
53
|
+
in the calendar_invitees list.
|
|
54
|
+
|
|
55
|
+
calendar_invitees_domains : typing.Optional[typing.Union[str, typing.Sequence[str]]]
|
|
56
|
+
Domains of the companies to filter by. Exact match.
|
|
57
|
+
|
|
58
|
+
Pass the parameter once per value, e.g.
|
|
59
|
+
`calendar_invitees_domains[]=acme.com&calendar_invitees_domains[]=client.com`.
|
|
60
|
+
|
|
61
|
+
Returns meetings where any of the given company domains appear in the meeting.
|
|
62
|
+
|
|
63
|
+
created_after : typing.Optional[str]
|
|
64
|
+
Filter to meetings with created_at after this timestamp, e.g. `created_after=2025-01-01T00:00:00Z`.
|
|
65
|
+
|
|
66
|
+
created_before : typing.Optional[str]
|
|
67
|
+
Filter to meetings with created_at before this timestamp, e.g. `created_before=2025-01-01T00:00:00Z`.
|
|
68
|
+
|
|
69
|
+
cursor : typing.Optional[str]
|
|
70
|
+
Cursor for pagination.
|
|
71
|
+
|
|
72
|
+
include_crm_matches : typing.Optional[bool]
|
|
73
|
+
Include CRM matches for each meeting. Only returns data from your or your team's linked CRM.
|
|
74
|
+
|
|
75
|
+
include_transcript : typing.Optional[bool]
|
|
76
|
+
Include the transcript for each meeting.
|
|
77
|
+
|
|
78
|
+
meeting_type : typing.Optional[ListMeetingsRequestMeetingType]
|
|
79
|
+
Filter by meeting type.
|
|
80
|
+
|
|
81
|
+
recorded_by : typing.Optional[typing.Union[str, typing.Sequence[str]]]
|
|
82
|
+
Email addresses of meeting owners.
|
|
83
|
+
|
|
84
|
+
Pass the parameter once per value, e.g.
|
|
85
|
+
`recorded_by[]=ceo@acme.com&recorded_by[]=pm@acme.com`.
|
|
86
|
+
|
|
87
|
+
Returns meetings hosted by any of the specified users.
|
|
88
|
+
|
|
89
|
+
teams : typing.Optional[typing.Union[str, typing.Sequence[str]]]
|
|
90
|
+
Team names to filter by.
|
|
91
|
+
|
|
92
|
+
Pass the parameter once per value, e.g.
|
|
93
|
+
`teams[]=Sales&teams[]=Engineering`.
|
|
94
|
+
|
|
95
|
+
Returns meetings that belong to any of the specified teams.
|
|
96
|
+
|
|
97
|
+
request_options : typing.Optional[RequestOptions]
|
|
98
|
+
Request-specific configuration.
|
|
99
|
+
|
|
100
|
+
Returns
|
|
101
|
+
-------
|
|
102
|
+
SyncPager[Meeting]
|
|
103
|
+
Paginated list of meetings.
|
|
104
|
+
|
|
105
|
+
Examples
|
|
106
|
+
--------
|
|
107
|
+
from fathom import FathomApi
|
|
108
|
+
client = FathomApi(api_key="YOUR_API_KEY", )
|
|
109
|
+
response = client.meetings.list_meetings()
|
|
110
|
+
for item in response:
|
|
111
|
+
yield item
|
|
112
|
+
# alternatively, you can paginate page-by-page
|
|
113
|
+
for page in response.iter_pages():
|
|
114
|
+
yield page
|
|
115
|
+
"""
|
|
116
|
+
return self._raw_client.list_meetings(
|
|
117
|
+
calendar_invitees=calendar_invitees,
|
|
118
|
+
calendar_invitees_domains=calendar_invitees_domains,
|
|
119
|
+
created_after=created_after,
|
|
120
|
+
created_before=created_before,
|
|
121
|
+
cursor=cursor,
|
|
122
|
+
include_crm_matches=include_crm_matches,
|
|
123
|
+
include_transcript=include_transcript,
|
|
124
|
+
meeting_type=meeting_type,
|
|
125
|
+
recorded_by=recorded_by,
|
|
126
|
+
teams=teams,
|
|
127
|
+
request_options=request_options,
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
class AsyncMeetingsClient:
|
|
132
|
+
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
133
|
+
self._raw_client = AsyncRawMeetingsClient(client_wrapper=client_wrapper)
|
|
134
|
+
|
|
135
|
+
@property
|
|
136
|
+
def with_raw_response(self) -> AsyncRawMeetingsClient:
|
|
137
|
+
"""
|
|
138
|
+
Retrieves a raw implementation of this client that returns raw responses.
|
|
139
|
+
|
|
140
|
+
Returns
|
|
141
|
+
-------
|
|
142
|
+
AsyncRawMeetingsClient
|
|
143
|
+
"""
|
|
144
|
+
return self._raw_client
|
|
145
|
+
|
|
146
|
+
async def list_meetings(
|
|
147
|
+
self,
|
|
148
|
+
*,
|
|
149
|
+
calendar_invitees: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
|
|
150
|
+
calendar_invitees_domains: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
|
|
151
|
+
created_after: typing.Optional[str] = None,
|
|
152
|
+
created_before: typing.Optional[str] = None,
|
|
153
|
+
cursor: typing.Optional[str] = None,
|
|
154
|
+
include_crm_matches: typing.Optional[bool] = None,
|
|
155
|
+
include_transcript: typing.Optional[bool] = None,
|
|
156
|
+
meeting_type: typing.Optional[ListMeetingsRequestMeetingType] = None,
|
|
157
|
+
recorded_by: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
|
|
158
|
+
teams: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
|
|
159
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
160
|
+
) -> AsyncPager[Meeting]:
|
|
161
|
+
"""
|
|
162
|
+
Parameters
|
|
163
|
+
----------
|
|
164
|
+
calendar_invitees : typing.Optional[typing.Union[str, typing.Sequence[str]]]
|
|
165
|
+
Email address of calendar_invitees to filter by.
|
|
166
|
+
|
|
167
|
+
Pass the parameter once per value, e.g.
|
|
168
|
+
`calendar_invitees[]=cfo@acme.com&calendar_invitees[]=legal@acme.com`.
|
|
169
|
+
|
|
170
|
+
Returns meetings where any of the given email addresses appear
|
|
171
|
+
in the calendar_invitees list.
|
|
172
|
+
|
|
173
|
+
calendar_invitees_domains : typing.Optional[typing.Union[str, typing.Sequence[str]]]
|
|
174
|
+
Domains of the companies to filter by. Exact match.
|
|
175
|
+
|
|
176
|
+
Pass the parameter once per value, e.g.
|
|
177
|
+
`calendar_invitees_domains[]=acme.com&calendar_invitees_domains[]=client.com`.
|
|
178
|
+
|
|
179
|
+
Returns meetings where any of the given company domains appear in the meeting.
|
|
180
|
+
|
|
181
|
+
created_after : typing.Optional[str]
|
|
182
|
+
Filter to meetings with created_at after this timestamp, e.g. `created_after=2025-01-01T00:00:00Z`.
|
|
183
|
+
|
|
184
|
+
created_before : typing.Optional[str]
|
|
185
|
+
Filter to meetings with created_at before this timestamp, e.g. `created_before=2025-01-01T00:00:00Z`.
|
|
186
|
+
|
|
187
|
+
cursor : typing.Optional[str]
|
|
188
|
+
Cursor for pagination.
|
|
189
|
+
|
|
190
|
+
include_crm_matches : typing.Optional[bool]
|
|
191
|
+
Include CRM matches for each meeting. Only returns data from your or your team's linked CRM.
|
|
192
|
+
|
|
193
|
+
include_transcript : typing.Optional[bool]
|
|
194
|
+
Include the transcript for each meeting.
|
|
195
|
+
|
|
196
|
+
meeting_type : typing.Optional[ListMeetingsRequestMeetingType]
|
|
197
|
+
Filter by meeting type.
|
|
198
|
+
|
|
199
|
+
recorded_by : typing.Optional[typing.Union[str, typing.Sequence[str]]]
|
|
200
|
+
Email addresses of meeting owners.
|
|
201
|
+
|
|
202
|
+
Pass the parameter once per value, e.g.
|
|
203
|
+
`recorded_by[]=ceo@acme.com&recorded_by[]=pm@acme.com`.
|
|
204
|
+
|
|
205
|
+
Returns meetings hosted by any of the specified users.
|
|
206
|
+
|
|
207
|
+
teams : typing.Optional[typing.Union[str, typing.Sequence[str]]]
|
|
208
|
+
Team names to filter by.
|
|
209
|
+
|
|
210
|
+
Pass the parameter once per value, e.g.
|
|
211
|
+
`teams[]=Sales&teams[]=Engineering`.
|
|
212
|
+
|
|
213
|
+
Returns meetings that belong to any of the specified teams.
|
|
214
|
+
|
|
215
|
+
request_options : typing.Optional[RequestOptions]
|
|
216
|
+
Request-specific configuration.
|
|
217
|
+
|
|
218
|
+
Returns
|
|
219
|
+
-------
|
|
220
|
+
AsyncPager[Meeting]
|
|
221
|
+
Paginated list of meetings.
|
|
222
|
+
|
|
223
|
+
Examples
|
|
224
|
+
--------
|
|
225
|
+
from fathom import AsyncFathomApi
|
|
226
|
+
import asyncio
|
|
227
|
+
client = AsyncFathomApi(api_key="YOUR_API_KEY", )
|
|
228
|
+
async def main() -> None:
|
|
229
|
+
response = await client.meetings.list_meetings()
|
|
230
|
+
async for item in response:
|
|
231
|
+
yield item
|
|
232
|
+
|
|
233
|
+
# alternatively, you can paginate page-by-page
|
|
234
|
+
async for page in response.iter_pages():
|
|
235
|
+
yield page
|
|
236
|
+
asyncio.run(main())
|
|
237
|
+
"""
|
|
238
|
+
return await self._raw_client.list_meetings(
|
|
239
|
+
calendar_invitees=calendar_invitees,
|
|
240
|
+
calendar_invitees_domains=calendar_invitees_domains,
|
|
241
|
+
created_after=created_after,
|
|
242
|
+
created_before=created_before,
|
|
243
|
+
cursor=cursor,
|
|
244
|
+
include_crm_matches=include_crm_matches,
|
|
245
|
+
include_transcript=include_transcript,
|
|
246
|
+
meeting_type=meeting_type,
|
|
247
|
+
recorded_by=recorded_by,
|
|
248
|
+
teams=teams,
|
|
249
|
+
request_options=request_options,
|
|
250
|
+
)
|