podengine 0.1.0__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.
@@ -0,0 +1,2461 @@
1
+ # AUTO-GENERATED by scripts/generate-python-client.ts — DO NOT EDIT BY HAND.
2
+ # Regenerate with: bun run scripts/generate-python-client.ts
3
+ # ruff: noqa
4
+
5
+ from __future__ import annotations
6
+
7
+ from datetime import datetime
8
+ from typing import Any, Literal
9
+
10
+ from pydantic import BaseModel, ConfigDict, Field
11
+
12
+
13
+ class AskAgentProjectPodcastRelevancySearchOptionsVariant1Project(BaseModel):
14
+ model_config = ConfigDict(populate_by_name=True)
15
+
16
+ project_id: str = Field(alias="projectId")
17
+ exclude_ignored_podcasts: bool | None = Field(default=None, alias="excludeIgnoredPodcasts")
18
+ exclude_podcasts_on_list: bool | None = Field(default=None, alias="excludePodcastsOnList")
19
+ include_podcast_relevancy: bool | None = Field(default=None, alias="includePodcastRelevancy")
20
+ exclude_relvancy_values: list[float] | None = Field(default=None, alias="excludeRelvancyValues")
21
+ force_recalculate_relevancy: bool | None = Field(default=None, alias="forceRecalculateRelevancy")
22
+
23
+
24
+ class AskAgentProjectPodcastRelevancySearchOptionsVariant1SearchTermsItemSearchTermOptions(BaseModel):
25
+ model_config = ConfigDict(populate_by_name=True)
26
+
27
+ match_mode: Literal["must", "not", "optional"] = Field(alias="matchMode")
28
+ phrase_match: bool | None = Field(default=None, alias="phraseMatch")
29
+ slop: float | None = None
30
+ fuzzy: bool | None = None
31
+
32
+
33
+ class AskAgentProjectPodcastRelevancySearchOptionsVariant1SearchTermsItem(BaseModel):
34
+ model_config = ConfigDict(populate_by_name=True)
35
+
36
+ search_term: str = Field(alias="searchTerm")
37
+ search_type: Literal["text", "embeddings"] = Field(alias="searchType")
38
+ search_targets: list[Literal["podcast-title", "podcast-description"]] = Field(alias="searchTargets")
39
+ search_term_options: AskAgentProjectPodcastRelevancySearchOptionsVariant1SearchTermsItemSearchTermOptions = Field(
40
+ alias="searchTermOptions"
41
+ )
42
+
43
+
44
+ class AskAgentProjectPodcastRelevancySearchOptionsVariant1PodcastAuthorityScoreAuthorityScore(BaseModel):
45
+ model_config = ConfigDict(populate_by_name=True)
46
+
47
+ min: float | None
48
+ max: float | None
49
+
50
+
51
+ class AskAgentProjectPodcastRelevancySearchOptionsVariant1PodcastAuthorityScore(BaseModel):
52
+ model_config = ConfigDict(populate_by_name=True)
53
+
54
+ authority_score: AskAgentProjectPodcastRelevancySearchOptionsVariant1PodcastAuthorityScoreAuthorityScore | None = (
55
+ Field(default=None, alias="authorityScore")
56
+ )
57
+ quality_score: AskAgentProjectPodcastRelevancySearchOptionsVariant1PodcastAuthorityScoreAuthorityScore | None = (
58
+ Field(default=None, alias="qualityScore")
59
+ )
60
+ engagement_score: AskAgentProjectPodcastRelevancySearchOptionsVariant1PodcastAuthorityScoreAuthorityScore | None = (
61
+ Field(default=None, alias="engagementScore")
62
+ )
63
+ social_score: AskAgentProjectPodcastRelevancySearchOptionsVariant1PodcastAuthorityScoreAuthorityScore | None = (
64
+ Field(default=None, alias="socialScore")
65
+ )
66
+ youtube_score: AskAgentProjectPodcastRelevancySearchOptionsVariant1PodcastAuthorityScoreAuthorityScore | None = (
67
+ Field(default=None, alias="youtubeScore")
68
+ )
69
+
70
+
71
+ class AskAgentProjectPodcastRelevancySearchOptionsVariant1SortOrderItem(BaseModel):
72
+ model_config = ConfigDict(populate_by_name=True)
73
+
74
+ field: Literal["relevance", "recentActivity", "title", "appleReviews", "spotifyReviews"]
75
+ direction: Literal["asc", "desc"] | None = None
76
+ null_order: Literal["first", "last"] | None = Field(default=None, alias="nullOrder")
77
+
78
+
79
+ class AskAgentProjectPodcastRelevancySearchOptionsVariant1(BaseModel):
80
+ model_config = ConfigDict(populate_by_name=True)
81
+
82
+ cursor: str | None = None
83
+ page_size: int | None = Field(default=None, alias="pageSize")
84
+ project: AskAgentProjectPodcastRelevancySearchOptionsVariant1Project | None = None
85
+ project_id: str | None = Field(default=None, alias="projectId")
86
+ search_terms: list[AskAgentProjectPodcastRelevancySearchOptionsVariant1SearchTermsItem] | None = Field(
87
+ default=None, alias="searchTerms"
88
+ )
89
+ exclude_itunes_genres: list[str] | None = Field(default=None, alias="excludeItunesGenres")
90
+ exclude_podcast_ids: list[str] | None = Field(default=None, alias="excludePodcastIds")
91
+ exclude_episode_ids: list[str] | None = Field(default=None, alias="excludeEpisodeIds")
92
+ explicit: Literal["clean", "explicit"] | None = None
93
+ founded_since: Any | None = Field(default=None, alias="foundedSince")
94
+ has_primary_contact: bool | None = Field(default=None, alias="hasPrimaryContact")
95
+ has_socials: (
96
+ list[
97
+ Literal[
98
+ "beehiiv",
99
+ "behance",
100
+ "bluesky",
101
+ "discord",
102
+ "facebook",
103
+ "github",
104
+ "instagram",
105
+ "linkedin",
106
+ "linktree",
107
+ "mastodon",
108
+ "medium",
109
+ "patreon",
110
+ "pinterest",
111
+ "reddit",
112
+ "snapchat",
113
+ "soundcloud",
114
+ "substack",
115
+ "threads",
116
+ "tiktok",
117
+ "tumblr",
118
+ "twitch",
119
+ "twitter",
120
+ "vimeo",
121
+ "whatsapp",
122
+ "youtube",
123
+ ]
124
+ ]
125
+ | None
126
+ ) = Field(default=None, alias="hasSocials")
127
+ include_itunes_genres: list[str] | None = Field(default=None, alias="includeItunesGenres")
128
+ include_podcast_ids: list[str] | None = Field(default=None, alias="includePodcastIds")
129
+ languages: list[str] | None = None
130
+ last_episode_date_since: Any | None = Field(default=None, alias="lastEpisodeDateSince")
131
+ max_total_episodes: int | None = Field(default=None, alias="maxTotalEpisodes")
132
+ min_castbox_plays: int | None = Field(default=None, alias="minCastboxPlays")
133
+ min_castbox_subscribers: int | None = Field(default=None, alias="minCastboxSubscribers")
134
+ min_itunes_rating: float | None = Field(default=None, alias="minItunesRating")
135
+ min_itunes_rating_count: int | None = Field(default=None, alias="minItunesRatingCount")
136
+ min_spotify_rating: float | None = Field(default=None, alias="minSpotifyRating")
137
+ min_spotify_rating_count: int | None = Field(default=None, alias="minSpotifyRatingCount")
138
+ min_total_episodes: int | None = Field(default=None, alias="minTotalEpisodes")
139
+ podcast_countries: list[str] | None = Field(default=None, alias="podcastCountries")
140
+ podcast_has_guests: bool | None = Field(default=None, alias="podcastHasGuests")
141
+ podcast_authority_score: AskAgentProjectPodcastRelevancySearchOptionsVariant1PodcastAuthorityScore | None = Field(
142
+ default=None, alias="podcastAuthorityScore"
143
+ )
144
+ sort_order: list[AskAgentProjectPodcastRelevancySearchOptionsVariant1SortOrderItem] | None = Field(
145
+ default=None, alias="sortOrder"
146
+ )
147
+
148
+
149
+ class AskAgentProjectPodcastRelevancySearchOptionsVariant2SearchTermsItem(BaseModel):
150
+ model_config = ConfigDict(populate_by_name=True)
151
+
152
+ search_term: str = Field(alias="searchTerm")
153
+ search_type: Literal["text", "embeddings"] = Field(alias="searchType")
154
+ search_targets: list[
155
+ Literal["podcast-title", "podcast-description", "episode-title", "episode-description", "transcript"]
156
+ ] = Field(alias="searchTargets")
157
+ search_term_options: AskAgentProjectPodcastRelevancySearchOptionsVariant1SearchTermsItemSearchTermOptions = Field(
158
+ alias="searchTermOptions"
159
+ )
160
+
161
+
162
+ class AskAgentProjectPodcastRelevancySearchOptionsVariant2(BaseModel):
163
+ model_config = ConfigDict(populate_by_name=True)
164
+
165
+ cursor: str | None = None
166
+ page_size: int | None = Field(default=None, alias="pageSize")
167
+ project: AskAgentProjectPodcastRelevancySearchOptionsVariant1Project | None = None
168
+ project_id: str | None = Field(default=None, alias="projectId")
169
+ search_terms: list[AskAgentProjectPodcastRelevancySearchOptionsVariant2SearchTermsItem] | None = Field(
170
+ default=None, alias="searchTerms"
171
+ )
172
+ exclude_itunes_genres: list[str] | None = Field(default=None, alias="excludeItunesGenres")
173
+ exclude_podcast_ids: list[str] | None = Field(default=None, alias="excludePodcastIds")
174
+ exclude_episode_ids: list[str] | None = Field(default=None, alias="excludeEpisodeIds")
175
+ explicit: Literal["clean", "explicit"] | None = None
176
+ founded_since: Any | None = Field(default=None, alias="foundedSince")
177
+ has_primary_contact: bool | None = Field(default=None, alias="hasPrimaryContact")
178
+ has_socials: (
179
+ list[
180
+ Literal[
181
+ "beehiiv",
182
+ "behance",
183
+ "bluesky",
184
+ "discord",
185
+ "facebook",
186
+ "github",
187
+ "instagram",
188
+ "linkedin",
189
+ "linktree",
190
+ "mastodon",
191
+ "medium",
192
+ "patreon",
193
+ "pinterest",
194
+ "reddit",
195
+ "snapchat",
196
+ "soundcloud",
197
+ "substack",
198
+ "threads",
199
+ "tiktok",
200
+ "tumblr",
201
+ "twitch",
202
+ "twitter",
203
+ "vimeo",
204
+ "whatsapp",
205
+ "youtube",
206
+ ]
207
+ ]
208
+ | None
209
+ ) = Field(default=None, alias="hasSocials")
210
+ include_itunes_genres: list[str] | None = Field(default=None, alias="includeItunesGenres")
211
+ include_podcast_ids: list[str] | None = Field(default=None, alias="includePodcastIds")
212
+ languages: list[str] | None = None
213
+ last_episode_date_since: Any | None = Field(default=None, alias="lastEpisodeDateSince")
214
+ max_total_episodes: int | None = Field(default=None, alias="maxTotalEpisodes")
215
+ min_castbox_plays: int | None = Field(default=None, alias="minCastboxPlays")
216
+ min_castbox_subscribers: int | None = Field(default=None, alias="minCastboxSubscribers")
217
+ min_itunes_rating: float | None = Field(default=None, alias="minItunesRating")
218
+ min_itunes_rating_count: int | None = Field(default=None, alias="minItunesRatingCount")
219
+ min_spotify_rating: float | None = Field(default=None, alias="minSpotifyRating")
220
+ min_spotify_rating_count: int | None = Field(default=None, alias="minSpotifyRatingCount")
221
+ min_total_episodes: int | None = Field(default=None, alias="minTotalEpisodes")
222
+ podcast_countries: list[str] | None = Field(default=None, alias="podcastCountries")
223
+ podcast_has_guests: bool | None = Field(default=None, alias="podcastHasGuests")
224
+ podcast_authority_score: AskAgentProjectPodcastRelevancySearchOptionsVariant1PodcastAuthorityScore | None = Field(
225
+ default=None, alias="podcastAuthorityScore"
226
+ )
227
+ sort_order: list[AskAgentProjectPodcastRelevancySearchOptionsVariant1SortOrderItem] | None = Field(
228
+ default=None, alias="sortOrder"
229
+ )
230
+ include_transcript_snippet: bool | None = Field(default=None, alias="includeTranscriptSnippet")
231
+ transcript_snippet_length: int | None = Field(default=None, alias="transcriptSnippetLength")
232
+ transcript_highlight_length: int | None = Field(default=None, alias="transcriptHighlightLength")
233
+ include_episode_ids: list[str] | None = Field(default=None, alias="includeEpisodeIds")
234
+ published_since: Any | None = Field(default=None, alias="publishedSince")
235
+ has_transcript: bool | None = Field(default=None, alias="hasTranscript")
236
+ episode_updated_since: Any | None = Field(default=None, alias="episodeUpdatedSince")
237
+ episode_created_since: Any | None = Field(default=None, alias="episodeCreatedSince")
238
+
239
+
240
+ class AskAgentProjectPodcastRelevancyResponseResultAnswer(BaseModel):
241
+ model_config = ConfigDict(populate_by_name=True)
242
+
243
+ rating: int
244
+ justification: str
245
+ strengths: Any
246
+ concerns: Any
247
+
248
+
249
+ class AskAgentProjectPodcastRelevancyResponseResult(BaseModel):
250
+ model_config = ConfigDict(populate_by_name=True)
251
+
252
+ answer: AskAgentProjectPodcastRelevancyResponseResultAnswer
253
+
254
+
255
+ class AskAgentProjectPodcastRelevancyResponse(BaseModel):
256
+ model_config = ConfigDict(populate_by_name=True)
257
+
258
+ result: AskAgentProjectPodcastRelevancyResponseResult
259
+
260
+
261
+ class GetAlternativeSpellingsResponse(BaseModel):
262
+ model_config = ConfigDict(populate_by_name=True)
263
+
264
+ spellings: list[str]
265
+
266
+
267
+ class CreateAlertConfigEmailSettings(BaseModel):
268
+ model_config = ConfigDict(populate_by_name=True)
269
+
270
+ frequency: Literal["hourly", "daily", "weekly"]
271
+
272
+
273
+ class CreateAlertConfigAdditionalAlertSettings(BaseModel):
274
+ model_config = ConfigDict(populate_by_name=True)
275
+
276
+ other_emails: list[str] | None = Field(default=None, alias="otherEmails")
277
+ other_spellings: list[str] | None = Field(default=None, alias="otherSpellings")
278
+
279
+
280
+ class CreateAlertConfigResponseCreatedAlertConfig(BaseModel):
281
+ model_config = ConfigDict(populate_by_name=True)
282
+
283
+ id: str
284
+ created_by_user_id: str = Field(alias="createdByUserId")
285
+ team_id: str = Field(alias="teamId")
286
+ created_at: Any = Field(alias="createdAt")
287
+ updated_at: Any = Field(alias="updatedAt")
288
+ alert_name: str = Field(alias="alertName")
289
+ alert_type: Literal["person", "company", "custom-keyword"] = Field(alias="alertType")
290
+ enabled: bool
291
+ alert_settings: Any = Field(alias="alertSettings")
292
+ email_settings: CreateAlertConfigEmailSettings = Field(alias="emailSettings")
293
+ last_run_date: Any | None = Field(alias="lastRunDate")
294
+
295
+
296
+ class CreateAlertConfigResponse(BaseModel):
297
+ model_config = ConfigDict(populate_by_name=True)
298
+
299
+ created_alert_config: CreateAlertConfigResponseCreatedAlertConfig = Field(alias="createdAlertConfig")
300
+
301
+
302
+ class GetAlertConfigsResponseOptions(BaseModel):
303
+ model_config = ConfigDict(populate_by_name=True)
304
+
305
+ enabled: bool | None = None
306
+ alert_config_id: str | None = Field(default=None, alias="alertConfigId")
307
+ sort_by: Literal["lastRunDate", "alertName"] | None = Field(default=None, alias="sortBy")
308
+ sort_direction: Literal["asc", "desc"] | None = Field(default=None, alias="sortDirection")
309
+
310
+
311
+ class GetAlertConfigsResponse(BaseModel):
312
+ model_config = ConfigDict(populate_by_name=True)
313
+
314
+ options: GetAlertConfigsResponseOptions
315
+ alert_configs: list[CreateAlertConfigResponseCreatedAlertConfig] = Field(alias="alertConfigs")
316
+
317
+
318
+ class GetAlertConfigResponse(BaseModel):
319
+ model_config = ConfigDict(populate_by_name=True)
320
+
321
+ alert_config: CreateAlertConfigResponseCreatedAlertConfig = Field(alias="alertConfig")
322
+
323
+
324
+ class UpdateAlertConfigUpdates(BaseModel):
325
+ model_config = ConfigDict(populate_by_name=True)
326
+
327
+ alert_name: str | None = Field(default=None, alias="alertName")
328
+ email_settings: CreateAlertConfigEmailSettings | None = Field(default=None, alias="emailSettings")
329
+ alert_settings: Any | None = Field(default=None, alias="alertSettings")
330
+ enabled: bool | None = None
331
+
332
+
333
+ class UpdateAlertConfigResponse(BaseModel):
334
+ model_config = ConfigDict(populate_by_name=True)
335
+
336
+ updated_alert_config: CreateAlertConfigResponseCreatedAlertConfig = Field(alias="updatedAlertConfig")
337
+
338
+
339
+ class DeleteAlertConfigResponse(BaseModel):
340
+ model_config = ConfigDict(populate_by_name=True)
341
+
342
+ deleted_alert_config_id: str = Field(alias="deletedAlertConfigId")
343
+
344
+
345
+ class GetAlertMatchHistoryResponseOptions(BaseModel):
346
+ model_config = ConfigDict(populate_by_name=True)
347
+
348
+ alert_config_id: str | None = Field(default=None, alias="alertConfigId")
349
+ page: float | None = None
350
+ since_date: Any | None = Field(default=None, alias="sinceDate")
351
+
352
+
353
+ class GetAlertMatchHistoryResponse(BaseModel):
354
+ model_config = ConfigDict(populate_by_name=True)
355
+
356
+ options: GetAlertMatchHistoryResponseOptions
357
+ total_alert_matches: float = Field(alias="totalAlertMatches")
358
+ alert_matches: list[Any] = Field(alias="alertMatches")
359
+
360
+
361
+ class GetChartResponseOptions(BaseModel):
362
+ model_config = ConfigDict(populate_by_name=True)
363
+
364
+ chart_type: Literal["apple", "spotify"] | None = Field(default=None, alias="chartType")
365
+ category: str | None = None
366
+ country: str | None = None
367
+ positions_limit: float | None = Field(default=None, alias="positionsLimit")
368
+ date: str | None = None
369
+
370
+
371
+ class GetChartResponseChartChart(BaseModel):
372
+ model_config = ConfigDict(populate_by_name=True)
373
+
374
+ chart_type: Literal["apple", "spotify"] = Field(alias="chartType")
375
+ category: str
376
+ country: str
377
+ chart_date: str = Field(alias="chartDate")
378
+
379
+
380
+ class GetChartResponseChartPositionsItemPodcastOnChart(BaseModel):
381
+ model_config = ConfigDict(populate_by_name=True)
382
+
383
+ podcast_on_chart_id: str = Field(alias="podcastOnChartId")
384
+ title: str
385
+ image_url: str | None = Field(alias="imageUrl")
386
+
387
+
388
+ class GetChartResponseChartPositionsItemPodenginePodcastAuthorityScore(BaseModel):
389
+ model_config = ConfigDict(populate_by_name=True)
390
+
391
+ calculated_at: Any = Field(alias="calculatedAt")
392
+ authority_score: float = Field(alias="authorityScore")
393
+ quality_score: float = Field(alias="qualityScore")
394
+ youtube_score: float = Field(alias="youtubeScore")
395
+ social_score: float = Field(alias="socialScore")
396
+ engagement_score: float = Field(alias="engagementScore")
397
+
398
+
399
+ class GetChartResponseChartPositionsItemPodenginePodcast(BaseModel):
400
+ model_config = ConfigDict(populate_by_name=True)
401
+
402
+ author: str | None
403
+ authority_score: GetChartResponseChartPositionsItemPodenginePodcastAuthorityScore | None = Field(
404
+ alias="authorityScore"
405
+ )
406
+ genres: list[str]
407
+ id: str
408
+ image_url: str | None = Field(alias="imageUrl")
409
+ language: str
410
+ last_episode_published_at: Any = Field(alias="lastEpisodePublishedAt")
411
+ slug: str
412
+ title: str
413
+ title_latest: str = Field(alias="titleLatest")
414
+
415
+
416
+ class GetChartResponseChartPositionsItem(BaseModel):
417
+ model_config = ConfigDict(populate_by_name=True)
418
+
419
+ position: float
420
+ podcast_on_chart: GetChartResponseChartPositionsItemPodcastOnChart = Field(alias="podcastOnChart")
421
+ podengine_podcast: GetChartResponseChartPositionsItemPodenginePodcast | None = Field(alias="podenginePodcast")
422
+
423
+
424
+ class GetChartResponseChart(BaseModel):
425
+ model_config = ConfigDict(populate_by_name=True)
426
+
427
+ chart: GetChartResponseChartChart
428
+ positions: list[GetChartResponseChartPositionsItem]
429
+
430
+
431
+ class GetChartResponse(BaseModel):
432
+ model_config = ConfigDict(populate_by_name=True)
433
+
434
+ options: GetChartResponseOptions
435
+ chart: GetChartResponseChart | None
436
+
437
+
438
+ class GetLatestChartResponseOptions(BaseModel):
439
+ model_config = ConfigDict(populate_by_name=True)
440
+
441
+ chart_type: Literal["apple", "spotify"] | None = Field(default=None, alias="chartType")
442
+ category: str | None = None
443
+ country: str | None = None
444
+ positions_limit: float | None = Field(default=None, alias="positionsLimit")
445
+
446
+
447
+ class GetLatestChartResponse(BaseModel):
448
+ model_config = ConfigDict(populate_by_name=True)
449
+
450
+ options: GetLatestChartResponseOptions
451
+ chart: GetChartResponseChart | None
452
+
453
+
454
+ class GetCategoriesByChartTypeResponse(BaseModel):
455
+ model_config = ConfigDict(populate_by_name=True)
456
+
457
+ categories: list[str]
458
+
459
+
460
+ class GetAvailableCountriesByChartTypeResponse(BaseModel):
461
+ model_config = ConfigDict(populate_by_name=True)
462
+
463
+ countries: list[str]
464
+
465
+
466
+ class GetLatestEpisodesResponseLatestPodcastsItemPodcast(BaseModel):
467
+ model_config = ConfigDict(populate_by_name=True)
468
+
469
+ author: str | None
470
+ authority_score: GetChartResponseChartPositionsItemPodenginePodcastAuthorityScore | None = Field(
471
+ alias="authorityScore"
472
+ )
473
+ genres: list[str]
474
+ id: str
475
+ image_url: str | None = Field(alias="imageUrl")
476
+ language: str
477
+ last_episode_published_at: Any = Field(alias="lastEpisodePublishedAt")
478
+ slug: str
479
+ title: str
480
+ title_latest: str = Field(alias="titleLatest")
481
+
482
+
483
+ class GetLatestEpisodesResponseLatestPodcastsItemEpisodesItemEpisodeGuestsAndHostsItem(BaseModel):
484
+ model_config = ConfigDict(populate_by_name=True)
485
+
486
+ name: str
487
+ type: Literal["host", "guest", "unknown", "mentioned"]
488
+ image_url: str | None = Field(alias="imageUrl")
489
+
490
+
491
+ class GetLatestEpisodesResponseLatestPodcastsItemEpisodesItemAudienceEstimateAudienceDemographics(BaseModel):
492
+ model_config = ConfigDict(populate_by_name=True)
493
+
494
+ age_range: Literal["Under 18", "18-24", "25-34", "35-44", "45-54", "55+"] = Field(alias="ageRange")
495
+ gender_skew: Literal[
496
+ "Male 0% Female 100%",
497
+ "Male 20% Female 80%",
498
+ "Male 40% Female 60%",
499
+ "Male 50% Female 50%",
500
+ "Male 60% Female 40%",
501
+ "Male 80% Female 20%",
502
+ "Male 100% Female 0%",
503
+ ] = Field(alias="genderSkew")
504
+ education_level: Literal[
505
+ "No High School", "High School", "Some College", "Bachelors Degree", "Masters Degree", "Doctorate"
506
+ ] = Field(alias="educationLevel")
507
+ income_level: Literal[
508
+ "Under $25K", "$25K-$50K", "$50K-$75K", "$75K-$100K", "$100K-$150K", "$150K-$200K", "$200K+"
509
+ ] = Field(alias="incomeLevel")
510
+ example_listener_profile: str = Field(alias="exampleListenerProfile")
511
+
512
+
513
+ class GetLatestEpisodesResponseLatestPodcastsItemEpisodesItemAudienceEstimate(BaseModel):
514
+ model_config = ConfigDict(populate_by_name=True)
515
+
516
+ audience_demographics: (
517
+ GetLatestEpisodesResponseLatestPodcastsItemEpisodesItemAudienceEstimateAudienceDemographics | None
518
+ ) = Field(alias="audienceDemographics")
519
+ estimated_monthly_listeners: float | None = Field(alias="estimatedMonthlyListeners")
520
+ estimated_monthy_listeners_calculated_at: Any | None = Field(alias="estimatedMonthyListenersCalculatedAt")
521
+
522
+
523
+ class GetLatestEpisodesResponseLatestPodcastsItemEpisodesItemYoutubeEpisodeDetails(BaseModel):
524
+ model_config = ConfigDict(populate_by_name=True)
525
+
526
+ youtube_link: str = Field(alias="youtubeLink")
527
+ youtube_match_confidence: float = Field(alias="youtubeMatchConfidence")
528
+ youtube_view_count: float | None = Field(alias="youtubeViewCount")
529
+ youtube_data_fetched_at: Any | None = Field(alias="youtubeDataFetchedAt")
530
+
531
+
532
+ class GetLatestEpisodesResponseLatestPodcastsItemEpisodesItem(BaseModel):
533
+ model_config = ConfigDict(populate_by_name=True)
534
+
535
+ deep_analysis_requested_at: Any | None = Field(alias="deepAnalysisRequestedAt")
536
+ description: str | None
537
+ duration_seconds: float | None = Field(alias="durationSeconds")
538
+ enclosure_url: str = Field(alias="enclosureUrl")
539
+ episode_id: str = Field(alias="episodeId")
540
+ episode_guests_and_hosts: (
541
+ list[GetLatestEpisodesResponseLatestPodcastsItemEpisodesItemEpisodeGuestsAndHostsItem] | None
542
+ ) = Field(alias="episodeGuestsAndHosts")
543
+ episode_slug: str = Field(alias="episodeSlug")
544
+ episode_short_description: str | None = Field(alias="episodeShortDescription")
545
+ episode_sponsors: list[str] | None = Field(alias="episodeSponsors")
546
+ has_transcript: bool = Field(alias="hasTranscript")
547
+ has_video: bool = Field(alias="hasVideo")
548
+ video_url: str | None = Field(alias="videoUrl")
549
+ image_url: str | None = Field(alias="imageUrl")
550
+ episode_thumbnail_rss_url: str | None = Field(alias="episodeThumbnailRssUrl")
551
+ podcast_id: str = Field(alias="podcastId")
552
+ podcast_slug: str = Field(alias="podcastSlug")
553
+ published_at: Any = Field(alias="publishedAt")
554
+ title: str
555
+ transcript_id: str | None = Field(alias="transcriptId")
556
+ transcription_requested_at: Any | None = Field(alias="transcriptionRequestedAt")
557
+ audience_estimate: GetLatestEpisodesResponseLatestPodcastsItemEpisodesItemAudienceEstimate | None = Field(
558
+ default=None, alias="audienceEstimate"
559
+ )
560
+ youtube_episode_details: GetLatestEpisodesResponseLatestPodcastsItemEpisodesItemYoutubeEpisodeDetails | None = (
561
+ Field(alias="youtubeEpisodeDetails")
562
+ )
563
+ apple_podcasts_url: str | None = Field(alias="applePodcastsUrl")
564
+
565
+
566
+ class GetLatestEpisodesResponseLatestPodcastsItem(BaseModel):
567
+ model_config = ConfigDict(populate_by_name=True)
568
+
569
+ podcast: GetLatestEpisodesResponseLatestPodcastsItemPodcast
570
+ episodes: list[GetLatestEpisodesResponseLatestPodcastsItemEpisodesItem]
571
+
572
+
573
+ class GetLatestEpisodesResponse(BaseModel):
574
+ model_config = ConfigDict(populate_by_name=True)
575
+
576
+ latest_podcasts: list[GetLatestEpisodesResponseLatestPodcastsItem] = Field(alias="latestPodcasts")
577
+
578
+
579
+ class GetEpisodeDetailsByIdResponse(BaseModel):
580
+ model_config = ConfigDict(populate_by_name=True)
581
+
582
+ episode: GetLatestEpisodesResponseLatestPodcastsItemEpisodesItem
583
+
584
+
585
+ class GetEpisodeTranscriptTextResponseEpisodeTranscriptText(BaseModel):
586
+ model_config = ConfigDict(populate_by_name=True)
587
+
588
+ podcast_id: str = Field(alias="podcastId")
589
+ episode_id: str = Field(alias="episodeId")
590
+ transcript_id: str = Field(alias="transcriptId")
591
+ text: str | None
592
+
593
+
594
+ class GetEpisodeTranscriptTextResponse(BaseModel):
595
+ model_config = ConfigDict(populate_by_name=True)
596
+
597
+ episode_transcript_text: GetEpisodeTranscriptTextResponseEpisodeTranscriptText = Field(
598
+ alias="episodeTranscriptText"
599
+ )
600
+
601
+
602
+ class RequestEpisodeTranscriptionResponse(BaseModel):
603
+ model_config = ConfigDict(populate_by_name=True)
604
+
605
+ message: str
606
+
607
+
608
+ class GetEpisodeTranscriptTimestampsResponseSentencesItem(BaseModel):
609
+ model_config = ConfigDict(populate_by_name=True)
610
+
611
+ text: str
612
+ start_second: float = Field(alias="startSecond")
613
+ end_second: float = Field(alias="endSecond")
614
+
615
+
616
+ class GetEpisodeTranscriptTimestampsResponse(BaseModel):
617
+ model_config = ConfigDict(populate_by_name=True)
618
+
619
+ episode_id: str = Field(alias="episodeId")
620
+ podcast_id: str = Field(alias="podcastId")
621
+ sentences: list[GetEpisodeTranscriptTimestampsResponseSentencesItem]
622
+
623
+
624
+ class GetTranscriptionRequestsResponseRequestsItemVariant1(BaseModel):
625
+ model_config = ConfigDict(populate_by_name=True)
626
+
627
+ podcast_title: str = Field(alias="podcastTitle")
628
+ podcast_image_url: str | None = Field(alias="podcastImageUrl")
629
+ podcast_id: str = Field(alias="podcastId")
630
+ podcast_slug: str = Field(alias="podcastSlug")
631
+ requested_at: Any = Field(alias="requestedAt")
632
+ requested_by_user_id: str | None = Field(alias="requestedByUserId")
633
+ completed_at: Any | None = Field(alias="completedAt")
634
+ request_type: Literal["transcription", "deepAnalysis", "diarization"] = Field(alias="requestType")
635
+ episode_id: str = Field(alias="episodeId")
636
+ episode_title: str | None = Field(alias="episodeTitle")
637
+ episode_image_url: str | None = Field(alias="episodeImageUrl")
638
+ episode_slug: str = Field(alias="episodeSlug")
639
+
640
+
641
+ class GetTranscriptionRequestsResponseRequestsItemVariant2(BaseModel):
642
+ model_config = ConfigDict(populate_by_name=True)
643
+
644
+ podcast_title: str = Field(alias="podcastTitle")
645
+ podcast_image_url: str | None = Field(alias="podcastImageUrl")
646
+ podcast_id: str = Field(alias="podcastId")
647
+ podcast_slug: str = Field(alias="podcastSlug")
648
+ requested_at: Any = Field(alias="requestedAt")
649
+ requested_by_user_id: str | None = Field(alias="requestedByUserId")
650
+ completed_at: Any | None = Field(alias="completedAt")
651
+ request_type: Literal["guestPrep"] = Field(alias="requestType")
652
+ episode_id: Any | None = Field(alias="episodeId")
653
+ episode_title: Any | None = Field(alias="episodeTitle")
654
+ episode_image_url: Any | None = Field(alias="episodeImageUrl")
655
+ episode_slug: Any | None = Field(alias="episodeSlug")
656
+
657
+
658
+ class GetTranscriptionRequestsResponseRequestsItemVariant3(BaseModel):
659
+ model_config = ConfigDict(populate_by_name=True)
660
+
661
+ podcast_title: str = Field(alias="podcastTitle")
662
+ podcast_image_url: str | None = Field(alias="podcastImageUrl")
663
+ podcast_id: str = Field(alias="podcastId")
664
+ podcast_slug: str = Field(alias="podcastSlug")
665
+ requested_at: Any = Field(alias="requestedAt")
666
+ requested_by_user_id: str | None = Field(alias="requestedByUserId")
667
+ completed_at: Any | None = Field(alias="completedAt")
668
+ request_type: Literal["autoOutreach"] = Field(alias="requestType")
669
+ episode_id: Any | None = Field(alias="episodeId")
670
+ episode_title: Any | None = Field(alias="episodeTitle")
671
+ episode_image_url: Any | None = Field(alias="episodeImageUrl")
672
+ episode_slug: Any | None = Field(alias="episodeSlug")
673
+
674
+
675
+ class GetTranscriptionRequestsResponse(BaseModel):
676
+ model_config = ConfigDict(populate_by_name=True)
677
+
678
+ total_requests: float = Field(alias="totalRequests")
679
+ requests: list[
680
+ GetTranscriptionRequestsResponseRequestsItemVariant1
681
+ | GetTranscriptionRequestsResponseRequestsItemVariant2
682
+ | GetTranscriptionRequestsResponseRequestsItemVariant3
683
+ ]
684
+
685
+
686
+ class CreateGuestProfileResponse(BaseModel):
687
+ model_config = ConfigDict(populate_by_name=True)
688
+
689
+ guest_profile_id: str = Field(alias="guestProfileId")
690
+ guest_profile_slug: str = Field(alias="guestProfileSlug")
691
+ project_id: str = Field(alias="projectId")
692
+ project_slug: str = Field(alias="projectSlug")
693
+
694
+
695
+ class GetGuestProfileDetailsResponseDocumentsItem(BaseModel):
696
+ model_config = ConfigDict(populate_by_name=True)
697
+
698
+ name: str
699
+ id: str
700
+ size: float
701
+ status: str
702
+ file_type: str = Field(alias="fileType")
703
+ date_extracted: Any | None = Field(alias="dateExtracted")
704
+
705
+
706
+ class GetGuestProfileDetailsResponseCreatedBy(BaseModel):
707
+ model_config = ConfigDict(populate_by_name=True)
708
+
709
+ user_id: str = Field(alias="userId")
710
+ email: str
711
+
712
+
713
+ class GetGuestProfileDetailsResponseSocialMediaLinksItem(BaseModel):
714
+ model_config = ConfigDict(populate_by_name=True)
715
+
716
+ social_media_type: Literal[
717
+ "beehiiv",
718
+ "behance",
719
+ "bluesky",
720
+ "discord",
721
+ "facebook",
722
+ "github",
723
+ "instagram",
724
+ "linkedin",
725
+ "linktree",
726
+ "mastodon",
727
+ "medium",
728
+ "patreon",
729
+ "pinterest",
730
+ "reddit",
731
+ "snapchat",
732
+ "soundcloud",
733
+ "substack",
734
+ "threads",
735
+ "tiktok",
736
+ "tumblr",
737
+ "twitch",
738
+ "twitter",
739
+ "vimeo",
740
+ "whatsapp",
741
+ "youtube",
742
+ ] = Field(alias="socialMediaType")
743
+ url: str
744
+ last_scraped_at: Any | None = Field(alias="lastScrapedAt")
745
+ last_scrape_failed_at: Any | None = Field(alias="lastScrapeFailedAt")
746
+ is_scraping: bool = Field(alias="isScraping")
747
+
748
+
749
+ class GetGuestProfileDetailsResponseGuestBio(BaseModel):
750
+ model_config = ConfigDict(populate_by_name=True)
751
+
752
+ additional_context: str | None = Field(alias="additionalContext")
753
+ areas_of_expertise: list[str] = Field(alias="areasOfExpertise")
754
+ goals: list[str]
755
+ long_bio: str = Field(alias="longBio")
756
+ short_bio: str = Field(alias="shortBio")
757
+ things_to_avoid: list[str] = Field(alias="thingsToAvoid")
758
+ topics_to_discuss: list[str] = Field(alias="topicsToDiscuss")
759
+
760
+
761
+ class GetGuestProfileDetailsResponsePublicViewSettings(BaseModel):
762
+ model_config = ConfigDict(populate_by_name=True)
763
+
764
+ display_linked_in: bool = Field(alias="displayLinkedIn")
765
+ display_socials: bool = Field(alias="displaySocials")
766
+ display_previous_podcast_appearances: bool = Field(alias="displayPreviousPodcastAppearances")
767
+ marketing_letter_markdown_text: str | None = Field(alias="marketingLetterMarkdownText")
768
+ public_slug: str | None = Field(alias="publicSlug")
769
+
770
+
771
+ class GetGuestProfileDetailsResponse(BaseModel):
772
+ model_config = ConfigDict(populate_by_name=True)
773
+
774
+ project_id: str = Field(alias="projectId")
775
+ project_slug: str = Field(alias="projectSlug")
776
+ guest_profile_id: str = Field(alias="guestProfileId")
777
+ guest_profile_slug: str = Field(alias="guestProfileSlug")
778
+ public_slug: str | None = Field(alias="publicSlug")
779
+ name: str
780
+ status: Literal["ACTIVE", "DRAFT", "PENDING", "ARCHIVED", "ERROR"]
781
+ created_at: Any = Field(alias="createdAt")
782
+ updated_at: Any = Field(alias="updatedAt")
783
+ documents: list[GetGuestProfileDetailsResponseDocumentsItem]
784
+ listed_podcasts_count: float = Field(alias="listedPodcastsCount")
785
+ booking_url: str | None = Field(alias="bookingUrl")
786
+ company_name: str | None = Field(alias="companyName")
787
+ email: str | None
788
+ first_name: str | None = Field(alias="firstName")
789
+ last_name: str | None = Field(alias="lastName")
790
+ one_pager_url: str | None = Field(alias="onePagerUrl")
791
+ phone: str | None
792
+ website_url: str | None = Field(alias="websiteUrl")
793
+ image_url: str | None = Field(alias="imageUrl")
794
+ created_by: GetGuestProfileDetailsResponseCreatedBy = Field(alias="createdBy")
795
+ social_media_links: list[GetGuestProfileDetailsResponseSocialMediaLinksItem] = Field(alias="socialMediaLinks")
796
+ guest_bio: GetGuestProfileDetailsResponseGuestBio | None = Field(alias="guestBio")
797
+ public_view_settings: GetGuestProfileDetailsResponsePublicViewSettings | None = Field(alias="publicViewSettings")
798
+
799
+
800
+ class UpdateGuestProfileBioResponse(BaseModel):
801
+ model_config = ConfigDict(populate_by_name=True)
802
+
803
+ success: bool
804
+
805
+
806
+ class UpdateGuestProfileSocialMediaLinksBodyItem(BaseModel):
807
+ model_config = ConfigDict(populate_by_name=True)
808
+
809
+ social_media_type: Literal[
810
+ "beehiiv",
811
+ "behance",
812
+ "bluesky",
813
+ "discord",
814
+ "facebook",
815
+ "github",
816
+ "instagram",
817
+ "linkedin",
818
+ "linktree",
819
+ "mastodon",
820
+ "medium",
821
+ "patreon",
822
+ "pinterest",
823
+ "reddit",
824
+ "snapchat",
825
+ "soundcloud",
826
+ "substack",
827
+ "threads",
828
+ "tiktok",
829
+ "tumblr",
830
+ "twitch",
831
+ "twitter",
832
+ "vimeo",
833
+ "whatsapp",
834
+ "youtube",
835
+ ] = Field(alias="socialMediaType")
836
+ url: str
837
+
838
+
839
+ class UpdateGuestProfileSocialMediaLinksResponse(BaseModel):
840
+ model_config = ConfigDict(populate_by_name=True)
841
+
842
+ success: bool
843
+ linked_in_scrape_trigger_failures: list[str] | None = Field(default=None, alias="linkedInScrapeTriggerFailures")
844
+
845
+
846
+ class RegenerateBioResponseResultAnswer(BaseModel):
847
+ model_config = ConfigDict(populate_by_name=True)
848
+
849
+ short_bio: str = Field(alias="shortBio")
850
+ long_bio: str = Field(alias="longBio")
851
+ goals: Any
852
+ things_to_avoid: Any = Field(alias="thingsToAvoid")
853
+ areas_of_expertise: Any = Field(alias="areasOfExpertise")
854
+ topics_to_discuss: Any = Field(alias="topicsToDiscuss")
855
+
856
+
857
+ class RegenerateBioResponseResult(BaseModel):
858
+ model_config = ConfigDict(populate_by_name=True)
859
+
860
+ answer: RegenerateBioResponseResultAnswer
861
+
862
+
863
+ class RegenerateBioResponse(BaseModel):
864
+ model_config = ConfigDict(populate_by_name=True)
865
+
866
+ result: RegenerateBioResponseResult
867
+
868
+
869
+ class UploadDocumentsResponseUploadedDocumentsItem(BaseModel):
870
+ model_config = ConfigDict(populate_by_name=True)
871
+
872
+ id: str
873
+ file_name: str = Field(alias="fileName")
874
+ file_size: float = Field(alias="fileSize")
875
+
876
+
877
+ class UploadDocumentsResponse(BaseModel):
878
+ model_config = ConfigDict(populate_by_name=True)
879
+
880
+ uploaded_documents: list[UploadDocumentsResponseUploadedDocumentsItem] = Field(alias="uploadedDocuments")
881
+
882
+
883
+ class GetLatestPodcastsResponse(BaseModel):
884
+ model_config = ConfigDict(populate_by_name=True)
885
+
886
+ podcasts: list[GetLatestEpisodesResponseLatestPodcastsItemPodcast]
887
+
888
+
889
+ class GetMultiplePodcastsResponseOptions(BaseModel):
890
+ model_config = ConfigDict(populate_by_name=True)
891
+
892
+ podcast_ids: list[str] = Field(alias="podcastIds")
893
+ details: Literal["basic", "full"]
894
+
895
+
896
+ class GetMultiplePodcastsResponsePodcastsItemVariant2Blocked(BaseModel):
897
+ model_config = ConfigDict(populate_by_name=True)
898
+
899
+ blocked_date: Any = Field(alias="blockedDate")
900
+ blocked_reason: str | None = Field(default=None, alias="blockedReason")
901
+
902
+
903
+ class GetMultiplePodcastsResponsePodcastsItemVariant2PodcastAffiliation(BaseModel):
904
+ model_config = ConfigDict(populate_by_name=True)
905
+
906
+ affiliate_organization_name: str | None = Field(default=None, alias="affiliateOrganizationName")
907
+ affiliation_type: (
908
+ Literal[
909
+ "academic",
910
+ "branded",
911
+ "celebrity",
912
+ "government",
913
+ "independent",
914
+ "legacy media",
915
+ "podcast company",
916
+ "new media",
917
+ "not for profit",
918
+ "religious",
919
+ "other",
920
+ "unknown",
921
+ ]
922
+ | None
923
+ ) = Field(default=None, alias="affiliationType")
924
+
925
+
926
+ class GetMultiplePodcastsResponsePodcastsItemVariant2PodcastDirectoryLinks(BaseModel):
927
+ model_config = ConfigDict(populate_by_name=True)
928
+
929
+ amazonmusic: str | None = None
930
+ anchor: str | None = None
931
+ antennapod: str | None = None
932
+ anytimeplayer: str | None = None
933
+ apollo: str | None = None
934
+ apple: str | None = None
935
+ audible: str | None = None
936
+ breez: str | None = None
937
+ castamatic: str | None = None
938
+ castbox: str | None = None
939
+ castro: str | None = None
940
+ curiocaster: str | None = None
941
+ fountain: str | None = None
942
+ goodpods: str | None = None
943
+ google: str | None = None
944
+ gpodder: str | None = None
945
+ iheartradio: str | None = None
946
+ listennotes: str | None = None
947
+ lnbeats: str | None = None
948
+ moonfm: str | None = None
949
+ overcast: str | None = None
950
+ playerfm: str | None = None
951
+ pocketcasts: str | None = None
952
+ podbean: str | None = None
953
+ podcastaddict: str | None = None
954
+ podcastguru: str | None = None
955
+ podcastrepublic: str | None = None
956
+ podchaser: str | None = None
957
+ podfriend: str | None = None
958
+ podknife: str | None = None
959
+ podlp: str | None = None
960
+ podnews: str | None = None
961
+ podscan: str | None = None
962
+ podscribe: str | None = None
963
+ podstation: str | None = None
964
+ podurama: str | None = None
965
+ podverse: str | None = None
966
+ radiopublic: str | None = None
967
+ rephonic: str | None = None
968
+ sonnet: str | None = None
969
+ spotify: str | None = None
970
+ stenofm: str | None = None
971
+ truefans: str | None = None
972
+ tunein: str | None = None
973
+ youtubemusic: str | None = None
974
+
975
+
976
+ class GetMultiplePodcastsResponsePodcastsItemVariant2SocialMediaLinksItem(BaseModel):
977
+ model_config = ConfigDict(populate_by_name=True)
978
+
979
+ social_media_type: Literal[
980
+ "beehiiv",
981
+ "behance",
982
+ "bluesky",
983
+ "discord",
984
+ "facebook",
985
+ "github",
986
+ "instagram",
987
+ "linkedin",
988
+ "linktree",
989
+ "mastodon",
990
+ "medium",
991
+ "patreon",
992
+ "pinterest",
993
+ "reddit",
994
+ "snapchat",
995
+ "soundcloud",
996
+ "substack",
997
+ "threads",
998
+ "tiktok",
999
+ "tumblr",
1000
+ "twitch",
1001
+ "twitter",
1002
+ "vimeo",
1003
+ "whatsapp",
1004
+ "youtube",
1005
+ ] = Field(alias="socialMediaType")
1006
+ url: str
1007
+ sources: list[
1008
+ Literal[
1009
+ "apple-podcasts",
1010
+ "bright-data-dataset",
1011
+ "google-search",
1012
+ "linktree",
1013
+ "podcast-website",
1014
+ "podchaser",
1015
+ "rephonic",
1016
+ "rss",
1017
+ ]
1018
+ ]
1019
+
1020
+
1021
+ class GetMultiplePodcastsResponsePodcastsItemVariant2Stats(BaseModel):
1022
+ model_config = ConfigDict(populate_by_name=True)
1023
+
1024
+ download_count: float = Field(alias="downloadCount")
1025
+ episode_count: float = Field(alias="episodeCount")
1026
+ latest_published_at: Any | None = Field(alias="latestPublishedAt")
1027
+ first_episode_published_at: Any | None = Field(alias="firstEpisodePublishedAt")
1028
+ transcripts_count: float = Field(alias="transcriptsCount")
1029
+ update_frequency: Literal["daily", "weekly", "bi-weekly", "monthly", "stale", "very-stale"] = Field(
1030
+ alias="updateFrequency"
1031
+ )
1032
+
1033
+
1034
+ class GetMultiplePodcastsResponsePodcastsItemVariant2TranscriptionModeVariant1(BaseModel):
1035
+ model_config = ConfigDict(populate_by_name=True)
1036
+
1037
+ mode: Literal["none"]
1038
+ transcribe_since: Any | None = Field(default=None, alias="transcribeSince")
1039
+
1040
+
1041
+ class GetMultiplePodcastsResponsePodcastsItemVariant2TranscriptionModeVariant2(BaseModel):
1042
+ model_config = ConfigDict(populate_by_name=True)
1043
+
1044
+ mode: Literal["all"]
1045
+ transcribe_since: Any | None = Field(default=None, alias="transcribeSince")
1046
+
1047
+
1048
+ class GetMultiplePodcastsResponsePodcastsItemVariant2TranscriptionModeVariant3(BaseModel):
1049
+ model_config = ConfigDict(populate_by_name=True)
1050
+
1051
+ mode: Literal["episodes-since"]
1052
+ transcribe_since: Any = Field(alias="transcribeSince")
1053
+
1054
+
1055
+ class GetMultiplePodcastsResponsePodcastsItemVariant2(BaseModel):
1056
+ model_config = ConfigDict(populate_by_name=True)
1057
+
1058
+ author: str | None
1059
+ authority_score: GetChartResponseChartPositionsItemPodenginePodcastAuthorityScore | None = Field(
1060
+ alias="authorityScore"
1061
+ )
1062
+ genres: list[str]
1063
+ id: str
1064
+ image_url: str | None = Field(alias="imageUrl")
1065
+ language: str
1066
+ last_episode_published_at: Any = Field(alias="lastEpisodePublishedAt")
1067
+ slug: str
1068
+ title: str
1069
+ title_latest: str = Field(alias="titleLatest")
1070
+ apple_id: float = Field(alias="appleId")
1071
+ blocked: GetMultiplePodcastsResponsePodcastsItemVariant2Blocked | None = None
1072
+ description: str | None
1073
+ emails: list[str]
1074
+ explicit_rss: bool | None = Field(alias="explicitRss")
1075
+ host_names: list[str] | None = Field(alias="hostNames")
1076
+ ignore: bool
1077
+ ignore_reason: str | None = Field(default=None, alias="ignoreReason")
1078
+ never_transcribe: bool | None = Field(default=None, alias="neverTranscribe")
1079
+ never_transcribe_reason: str | None = Field(default=None, alias="neverTranscribeReason")
1080
+ is_claimed: bool = Field(alias="isClaimed")
1081
+ podcast_affiliation: GetMultiplePodcastsResponsePodcastsItemVariant2PodcastAffiliation | None = Field(
1082
+ alias="podcastAffiliation"
1083
+ )
1084
+ podcast_directory_links: GetMultiplePodcastsResponsePodcastsItemVariant2PodcastDirectoryLinks = Field(
1085
+ alias="podcastDirectoryLinks"
1086
+ )
1087
+ podcast_has_guests: bool | None = Field(alias="podcastHasGuests")
1088
+ podcast_has_sponsors: bool | None = Field(alias="podcastHasSponsors")
1089
+ podcast_locations: list[str] | None = Field(alias="podcastLocations")
1090
+ primary_contact_email: str | None = Field(alias="primaryContactEmail")
1091
+ rss_feed_url: str = Field(alias="rssFeedUrl")
1092
+ social_media_links: list[GetMultiplePodcastsResponsePodcastsItemVariant2SocialMediaLinksItem] = Field(
1093
+ alias="socialMediaLinks"
1094
+ )
1095
+ spotify_id: str | None = Field(alias="spotifyId")
1096
+ stats: GetMultiplePodcastsResponsePodcastsItemVariant2Stats
1097
+ title_latest_cleaned: str | None = Field(alias="titleLatestCleaned")
1098
+ transcription_mode: (
1099
+ GetMultiplePodcastsResponsePodcastsItemVariant2TranscriptionModeVariant1
1100
+ | GetMultiplePodcastsResponsePodcastsItemVariant2TranscriptionModeVariant2
1101
+ | GetMultiplePodcastsResponsePodcastsItemVariant2TranscriptionModeVariant3
1102
+ ) = Field(alias="transcriptionMode")
1103
+ website_url: str | None = Field(alias="websiteUrl")
1104
+ audience_estimate: GetLatestEpisodesResponseLatestPodcastsItemEpisodesItemAudienceEstimate | None = Field(
1105
+ default=None, alias="audienceEstimate"
1106
+ )
1107
+ audio_retention_policy: Literal["RETAIN_INDEFINITELY", "RETAIN_DAYS", "RETAIN_UNTIL_TRANSCRIBED"] | None = Field(
1108
+ default=None, alias="audioRetentionPolicy"
1109
+ )
1110
+ audio_retention_days: float | None = Field(default=None, alias="audioRetentionDays")
1111
+
1112
+
1113
+ class GetMultiplePodcastsResponse(BaseModel):
1114
+ model_config = ConfigDict(populate_by_name=True)
1115
+
1116
+ options: GetMultiplePodcastsResponseOptions
1117
+ total_requested: float = Field(alias="totalRequested")
1118
+ total_found: float = Field(alias="totalFound")
1119
+ podcasts: list[GetLatestEpisodesResponseLatestPodcastsItemPodcast | GetMultiplePodcastsResponsePodcastsItemVariant2]
1120
+
1121
+
1122
+ class GetPodcastIdLookupResponse(BaseModel):
1123
+ model_config = ConfigDict(populate_by_name=True)
1124
+
1125
+ podcast: GetChartResponseChartPositionsItemPodenginePodcast | None
1126
+
1127
+
1128
+ class GetAppleIdComprehensiveLookupResponsePodcast(BaseModel):
1129
+ model_config = ConfigDict(populate_by_name=True)
1130
+
1131
+ id: str
1132
+ slug: str
1133
+ title: str
1134
+ image_url: str | None = Field(alias="imageUrl")
1135
+ is_primary_apple_id: bool = Field(alias="isPrimaryAppleId")
1136
+ primary_apple_id: float = Field(alias="primaryAppleId")
1137
+ created_at: Any = Field(alias="createdAt")
1138
+ pod_engine_url: str = Field(alias="podEngineUrl")
1139
+
1140
+
1141
+ class GetAppleIdComprehensiveLookupResponseImportRequest(BaseModel):
1142
+ model_config = ConfigDict(populate_by_name=True)
1143
+
1144
+ id: float
1145
+ apple_title: str = Field(alias="appleTitle")
1146
+ rss_url: str = Field(alias="rssUrl")
1147
+ creation_source: str = Field(alias="creationSource")
1148
+ created_at: Any = Field(alias="createdAt")
1149
+ imported_at: Any | None = Field(alias="importedAt")
1150
+ podcast_id: str | None = Field(alias="podcastId")
1151
+ import_error_at: Any | None = Field(alias="importErrorAt")
1152
+ import_error: str | None = Field(alias="importError")
1153
+ import_error_type: str | None = Field(alias="importErrorType")
1154
+
1155
+
1156
+ class GetAppleIdComprehensiveLookupResponseScraperDataEntriesItem(BaseModel):
1157
+ model_config = ConfigDict(populate_by_name=True)
1158
+
1159
+ id: float
1160
+ country: str
1161
+ podcast_title: str = Field(alias="podcastTitle")
1162
+ created_at: Any = Field(alias="createdAt")
1163
+ last_scraped_at: Any | None = Field(alias="lastScrapedAt")
1164
+ last_success_at: Any | None = Field(alias="lastSuccessAt")
1165
+ last_error_at: Any | None = Field(alias="lastErrorAt")
1166
+ rss_url: str | None = Field(alias="rssUrl")
1167
+ ratings_count: float | None = Field(alias="ratingsCount")
1168
+ average_rating: float | None = Field(alias="averageRating")
1169
+ episodes_count: float | None = Field(alias="episodesCount")
1170
+ last_episode_date: Any | None = Field(alias="lastEpisodeDate")
1171
+ is_likely_non_english_title: bool = Field(alias="isLikelyNonEnglishTitle")
1172
+ skipped_podcast_import_reason: str | None = Field(alias="skippedPodcastImportReason")
1173
+ skipped_podcast_import_at: Any | None = Field(alias="skippedPodcastImportAt")
1174
+
1175
+
1176
+ class GetAppleIdComprehensiveLookupResponseScraperDataRecentAttemptsItem(BaseModel):
1177
+ model_config = ConfigDict(populate_by_name=True)
1178
+
1179
+ id: float
1180
+ created_at: Any = Field(alias="createdAt")
1181
+ type: str
1182
+ url: str
1183
+ apple_id: float | None = Field(alias="appleId")
1184
+ spotify_id: str | None = Field(alias="spotifyId")
1185
+ podcast_id: str | None = Field(alias="podcastId")
1186
+ error_type: str | None = Field(alias="errorType")
1187
+ error_details: str | None = Field(alias="errorDetails")
1188
+ time_taken_ms: float = Field(alias="timeTakenMs")
1189
+
1190
+
1191
+ class GetAppleIdComprehensiveLookupResponseScraperData(BaseModel):
1192
+ model_config = ConfigDict(populate_by_name=True)
1193
+
1194
+ entries: list[GetAppleIdComprehensiveLookupResponseScraperDataEntriesItem]
1195
+ countries: list[str]
1196
+ most_recent_scrape: Any | None = Field(alias="mostRecentScrape")
1197
+ recent_attempts: list[GetAppleIdComprehensiveLookupResponseScraperDataRecentAttemptsItem] = Field(
1198
+ alias="recentAttempts"
1199
+ )
1200
+
1201
+
1202
+ class GetAppleIdComprehensiveLookupResponse(BaseModel):
1203
+ model_config = ConfigDict(populate_by_name=True)
1204
+
1205
+ apple_id: float = Field(alias="appleId")
1206
+ status: Literal[
1207
+ "found",
1208
+ "linked",
1209
+ "apple_details_not_found",
1210
+ "apple_not_scraped",
1211
+ "create_podcast_failed",
1212
+ "duplicate_apple_id",
1213
+ "duplicate_podcast_guid",
1214
+ "duplicate_rss_url",
1215
+ "malformed_apple_url",
1216
+ "no_episodes_count",
1217
+ "no_podcast_image",
1218
+ "non_us_apple_url",
1219
+ "not_active",
1220
+ "request_not_found",
1221
+ "rss_download_failed",
1222
+ "rss_parsing_failed",
1223
+ "rss_url_not_found",
1224
+ "import_error_unknown",
1225
+ "pending_import",
1226
+ "scraped_not_imported_non_english",
1227
+ "scraped_not_imported_no_rss_url",
1228
+ "scraped_not_imported_not_fully_scraped",
1229
+ "scraped_not_imported_too_few_episodes",
1230
+ "scraped_not_imported_inactive",
1231
+ "scraped_not_imported_low_engagement",
1232
+ "scraped_not_imported_unknown",
1233
+ "not_found",
1234
+ ]
1235
+ podcast: GetAppleIdComprehensiveLookupResponsePodcast | None
1236
+ import_request: GetAppleIdComprehensiveLookupResponseImportRequest | None = Field(alias="importRequest")
1237
+ scraper_data: GetAppleIdComprehensiveLookupResponseScraperData | None = Field(alias="scraperData")
1238
+
1239
+
1240
+ class GetPodcastAllDetailsResponsePodcastContactsEmailsItem(BaseModel):
1241
+ model_config = ConfigDict(populate_by_name=True)
1242
+
1243
+ email: str
1244
+ verified_at: Any | None = Field(alias="verifiedAt")
1245
+ syntax_valid: bool | None = Field(alias="syntaxValid")
1246
+ mx_valid: bool | None = Field(alias="mxValid")
1247
+ deep_verified_at: Any | None = Field(alias="deepVerifiedAt")
1248
+ deliverability_status: (
1249
+ Literal["valid", "invalid", "catch-all", "unknown", "spamtrap", "abuse", "do_not_mail"] | None
1250
+ ) = Field(alias="deliverabilityStatus")
1251
+ deliverability_reason: str | None = Field(alias="deliverabilityReason")
1252
+ is_free_email_provider: bool | None = Field(alias="isFreeEmailProvider")
1253
+ suggested_correction: str | None = Field(alias="suggestedCorrection")
1254
+
1255
+
1256
+ class GetPodcastAllDetailsResponsePodcastContactsWebsitesItem(BaseModel):
1257
+ model_config = ConfigDict(populate_by_name=True)
1258
+
1259
+ url: str
1260
+ verified: bool
1261
+ contact_urls: list[str] = Field(alias="contactUrls")
1262
+
1263
+
1264
+ class GetPodcastAllDetailsResponsePodcastContacts(BaseModel):
1265
+ model_config = ConfigDict(populate_by_name=True)
1266
+
1267
+ podcast_id: str = Field(alias="podcastId")
1268
+ emails: list[GetPodcastAllDetailsResponsePodcastContactsEmailsItem]
1269
+ phone_numbers: list[str] = Field(alias="phoneNumbers")
1270
+ websites: list[GetPodcastAllDetailsResponsePodcastContactsWebsitesItem]
1271
+
1272
+
1273
+ class GetPodcastAllDetailsResponsePodcastGuestsGuestsItem(BaseModel):
1274
+ model_config = ConfigDict(populate_by_name=True)
1275
+
1276
+ name: str
1277
+ type: Literal["host", "guest", "unknown", "mentioned"]
1278
+ image_url: str | None = Field(alias="imageUrl")
1279
+ appearances_count: float = Field(alias="appearancesCount")
1280
+ most_recent_appearance_date: Any = Field(alias="mostRecentAppearanceDate")
1281
+ oldest_appearance_date: Any = Field(alias="oldestAppearanceDate")
1282
+
1283
+
1284
+ class GetPodcastAllDetailsResponsePodcastGuests(BaseModel):
1285
+ model_config = ConfigDict(populate_by_name=True)
1286
+
1287
+ episodes_count: float = Field(alias="episodesCount")
1288
+ episodes_with_guests_count: float = Field(alias="episodesWithGuestsCount")
1289
+ most_recent_episode_date: Any = Field(alias="mostRecentEpisodeDate")
1290
+ oldest_episode_date: Any = Field(alias="oldestEpisodeDate")
1291
+ guests: list[GetPodcastAllDetailsResponsePodcastGuestsGuestsItem]
1292
+
1293
+
1294
+ class GetPodcastAllDetailsResponsePodcastReviewsApplePodcastsReview(BaseModel):
1295
+ model_config = ConfigDict(populate_by_name=True)
1296
+
1297
+ apple_id: float = Field(alias="appleId")
1298
+ scraped_at: Any = Field(alias="scrapedAt")
1299
+ country: str
1300
+ reviews_count: float = Field(alias="reviewsCount")
1301
+ rating: float | None
1302
+ one_star_count: float = Field(alias="oneStarCount")
1303
+ two_star_count: float = Field(alias="twoStarCount")
1304
+ three_star_count: float = Field(alias="threeStarCount")
1305
+ four_star_count: float = Field(alias="fourStarCount")
1306
+ five_star_count: float = Field(alias="fiveStarCount")
1307
+
1308
+
1309
+ class GetPodcastAllDetailsResponsePodcastReviewsApplePodcastsReviewsByCountryItem(BaseModel):
1310
+ model_config = ConfigDict(populate_by_name=True)
1311
+
1312
+ apple_id: float = Field(alias="appleId")
1313
+ scraped_at: Any = Field(alias="scrapedAt")
1314
+ country: str
1315
+ reviews_count: float = Field(alias="reviewsCount")
1316
+ rating: float | None
1317
+ one_star_count: float = Field(alias="oneStarCount")
1318
+ two_star_count: float = Field(alias="twoStarCount")
1319
+ three_star_count: float = Field(alias="threeStarCount")
1320
+ four_star_count: float = Field(alias="fourStarCount")
1321
+ five_star_count: float = Field(alias="fiveStarCount")
1322
+
1323
+
1324
+ class GetPodcastAllDetailsResponsePodcastReviewsApplePodcastsReviewTextReviewsItem(BaseModel):
1325
+ model_config = ConfigDict(populate_by_name=True)
1326
+
1327
+ country: str
1328
+ rating: float
1329
+ title: str
1330
+ body: str
1331
+ author: str
1332
+ reviewed_at: Any = Field(alias="reviewedAt")
1333
+
1334
+
1335
+ class GetPodcastAllDetailsResponsePodcastReviewsApplePodcastsReviewText(BaseModel):
1336
+ model_config = ConfigDict(populate_by_name=True)
1337
+
1338
+ country: str | None
1339
+ total: float
1340
+ limit: float
1341
+ offset: float
1342
+ reviews: list[GetPodcastAllDetailsResponsePodcastReviewsApplePodcastsReviewTextReviewsItem]
1343
+
1344
+
1345
+ class GetPodcastAllDetailsResponsePodcastReviewsSpotifyReview(BaseModel):
1346
+ model_config = ConfigDict(populate_by_name=True)
1347
+
1348
+ spotify_id: str = Field(alias="spotifyId")
1349
+ scraped_at: Any = Field(alias="scrapedAt")
1350
+ reviews_count: float = Field(alias="reviewsCount")
1351
+ rating: float | None
1352
+
1353
+
1354
+ class GetPodcastAllDetailsResponsePodcastReviewsCastbox(BaseModel):
1355
+ model_config = ConfigDict(populate_by_name=True)
1356
+
1357
+ scraped_at: Any = Field(alias="scrapedAt")
1358
+ plays: float
1359
+ subscribers: float
1360
+
1361
+
1362
+ class GetPodcastAllDetailsResponsePodcastReviews(BaseModel):
1363
+ model_config = ConfigDict(populate_by_name=True)
1364
+
1365
+ podcast_id: str = Field(alias="podcastId")
1366
+ apple_id: float = Field(alias="appleId")
1367
+ spotify_id: str | None = Field(alias="spotifyId")
1368
+ apple_podcasts_review: GetPodcastAllDetailsResponsePodcastReviewsApplePodcastsReview | None = Field(
1369
+ alias="applePodcastsReview"
1370
+ )
1371
+ apple_podcasts_reviews_by_country: list[
1372
+ GetPodcastAllDetailsResponsePodcastReviewsApplePodcastsReviewsByCountryItem
1373
+ ] = Field(alias="applePodcastsReviewsByCountry")
1374
+ apple_podcasts_review_text: GetPodcastAllDetailsResponsePodcastReviewsApplePodcastsReviewText | None = Field(
1375
+ alias="applePodcastsReviewText"
1376
+ )
1377
+ spotify_review: GetPodcastAllDetailsResponsePodcastReviewsSpotifyReview | None = Field(alias="spotifyReview")
1378
+ castbox: GetPodcastAllDetailsResponsePodcastReviewsCastbox | None
1379
+
1380
+
1381
+ class GetPodcastAllDetailsResponsePodcastSocialMediaFacebookPageDataItem(BaseModel):
1382
+ model_config = ConfigDict(populate_by_name=True)
1383
+
1384
+ facebook_page_id: str = Field(alias="facebookPageId")
1385
+ profile_photo_url: str | None = Field(alias="profilePhotoUrl")
1386
+ name: str
1387
+ followers: float
1388
+ likes: float
1389
+ following: float
1390
+ talking_about_count: float | None = Field(alias="talkingAboutCount")
1391
+ facebook_page_url: str = Field(alias="facebookPageUrl")
1392
+ scraped_at: Any = Field(alias="scrapedAt")
1393
+
1394
+
1395
+ class GetPodcastAllDetailsResponsePodcastSocialMediaInstagramDataItem(BaseModel):
1396
+ model_config = ConfigDict(populate_by_name=True)
1397
+
1398
+ profile_id: float = Field(alias="profileId")
1399
+ followers: float
1400
+ following: float
1401
+ posts: float
1402
+ instagram_profile_name: str = Field(alias="instagramProfileName")
1403
+ profile_photo_url: str | None = Field(alias="profilePhotoUrl")
1404
+ scraped_at: Any = Field(alias="scrapedAt")
1405
+
1406
+
1407
+ class GetPodcastAllDetailsResponsePodcastSocialMediaLinkedInCompanyDataItemMostRecentUpdate(BaseModel):
1408
+ model_config = ConfigDict(populate_by_name=True)
1409
+
1410
+ post_id: str = Field(alias="postId")
1411
+ likes_count: float = Field(alias="likesCount")
1412
+ comments_count: float = Field(alias="commentsCount")
1413
+ title: str
1414
+ text: str
1415
+ post_url: str = Field(alias="postUrl")
1416
+ date: Any
1417
+
1418
+
1419
+ class GetPodcastAllDetailsResponsePodcastSocialMediaLinkedInCompanyDataItem(BaseModel):
1420
+ model_config = ConfigDict(populate_by_name=True)
1421
+
1422
+ scraped_at: Any = Field(alias="scrapedAt")
1423
+ linked_in_company_id: str = Field(alias="linkedInCompanyId")
1424
+ linked_in_url: str = Field(alias="linkedInUrl")
1425
+ name: str
1426
+ country_code: str | None = Field(alias="countryCode")
1427
+ followers: float
1428
+ employees_in_linkedin: float = Field(alias="employeesInLinkedin")
1429
+ about: str | None
1430
+ description: str | None
1431
+ company_size: str | None = Field(alias="companySize")
1432
+ industries: str | None
1433
+ logo_image_url: str | None = Field(alias="logoImageUrl")
1434
+ most_recent_update: GetPodcastAllDetailsResponsePodcastSocialMediaLinkedInCompanyDataItemMostRecentUpdate | None = (
1435
+ Field(alias="mostRecentUpdate")
1436
+ )
1437
+
1438
+
1439
+ class GetPodcastAllDetailsResponsePodcastSocialMediaLinkedInPersonDataItem(BaseModel):
1440
+ model_config = ConfigDict(populate_by_name=True)
1441
+
1442
+ scraped_at: Any = Field(alias="scrapedAt")
1443
+ name: str
1444
+ profile_photo_url: str | None = Field(alias="profilePhotoUrl")
1445
+ linked_in_profile_id: str = Field(alias="linkedInProfileId")
1446
+ linked_in_numeric_id: float = Field(alias="linkedInNumericId")
1447
+ avatar_url: str | None = Field(alias="avatarUrl")
1448
+ city: str | None
1449
+ country_code: str | None = Field(alias="countryCode")
1450
+ description: str | None
1451
+ about: str | None
1452
+ location: str | None
1453
+ follower_count: float = Field(alias="followerCount")
1454
+ connections_count: float = Field(alias="connectionsCount")
1455
+ recommendations_count: float = Field(alias="recommendationsCount")
1456
+
1457
+
1458
+ class GetPodcastAllDetailsResponsePodcastSocialMediaTiktokDataItem(BaseModel):
1459
+ model_config = ConfigDict(populate_by_name=True)
1460
+
1461
+ account_id: str = Field(alias="accountId")
1462
+ awg_engagement_rate: float | None = Field(alias="awgEngagementRate")
1463
+ biography: str | None
1464
+ comment_engagement_rate: float | None = Field(alias="commentEngagementRate")
1465
+ date_joined: Any = Field(alias="dateJoined")
1466
+ followers: float
1467
+ following: float
1468
+ is_private: bool = Field(alias="isPrivate")
1469
+ is_verified: bool = Field(alias="isVerified")
1470
+ like_engagement_rate: float | None = Field(alias="likeEngagementRate")
1471
+ likes: float
1472
+ nickname: str
1473
+ handle: str
1474
+ profile_pic_url: str | None = Field(alias="profilePicUrl")
1475
+ videos_count: float = Field(alias="videosCount")
1476
+ scraped_at: Any = Field(alias="scrapedAt")
1477
+
1478
+
1479
+ class GetPodcastAllDetailsResponsePodcastSocialMediaTwitterDataItem(BaseModel):
1480
+ model_config = ConfigDict(populate_by_name=True)
1481
+
1482
+ profile_id: str = Field(alias="profileId")
1483
+ profile_name: str = Field(alias="profileName")
1484
+ profile_url: str = Field(alias="profileUrl")
1485
+ profile_image_url: str | None = Field(alias="profileImageUrl")
1486
+ biography: str | None
1487
+ following_count: int = Field(alias="followingCount")
1488
+ follower_count: int = Field(alias="followerCount")
1489
+ posts_count: int = Field(alias="postsCount")
1490
+ date_joined: Any | None = Field(alias="dateJoined")
1491
+ scraped_at: Any = Field(alias="scrapedAt")
1492
+
1493
+
1494
+ class GetPodcastAllDetailsResponsePodcastSocialMedia(BaseModel):
1495
+ model_config = ConfigDict(populate_by_name=True)
1496
+
1497
+ podcast_id: str = Field(alias="podcastId")
1498
+ social_media_links: list[GetMultiplePodcastsResponsePodcastsItemVariant2SocialMediaLinksItem] = Field(
1499
+ alias="socialMediaLinks"
1500
+ )
1501
+ facebook_page_data: list[GetPodcastAllDetailsResponsePodcastSocialMediaFacebookPageDataItem] = Field(
1502
+ alias="facebookPageData"
1503
+ )
1504
+ instagram_data: list[GetPodcastAllDetailsResponsePodcastSocialMediaInstagramDataItem] = Field(alias="instagramData")
1505
+ linked_in_company_data: list[GetPodcastAllDetailsResponsePodcastSocialMediaLinkedInCompanyDataItem] = Field(
1506
+ alias="linkedInCompanyData"
1507
+ )
1508
+ linked_in_person_data: list[GetPodcastAllDetailsResponsePodcastSocialMediaLinkedInPersonDataItem] = Field(
1509
+ alias="linkedInPersonData"
1510
+ )
1511
+ tiktok_data: list[GetPodcastAllDetailsResponsePodcastSocialMediaTiktokDataItem] = Field(alias="tiktokData")
1512
+ twitter_data: list[GetPodcastAllDetailsResponsePodcastSocialMediaTwitterDataItem] = Field(alias="twitterData")
1513
+
1514
+
1515
+ class GetPodcastAllDetailsResponsePodcastSponsorsSponsorsItem(BaseModel):
1516
+ model_config = ConfigDict(populate_by_name=True)
1517
+
1518
+ name: str
1519
+ image_url: str | None = Field(alias="imageUrl")
1520
+ appearances_count: float = Field(alias="appearancesCount")
1521
+ most_recent_appearance_date: Any = Field(alias="mostRecentAppearanceDate")
1522
+ oldest_appearance_date: Any = Field(alias="oldestAppearanceDate")
1523
+
1524
+
1525
+ class GetPodcastAllDetailsResponsePodcastSponsors(BaseModel):
1526
+ model_config = ConfigDict(populate_by_name=True)
1527
+
1528
+ episodes_count: float = Field(alias="episodesCount")
1529
+ episodes_with_sponsors_count: float = Field(alias="episodesWithSponsorsCount")
1530
+ most_recent_episode_date: Any = Field(alias="mostRecentEpisodeDate")
1531
+ oldest_episode_date: Any = Field(alias="oldestEpisodeDate")
1532
+ sponsors: list[GetPodcastAllDetailsResponsePodcastSponsorsSponsorsItem]
1533
+
1534
+
1535
+ class GetPodcastAllDetailsResponsePodcastRelatedPodcasts(BaseModel):
1536
+ model_config = ConfigDict(populate_by_name=True)
1537
+
1538
+ podcast_id: str = Field(alias="podcastId")
1539
+ similar_podcasts: list[GetLatestEpisodesResponseLatestPodcastsItemPodcast] = Field(alias="similarPodcasts")
1540
+
1541
+
1542
+ class GetPodcastAllDetailsResponsePodcastChartPositionsItem(BaseModel):
1543
+ model_config = ConfigDict(populate_by_name=True)
1544
+
1545
+ chart_date: str = Field(alias="chartDate")
1546
+ chart_type: Literal["apple", "spotify"] = Field(alias="chartType")
1547
+ country: str
1548
+ category: str
1549
+ position: float
1550
+
1551
+
1552
+ class GetPodcastAllDetailsResponsePodcastYoutubeDataYoutubeDataItemThumbnails(BaseModel):
1553
+ model_config = ConfigDict(populate_by_name=True)
1554
+
1555
+ default: str | None
1556
+ medium: str | None
1557
+ high: str | None
1558
+
1559
+
1560
+ class GetPodcastAllDetailsResponsePodcastYoutubeDataYoutubeDataItemVideosItem(BaseModel):
1561
+ model_config = ConfigDict(populate_by_name=True)
1562
+
1563
+ image_url: str = Field(alias="imageUrl")
1564
+ is_short: bool = Field(alias="isShort")
1565
+ posted_at: Any = Field(alias="postedAt")
1566
+ posted_at_relative: str = Field(alias="postedAtRelative")
1567
+ scraped_at: Any = Field(alias="scrapedAt")
1568
+ title: str
1569
+ video_url: str = Field(alias="videoUrl")
1570
+ views: float
1571
+
1572
+
1573
+ class GetPodcastAllDetailsResponsePodcastYoutubeDataYoutubeDataItem(BaseModel):
1574
+ model_config = ConfigDict(populate_by_name=True)
1575
+
1576
+ id: str
1577
+ title: str
1578
+ description: str | None
1579
+ subscriber_count: float = Field(alias="subscriberCount")
1580
+ view_count: float = Field(alias="viewCount")
1581
+ video_count: float = Field(alias="videoCount")
1582
+ published_at: Any | None = Field(alias="publishedAt")
1583
+ thumbnails: GetPodcastAllDetailsResponsePodcastYoutubeDataYoutubeDataItemThumbnails
1584
+ country: str | None
1585
+ custom_url: str | None = Field(alias="customUrl")
1586
+ links: list[str] | None
1587
+ is_podcast_channel: bool | None = Field(alias="isPodcastChannel")
1588
+ discover_input_keyword: str | None = Field(alias="discoverInputKeyword")
1589
+ banner_image_url: str | None = Field(alias="bannerImageUrl")
1590
+ videos: list[GetPodcastAllDetailsResponsePodcastYoutubeDataYoutubeDataItemVideosItem] | None
1591
+ profile_image_url: str | None = Field(alias="profileImageUrl")
1592
+ data_last_updated: Any = Field(alias="dataLastUpdated")
1593
+ last_video_upload_date: Any | None = Field(alias="lastVideoUploadDate")
1594
+ last_video_upload_date_source: str | None = Field(alias="lastVideoUploadDateSource")
1595
+ last_video_upload_date_checked_at: Any | None = Field(alias="lastVideoUploadDateCheckedAt")
1596
+
1597
+
1598
+ class GetPodcastAllDetailsResponsePodcastYoutubeData(BaseModel):
1599
+ model_config = ConfigDict(populate_by_name=True)
1600
+
1601
+ podcast_id: str = Field(alias="podcastId")
1602
+ youtube_data: list[GetPodcastAllDetailsResponsePodcastYoutubeDataYoutubeDataItem] = Field(alias="youtubeData")
1603
+
1604
+
1605
+ class GetPodcastAllDetailsResponsePodcast(BaseModel):
1606
+ model_config = ConfigDict(populate_by_name=True)
1607
+
1608
+ podcast: GetMultiplePodcastsResponsePodcastsItemVariant2
1609
+ recent_episodes: list[GetLatestEpisodesResponseLatestPodcastsItemEpisodesItem] | None = Field(
1610
+ alias="recentEpisodes"
1611
+ )
1612
+ contacts: GetPodcastAllDetailsResponsePodcastContacts | None
1613
+ guests: GetPodcastAllDetailsResponsePodcastGuests | None
1614
+ reviews: GetPodcastAllDetailsResponsePodcastReviews | None
1615
+ social_media: GetPodcastAllDetailsResponsePodcastSocialMedia | None = Field(alias="socialMedia")
1616
+ sponsors: GetPodcastAllDetailsResponsePodcastSponsors | None
1617
+ related_podcasts: GetPodcastAllDetailsResponsePodcastRelatedPodcasts | None = Field(alias="relatedPodcasts")
1618
+ chart_positions: list[GetPodcastAllDetailsResponsePodcastChartPositionsItem] | None = Field(alias="chartPositions")
1619
+ youtube_data: GetPodcastAllDetailsResponsePodcastYoutubeData | None = Field(alias="youtubeData")
1620
+
1621
+
1622
+ class GetPodcastAllDetailsResponse(BaseModel):
1623
+ model_config = ConfigDict(populate_by_name=True)
1624
+
1625
+ podcast: GetPodcastAllDetailsResponsePodcast
1626
+
1627
+
1628
+ class GetPodcastResponse(BaseModel):
1629
+ model_config = ConfigDict(populate_by_name=True)
1630
+
1631
+ podcast: GetMultiplePodcastsResponsePodcastsItemVariant2
1632
+
1633
+
1634
+ class GetPodcastEpisodesResponseOptions(BaseModel):
1635
+ model_config = ConfigDict(populate_by_name=True)
1636
+
1637
+ has_transcript: bool | None = Field(default=None, alias="hasTranscript")
1638
+ skip: float | None = None
1639
+ limit: float | None = None
1640
+
1641
+
1642
+ class GetPodcastEpisodesResponse(BaseModel):
1643
+ model_config = ConfigDict(populate_by_name=True)
1644
+
1645
+ options: GetPodcastEpisodesResponseOptions
1646
+ total_episodes: float = Field(alias="totalEpisodes")
1647
+ total_transcripts: float = Field(alias="totalTranscripts")
1648
+ podcast_with_episodes: GetLatestEpisodesResponseLatestPodcastsItem = Field(alias="podcastWithEpisodes")
1649
+
1650
+
1651
+ class GetPodcastRelatedPodcastsResponseRelatedPodcasts(BaseModel):
1652
+ model_config = ConfigDict(populate_by_name=True)
1653
+
1654
+ podcast_id: str = Field(alias="podcastId")
1655
+ similar_podcasts: list[GetLatestEpisodesResponseLatestPodcastsItemPodcast] = Field(alias="similarPodcasts")
1656
+
1657
+
1658
+ class GetPodcastRelatedPodcastsResponse(BaseModel):
1659
+ model_config = ConfigDict(populate_by_name=True)
1660
+
1661
+ podcast: GetLatestEpisodesResponseLatestPodcastsItemPodcast
1662
+ related_podcasts: GetPodcastRelatedPodcastsResponseRelatedPodcasts = Field(alias="relatedPodcasts")
1663
+
1664
+
1665
+ class GetPodcastReviewsResponsePodcastReviews(BaseModel):
1666
+ model_config = ConfigDict(populate_by_name=True)
1667
+
1668
+ podcast_id: str = Field(alias="podcastId")
1669
+ apple_id: float = Field(alias="appleId")
1670
+ spotify_id: str | None = Field(alias="spotifyId")
1671
+ apple_podcasts_review: GetPodcastAllDetailsResponsePodcastReviewsApplePodcastsReview | None = Field(
1672
+ alias="applePodcastsReview"
1673
+ )
1674
+ apple_podcasts_reviews_by_country: list[
1675
+ GetPodcastAllDetailsResponsePodcastReviewsApplePodcastsReviewsByCountryItem
1676
+ ] = Field(alias="applePodcastsReviewsByCountry")
1677
+ apple_podcasts_review_text: GetPodcastAllDetailsResponsePodcastReviewsApplePodcastsReviewText | None = Field(
1678
+ alias="applePodcastsReviewText"
1679
+ )
1680
+ spotify_review: GetPodcastAllDetailsResponsePodcastReviewsSpotifyReview | None = Field(alias="spotifyReview")
1681
+ castbox: GetPodcastAllDetailsResponsePodcastReviewsCastbox | None
1682
+
1683
+
1684
+ class GetPodcastReviewsResponse(BaseModel):
1685
+ model_config = ConfigDict(populate_by_name=True)
1686
+
1687
+ podcast: GetLatestEpisodesResponseLatestPodcastsItemPodcast
1688
+ podcast_reviews: GetPodcastReviewsResponsePodcastReviews = Field(alias="podcastReviews")
1689
+
1690
+
1691
+ class GetPodcastContactsResponsePodcastContacts(BaseModel):
1692
+ model_config = ConfigDict(populate_by_name=True)
1693
+
1694
+ podcast_id: str = Field(alias="podcastId")
1695
+ emails: list[GetPodcastAllDetailsResponsePodcastContactsEmailsItem]
1696
+ phone_numbers: list[str] = Field(alias="phoneNumbers")
1697
+ websites: list[GetPodcastAllDetailsResponsePodcastContactsWebsitesItem]
1698
+
1699
+
1700
+ class GetPodcastContactsResponse(BaseModel):
1701
+ model_config = ConfigDict(populate_by_name=True)
1702
+
1703
+ podcast: GetLatestEpisodesResponseLatestPodcastsItemPodcast
1704
+ podcast_contacts: GetPodcastContactsResponsePodcastContacts = Field(alias="podcastContacts")
1705
+
1706
+
1707
+ class GetPodcastChartsResponseOptions(BaseModel):
1708
+ model_config = ConfigDict(populate_by_name=True)
1709
+
1710
+ chart_type: Literal["apple", "spotify"] | None = Field(default=None, alias="chartType")
1711
+ category: str | None = None
1712
+ country: str | None = None
1713
+ positions_limit: float | None = Field(default=None, alias="positionsLimit")
1714
+ limit: float | None = None
1715
+
1716
+
1717
+ class GetPodcastChartsResponse(BaseModel):
1718
+ model_config = ConfigDict(populate_by_name=True)
1719
+
1720
+ podcast: GetLatestEpisodesResponseLatestPodcastsItemPodcast
1721
+ options: GetPodcastChartsResponseOptions
1722
+ total_charts: float = Field(alias="totalCharts")
1723
+ positions: list[GetPodcastAllDetailsResponsePodcastChartPositionsItem]
1724
+
1725
+
1726
+ class GetPodcastSocialMediaDetailsResponseSocialMediaData(BaseModel):
1727
+ model_config = ConfigDict(populate_by_name=True)
1728
+
1729
+ podcast_id: str = Field(alias="podcastId")
1730
+ social_media_links: list[GetMultiplePodcastsResponsePodcastsItemVariant2SocialMediaLinksItem] = Field(
1731
+ alias="socialMediaLinks"
1732
+ )
1733
+ facebook_page_data: list[GetPodcastAllDetailsResponsePodcastSocialMediaFacebookPageDataItem] = Field(
1734
+ alias="facebookPageData"
1735
+ )
1736
+ instagram_data: list[GetPodcastAllDetailsResponsePodcastSocialMediaInstagramDataItem] = Field(alias="instagramData")
1737
+ linked_in_company_data: list[GetPodcastAllDetailsResponsePodcastSocialMediaLinkedInCompanyDataItem] = Field(
1738
+ alias="linkedInCompanyData"
1739
+ )
1740
+ linked_in_person_data: list[GetPodcastAllDetailsResponsePodcastSocialMediaLinkedInPersonDataItem] = Field(
1741
+ alias="linkedInPersonData"
1742
+ )
1743
+ tiktok_data: list[GetPodcastAllDetailsResponsePodcastSocialMediaTiktokDataItem] = Field(alias="tiktokData")
1744
+ twitter_data: list[GetPodcastAllDetailsResponsePodcastSocialMediaTwitterDataItem] = Field(alias="twitterData")
1745
+
1746
+
1747
+ class GetPodcastSocialMediaDetailsResponse(BaseModel):
1748
+ model_config = ConfigDict(populate_by_name=True)
1749
+
1750
+ podcast: GetLatestEpisodesResponseLatestPodcastsItemPodcast
1751
+ social_media_data: GetPodcastSocialMediaDetailsResponseSocialMediaData = Field(alias="socialMediaData")
1752
+
1753
+
1754
+ class GetPodcastYoutubeDetailsResponseYoutubeData(BaseModel):
1755
+ model_config = ConfigDict(populate_by_name=True)
1756
+
1757
+ podcast_id: str = Field(alias="podcastId")
1758
+ youtube_data: list[GetPodcastAllDetailsResponsePodcastYoutubeDataYoutubeDataItem] = Field(alias="youtubeData")
1759
+
1760
+
1761
+ class GetPodcastYoutubeDetailsResponse(BaseModel):
1762
+ model_config = ConfigDict(populate_by_name=True)
1763
+
1764
+ podcast: GetLatestEpisodesResponseLatestPodcastsItemPodcast
1765
+ youtube_data: GetPodcastYoutubeDetailsResponseYoutubeData = Field(alias="youtubeData")
1766
+
1767
+
1768
+ class RequestPodcastTranscriptionResponse(BaseModel):
1769
+ model_config = ConfigDict(populate_by_name=True)
1770
+
1771
+ message: str
1772
+ episode_ids: list[str] = Field(alias="episodeIds")
1773
+
1774
+
1775
+ class RefreshPodcastResponseVariant1(BaseModel):
1776
+ model_config = ConfigDict(populate_by_name=True)
1777
+
1778
+ success: Literal[True]
1779
+ podcast: GetMultiplePodcastsResponsePodcastsItemVariant2
1780
+
1781
+
1782
+ class RefreshPodcastResponseVariant2ErrorDetails(BaseModel):
1783
+ model_config = ConfigDict(populate_by_name=True)
1784
+
1785
+ rss_url: str | None = Field(default=None, alias="rssUrl")
1786
+ attempt_id: float | None = Field(default=None, alias="attemptId")
1787
+
1788
+
1789
+ class RefreshPodcastResponseVariant2(BaseModel):
1790
+ model_config = ConfigDict(populate_by_name=True)
1791
+
1792
+ success: Literal[False]
1793
+ error_code: Literal["rss_not_found", "rss_parse_error", "rss_fetch_failed", "update_failed", "unknown_error"] = (
1794
+ Field(alias="errorCode")
1795
+ )
1796
+ error_message: str = Field(alias="errorMessage")
1797
+ error_details: RefreshPodcastResponseVariant2ErrorDetails | None = Field(default=None, alias="errorDetails")
1798
+
1799
+
1800
+ class GetUpdatesResponseEventsItemVariant1Data(BaseModel):
1801
+ model_config = ConfigDict(populate_by_name=True)
1802
+
1803
+ request_id: str = Field(alias="requestId")
1804
+ request_type: Literal["autoOutreach", "deepAnalysis", "diarization", "guestPrep", "transcription"] = Field(
1805
+ alias="requestType"
1806
+ )
1807
+ podcast_id: str = Field(alias="podcastId")
1808
+ episode_id: str | None = Field(alias="episodeId")
1809
+ guest_profile_id: str | None = Field(alias="guestProfileId")
1810
+ completed_at: datetime = Field(alias="completedAt")
1811
+ error: str | None
1812
+
1813
+
1814
+ class GetUpdatesResponseEventsItemVariant1(BaseModel):
1815
+ model_config = ConfigDict(populate_by_name=True)
1816
+
1817
+ id: str
1818
+ occurred_at: datetime = Field(alias="occurredAt")
1819
+ event_type: Literal["request_completed"] = Field(alias="eventType")
1820
+ data: GetUpdatesResponseEventsItemVariant1Data
1821
+
1822
+
1823
+ class GetUpdatesResponseEventsItemVariant2Data(BaseModel):
1824
+ model_config = ConfigDict(populate_by_name=True)
1825
+
1826
+ guest_appearance_id: str = Field(alias="guestAppearanceId")
1827
+ guest_profile_id: str = Field(alias="guestProfileId")
1828
+ episode_id: str = Field(alias="episodeId")
1829
+ ai_verified: bool | None = Field(alias="aiVerified")
1830
+ human_verified: bool | None = Field(alias="humanVerified")
1831
+ created_at: datetime = Field(alias="createdAt")
1832
+
1833
+
1834
+ class GetUpdatesResponseEventsItemVariant2(BaseModel):
1835
+ model_config = ConfigDict(populate_by_name=True)
1836
+
1837
+ id: str
1838
+ occurred_at: datetime = Field(alias="occurredAt")
1839
+ event_type: Literal["guest_appearance"] = Field(alias="eventType")
1840
+ data: GetUpdatesResponseEventsItemVariant2Data
1841
+
1842
+
1843
+ class GetUpdatesResponseEventsItemVariant3Data(BaseModel):
1844
+ model_config = ConfigDict(populate_by_name=True)
1845
+
1846
+ listed_podcast_id: str = Field(alias="listedPodcastId")
1847
+ project_id: str = Field(alias="projectId")
1848
+ podcast_id: str = Field(alias="podcastId")
1849
+ status: Literal["prospect", "qualified", "pitched", "lost", "booked", "ignored"]
1850
+ created_at: datetime = Field(alias="createdAt")
1851
+
1852
+
1853
+ class GetUpdatesResponseEventsItemVariant3(BaseModel):
1854
+ model_config = ConfigDict(populate_by_name=True)
1855
+
1856
+ id: str
1857
+ occurred_at: datetime = Field(alias="occurredAt")
1858
+ event_type: Literal["listed_podcast_added"] = Field(alias="eventType")
1859
+ data: GetUpdatesResponseEventsItemVariant3Data
1860
+
1861
+
1862
+ class GetUpdatesResponseEventsItemVariant4Data(BaseModel):
1863
+ model_config = ConfigDict(populate_by_name=True)
1864
+
1865
+ alert_match_id: str = Field(alias="alertMatchId")
1866
+ alert_config_id: str = Field(alias="alertConfigId")
1867
+ alert_config_name: str = Field(alias="alertConfigName")
1868
+ alert_type: Literal["TRANSCRIPT", "EPISODE"] = Field(alias="alertType")
1869
+ episode_id: str = Field(alias="episodeId")
1870
+ podcast_id: str = Field(alias="podcastId")
1871
+ created_at: datetime = Field(alias="createdAt")
1872
+
1873
+
1874
+ class GetUpdatesResponseEventsItemVariant4(BaseModel):
1875
+ model_config = ConfigDict(populate_by_name=True)
1876
+
1877
+ id: str
1878
+ occurred_at: datetime = Field(alias="occurredAt")
1879
+ event_type: Literal["alert_match"] = Field(alias="eventType")
1880
+ data: GetUpdatesResponseEventsItemVariant4Data
1881
+
1882
+
1883
+ class GetUpdatesResponse(BaseModel):
1884
+ model_config = ConfigDict(populate_by_name=True)
1885
+
1886
+ events: list[
1887
+ GetUpdatesResponseEventsItemVariant1
1888
+ | GetUpdatesResponseEventsItemVariant2
1889
+ | GetUpdatesResponseEventsItemVariant3
1890
+ | GetUpdatesResponseEventsItemVariant4
1891
+ ]
1892
+ cursor: str | None
1893
+ has_more: bool = Field(alias="hasMore")
1894
+
1895
+
1896
+ class GetProjectsResponseOptions(BaseModel):
1897
+ model_config = ConfigDict(populate_by_name=True)
1898
+
1899
+ states: Any | None = None
1900
+ sort_by: Literal["recent-activity", "name", "created"] | None = Field(default=None, alias="sortBy")
1901
+
1902
+
1903
+ class GetProjectsResponseProjectsItemCreatedBy(BaseModel):
1904
+ model_config = ConfigDict(populate_by_name=True)
1905
+
1906
+ id: str
1907
+ display_name: str | None = Field(alias="displayName")
1908
+ avatar_seed: str | None = Field(alias="avatarSeed")
1909
+
1910
+
1911
+ class GetProjectsResponseProjectsItemLinkedGuestProfile(BaseModel):
1912
+ model_config = ConfigDict(populate_by_name=True)
1913
+
1914
+ id: str
1915
+ name: str
1916
+ slug: str
1917
+ status: Literal["ACTIVE", "DRAFT", "PENDING", "ARCHIVED", "ERROR"]
1918
+ image_url: str | None = Field(alias="imageUrl")
1919
+ linkedin_url: str | None = Field(alias="linkedinUrl")
1920
+ appearances_count: float = Field(alias="appearancesCount")
1921
+
1922
+
1923
+ class GetProjectsResponseProjectsItemStateCounts(BaseModel):
1924
+ model_config = ConfigDict(populate_by_name=True)
1925
+
1926
+ prospect: float
1927
+ qualified: float
1928
+ pitched: float
1929
+ booked: float
1930
+ lost: float
1931
+ ignored: float
1932
+
1933
+
1934
+ class GetProjectsResponseProjectsItemDocumentsCount(BaseModel):
1935
+ model_config = ConfigDict(populate_by_name=True)
1936
+
1937
+ total: float
1938
+ processed: float
1939
+
1940
+
1941
+ class GetProjectsResponseProjectsItemRecentActivitiesItem(BaseModel):
1942
+ model_config = ConfigDict(populate_by_name=True)
1943
+
1944
+ type: Literal["added-to-list", "update-labels", "update-priority", "update-state"]
1945
+ date: Any
1946
+ podcast_title: str | None = Field(alias="podcastTitle")
1947
+ podcast_slug: str | None = Field(alias="podcastSlug")
1948
+ podcast_image_url: str | None = Field(alias="podcastImageUrl")
1949
+ to_value: str | None = Field(alias="toValue")
1950
+ user: GetProjectsResponseProjectsItemCreatedBy | None
1951
+
1952
+
1953
+ class GetProjectsResponseProjectsItem(BaseModel):
1954
+ model_config = ConfigDict(populate_by_name=True)
1955
+
1956
+ project_id: str = Field(alias="projectId")
1957
+ name: str
1958
+ slug: str
1959
+ team_id: str = Field(alias="teamId")
1960
+ created_at: Any = Field(alias="createdAt")
1961
+ last_updated: Any = Field(alias="lastUpdated")
1962
+ created_by: GetProjectsResponseProjectsItemCreatedBy | None = Field(alias="createdBy")
1963
+ project_types: list[
1964
+ Literal[
1965
+ "advertisers",
1966
+ "api",
1967
+ "content-creation",
1968
+ "guest-booking",
1969
+ "interesting-podcasts",
1970
+ "lead-generation",
1971
+ "monitoring",
1972
+ "other",
1973
+ "transcriptions",
1974
+ ]
1975
+ ] = Field(alias="projectTypes")
1976
+ status: Literal["DRAFT", "PENDING", "ACTIVE", "ARCHIVED", "ERROR"]
1977
+ listed_podcasts_count: float = Field(alias="listedPodcastsCount")
1978
+ linked_guest_profile: GetProjectsResponseProjectsItemLinkedGuestProfile | None = Field(alias="linkedGuestProfile")
1979
+ state_counts: GetProjectsResponseProjectsItemStateCounts = Field(alias="stateCounts")
1980
+ documents_count: GetProjectsResponseProjectsItemDocumentsCount = Field(alias="documentsCount")
1981
+ recent_activities: list[GetProjectsResponseProjectsItemRecentActivitiesItem] = Field(alias="recentActivities")
1982
+
1983
+
1984
+ class GetProjectsResponse(BaseModel):
1985
+ model_config = ConfigDict(populate_by_name=True)
1986
+
1987
+ options: GetProjectsResponseOptions
1988
+ projects: list[GetProjectsResponseProjectsItem]
1989
+
1990
+
1991
+ class GetProjectDetailsResponseProjectGoHighLevelIntegration(BaseModel):
1992
+ model_config = ConfigDict(populate_by_name=True)
1993
+
1994
+ location_id: str = Field(alias="locationId")
1995
+ has_api_key: bool = Field(alias="hasApiKey")
1996
+ enabled: bool
1997
+ only_push_relevant_podcasts: bool = Field(alias="onlyPushRelevantPodcasts")
1998
+
1999
+
2000
+ class GetProjectDetailsResponseProject(BaseModel):
2001
+ model_config = ConfigDict(populate_by_name=True)
2002
+
2003
+ project_id: str = Field(alias="projectId")
2004
+ name: str
2005
+ slug: str
2006
+ team_id: str = Field(alias="teamId")
2007
+ created_at: Any = Field(alias="createdAt")
2008
+ last_updated: Any = Field(alias="lastUpdated")
2009
+ created_by: GetProjectsResponseProjectsItemCreatedBy | None = Field(alias="createdBy")
2010
+ project_types: list[
2011
+ Literal[
2012
+ "advertisers",
2013
+ "api",
2014
+ "content-creation",
2015
+ "guest-booking",
2016
+ "interesting-podcasts",
2017
+ "lead-generation",
2018
+ "monitoring",
2019
+ "other",
2020
+ "transcriptions",
2021
+ ]
2022
+ ] = Field(alias="projectTypes")
2023
+ status: Literal["DRAFT", "PENDING", "ACTIVE", "ARCHIVED", "ERROR"]
2024
+ listed_podcasts_count: float = Field(alias="listedPodcastsCount")
2025
+ linked_guest_profile: GetProjectsResponseProjectsItemLinkedGuestProfile | None = Field(alias="linkedGuestProfile")
2026
+ state_counts: GetProjectsResponseProjectsItemStateCounts = Field(alias="stateCounts")
2027
+ documents_count: GetProjectsResponseProjectsItemDocumentsCount = Field(alias="documentsCount")
2028
+ recent_activities: list[GetProjectsResponseProjectsItemRecentActivitiesItem] = Field(alias="recentActivities")
2029
+ project_type_other_reason: str | None = Field(alias="projectTypeOtherReason")
2030
+ project_purpose: str | None = Field(alias="projectPurpose")
2031
+ project_keywords: list[str] = Field(alias="projectKeywords")
2032
+ public_title: str | None = Field(alias="publicTitle")
2033
+ public_description: str | None = Field(alias="publicDescription")
2034
+ public_slug: str | None = Field(alias="publicSlug")
2035
+ is_public_listicle: bool = Field(alias="isPublicListicle")
2036
+ public_podcast_limit: float = Field(alias="publicPodcastLimit")
2037
+ is_public_for_team: bool = Field(alias="isPublicForTeam")
2038
+ go_high_level_integration: GetProjectDetailsResponseProjectGoHighLevelIntegration | None = Field(
2039
+ alias="goHighLevelIntegration"
2040
+ )
2041
+
2042
+
2043
+ class GetProjectDetailsResponse(BaseModel):
2044
+ model_config = ConfigDict(populate_by_name=True)
2045
+
2046
+ project: GetProjectDetailsResponseProject
2047
+
2048
+
2049
+ class GetProjectStrategiesResponseStrategiesItem(BaseModel):
2050
+ model_config = ConfigDict(populate_by_name=True)
2051
+
2052
+ title: str
2053
+ short_description: str = Field(alias="shortDescription")
2054
+ strategy_blurb: str = Field(alias="strategyBlurb")
2055
+ audience_persona_target: str = Field(alias="audiencePersonaTarget")
2056
+ why_its_effective: str = Field(alias="whyItsEffective")
2057
+ strategy_training_documentation: str = Field(alias="strategyTrainingDocumentation")
2058
+ keyword_inspiration: list[str] = Field(alias="keywordInspiration")
2059
+ example_google_searches: list[str] = Field(alias="exampleGoogleSearches")
2060
+ id: str
2061
+ created_at: Any = Field(alias="createdAt")
2062
+ updated_at: Any = Field(alias="updatedAt")
2063
+ strategy_approach: Literal["straightforward", "unconventional", "longshot"] | None = Field(alias="strategyApproach")
2064
+ strategy_focus: str | None = Field(alias="strategyFocus")
2065
+ priority: Literal["low", "medium", "high", "urgent"] | None
2066
+ auto_search_enabled: bool = Field(alias="autoSearchEnabled")
2067
+
2068
+
2069
+ class GetProjectStrategiesResponse(BaseModel):
2070
+ model_config = ConfigDict(populate_by_name=True)
2071
+
2072
+ strategies: list[GetProjectStrategiesResponseStrategiesItem]
2073
+
2074
+
2075
+ class UpdateProjectResponse(BaseModel):
2076
+ model_config = ConfigDict(populate_by_name=True)
2077
+
2078
+ project: GetProjectsResponseProjectsItem
2079
+
2080
+
2081
+ class AddPodcastToProjectResponseListedPodcastPodcast(BaseModel):
2082
+ model_config = ConfigDict(populate_by_name=True)
2083
+
2084
+ podcast_id: str = Field(alias="podcastId")
2085
+ title_original: str = Field(alias="titleOriginal")
2086
+ title_latest: str = Field(alias="titleLatest")
2087
+ slug: str
2088
+ image_url: str | None = Field(alias="imageUrl")
2089
+
2090
+
2091
+ class AddPodcastToProjectResponseListedPodcastAddedByUser(BaseModel):
2092
+ model_config = ConfigDict(populate_by_name=True)
2093
+
2094
+ user_id: str = Field(alias="userId")
2095
+ email: str
2096
+ display_name: str | None = Field(alias="displayName")
2097
+
2098
+
2099
+ class AddPodcastToProjectResponseListedPodcastActivityHistoryItem(BaseModel):
2100
+ model_config = ConfigDict(populate_by_name=True)
2101
+
2102
+ action_type: Literal["added-to-list", "update-labels", "update-priority", "update-state"] = Field(
2103
+ alias="actionType"
2104
+ )
2105
+ activity_date: Any = Field(alias="activityDate")
2106
+ from_value: str | None = Field(alias="fromValue")
2107
+ to_value: str | None = Field(alias="toValue")
2108
+ user_id: str = Field(alias="userId")
2109
+ user_display_name: str = Field(alias="userDisplayName")
2110
+
2111
+
2112
+ class AddPodcastToProjectResponseListedPodcastAnalysis(BaseModel):
2113
+ model_config = ConfigDict(populate_by_name=True)
2114
+
2115
+ relevancy_score: float | None = Field(default=None, alias="relevancyScore")
2116
+ deep_relevancy_score: float | None = Field(default=None, alias="deepRelevancyScore")
2117
+ host_relevancy_score: float | None = Field(default=None, alias="hostRelevancyScore")
2118
+
2119
+
2120
+ class AddPodcastToProjectResponseListedPodcast(BaseModel):
2121
+ model_config = ConfigDict(populate_by_name=True)
2122
+
2123
+ listed_podcast_id: str = Field(alias="listedPodcastId")
2124
+ project_id: str = Field(alias="projectId")
2125
+ podcast: AddPodcastToProjectResponseListedPodcastPodcast
2126
+ status: Literal["prospect", "qualified", "pitched", "lost", "booked", "ignored"]
2127
+ priority: Literal["low", "medium", "high", "urgent"] | None
2128
+ labels: list[str]
2129
+ added_at: Any = Field(alias="addedAt")
2130
+ updated_at: Any = Field(alias="updatedAt")
2131
+ added_by_user: AddPodcastToProjectResponseListedPodcastAddedByUser = Field(alias="addedByUser")
2132
+ activity_history: list[AddPodcastToProjectResponseListedPodcastActivityHistoryItem] = Field(alias="activityHistory")
2133
+ analysis: AddPodcastToProjectResponseListedPodcastAnalysis
2134
+
2135
+
2136
+ class AddPodcastToProjectResponse(BaseModel):
2137
+ model_config = ConfigDict(populate_by_name=True)
2138
+
2139
+ listed_podcast: AddPodcastToProjectResponseListedPodcast = Field(alias="listedPodcast")
2140
+
2141
+
2142
+ class UpdateProjectListedPodcastResponseOptions(BaseModel):
2143
+ model_config = ConfigDict(populate_by_name=True)
2144
+
2145
+ state: Literal["prospect", "qualified", "pitched", "lost", "booked", "ignored"] | None = None
2146
+ priority: Literal["low", "medium", "high", "urgent"] | None = None
2147
+
2148
+
2149
+ class UpdateProjectListedPodcastResponse(BaseModel):
2150
+ model_config = ConfigDict(populate_by_name=True)
2151
+
2152
+ project_slug: str = Field(alias="projectSlug")
2153
+ listed_podcast_id: str = Field(alias="listedPodcastId")
2154
+ options: UpdateProjectListedPodcastResponseOptions
2155
+ updated_listed_podcast: AddPodcastToProjectResponseListedPodcast = Field(alias="updatedListedPodcast")
2156
+
2157
+
2158
+ class RemoveListedPodcastFromProjectResponse(BaseModel):
2159
+ model_config = ConfigDict(populate_by_name=True)
2160
+
2161
+ project_slug: str = Field(alias="projectSlug")
2162
+ listed_podcast_id: str = Field(alias="listedPodcastId")
2163
+
2164
+
2165
+ class SearchAutocompletePodcastsResponse(BaseModel):
2166
+ model_config = ConfigDict(populate_by_name=True)
2167
+
2168
+ podcasts: list[GetLatestEpisodesResponseLatestPodcastsItemPodcast]
2169
+ words: list[str]
2170
+
2171
+
2172
+ class SearchPodcastsResponseSeachResultsStatsTime(BaseModel):
2173
+ model_config = ConfigDict(populate_by_name=True)
2174
+
2175
+ total_time_taken_ms: float = Field(alias="totalTimeTakenMs")
2176
+ total_search_time_ms: float = Field(alias="totalSearchTimeMs")
2177
+ total_post_processing_time_ms: float = Field(alias="totalPostProcessingTimeMs")
2178
+
2179
+
2180
+ class SearchPodcastsResponseSeachResultsStatsTotals(BaseModel):
2181
+ model_config = ConfigDict(populate_by_name=True)
2182
+
2183
+ blacklisted_podcasts: float = Field(alias="blacklistedPodcasts")
2184
+ project_excluded_podcasts: float = Field(alias="projectExcludedPodcasts")
2185
+ total_results_available: float = Field(alias="totalResultsAvailable")
2186
+ results_processed: float = Field(alias="resultsProcessed")
2187
+ results_filtered: float = Field(alias="resultsFiltered")
2188
+ results_returned: float = Field(alias="resultsReturned")
2189
+
2190
+
2191
+ class SearchPodcastsResponseSeachResultsStatsFiltersProjectPodcastRelevancyScoresValue(BaseModel):
2192
+ model_config = ConfigDict(populate_by_name=True)
2193
+
2194
+ answer: AskAgentProjectPodcastRelevancyResponseResultAnswer
2195
+
2196
+
2197
+ class SearchPodcastsResponseSeachResultsStatsFilters(BaseModel):
2198
+ model_config = ConfigDict(populate_by_name=True)
2199
+
2200
+ relevancy_scores_totals: dict[str, float] = Field(alias="relevancyScoresTotals")
2201
+ project_podcast_relevancy_scores: (
2202
+ dict[str, SearchPodcastsResponseSeachResultsStatsFiltersProjectPodcastRelevancyScoresValue | None] | None
2203
+ ) = Field(default=None, alias="projectPodcastRelevancyScores")
2204
+
2205
+
2206
+ class SearchPodcastsResponseSeachResultsStats(BaseModel):
2207
+ model_config = ConfigDict(populate_by_name=True)
2208
+
2209
+ time: SearchPodcastsResponseSeachResultsStatsTime
2210
+ totals: SearchPodcastsResponseSeachResultsStatsTotals
2211
+ filters: SearchPodcastsResponseSeachResultsStatsFilters
2212
+
2213
+
2214
+ class SearchPodcastsResponse(BaseModel):
2215
+ model_config = ConfigDict(populate_by_name=True)
2216
+
2217
+ search_mode: Literal["podcasts"] = Field(alias="searchMode")
2218
+ search_id: str = Field(alias="searchId")
2219
+ search_options: AskAgentProjectPodcastRelevancySearchOptionsVariant1 = Field(alias="searchOptions")
2220
+ seach_results_stats: SearchPodcastsResponseSeachResultsStats = Field(alias="seachResultsStats")
2221
+ result: Any
2222
+ cursor: str | None
2223
+
2224
+
2225
+ class SearchEpisodesResponse(BaseModel):
2226
+ model_config = ConfigDict(populate_by_name=True)
2227
+
2228
+ search_mode: Literal["episodes"] = Field(alias="searchMode")
2229
+ search_id: str = Field(alias="searchId")
2230
+ search_options: AskAgentProjectPodcastRelevancySearchOptionsVariant2 = Field(alias="searchOptions")
2231
+ seach_results_stats: SearchPodcastsResponseSeachResultsStats = Field(alias="seachResultsStats")
2232
+ result: Any
2233
+ cursor: str | None
2234
+
2235
+
2236
+ class GetRssStatsPodcast2ResponsePodcast2StatsPodcastLevelStatsFieldFrequencyItem(BaseModel):
2237
+ model_config = ConfigDict(populate_by_name=True)
2238
+
2239
+ field: str
2240
+ frequency: float
2241
+ percentage: float
2242
+
2243
+
2244
+ class GetRssStatsPodcast2ResponsePodcast2StatsPodcastLevelStats(BaseModel):
2245
+ model_config = ConfigDict(populate_by_name=True)
2246
+
2247
+ total_rss_feeds: float = Field(alias="totalRssFeeds")
2248
+ field_frequency: list[GetRssStatsPodcast2ResponsePodcast2StatsPodcastLevelStatsFieldFrequencyItem] = Field(
2249
+ alias="fieldFrequency"
2250
+ )
2251
+
2252
+
2253
+ class GetRssStatsPodcast2ResponsePodcast2StatsTopPodcast2PodcastsItem(BaseModel):
2254
+ model_config = ConfigDict(populate_by_name=True)
2255
+
2256
+ podcast_id: str = Field(alias="podcastId")
2257
+ host: str
2258
+ podcast_slug: str = Field(alias="podcastSlug")
2259
+ podcast_image_url: str | None = Field(alias="podcastImageUrl")
2260
+ rss_feed_url: str = Field(alias="rssFeedUrl")
2261
+ num_podcast20_fields: float = Field(alias="numPodcast20Fields")
2262
+ implemented_fields: list[str] = Field(alias="implementedFields")
2263
+
2264
+
2265
+ class GetRssStatsPodcast2ResponsePodcast2StatsTopHostsItem(BaseModel):
2266
+ model_config = ConfigDict(populate_by_name=True)
2267
+
2268
+ host: str
2269
+ total_podcasts: float = Field(alias="totalPodcasts")
2270
+ percentage: float
2271
+
2272
+
2273
+ class GetRssStatsPodcast2ResponsePodcast2StatsTopHostsWithPodcast2TranscriptsItem(BaseModel):
2274
+ model_config = ConfigDict(populate_by_name=True)
2275
+
2276
+ host: str
2277
+ total_podcasts: float = Field(alias="totalPodcasts")
2278
+ num_podcasts_with_transcripts: float = Field(alias="numPodcastsWithTranscripts")
2279
+ percentage: float
2280
+
2281
+
2282
+ class GetRssStatsPodcast2ResponsePodcast2StatsTopHostsWithPodcast2StatsItem(BaseModel):
2283
+ model_config = ConfigDict(populate_by_name=True)
2284
+
2285
+ host: str
2286
+ total_podcasts: float = Field(alias="totalPodcasts")
2287
+ average_num_podcast2_fields: float = Field(alias="averageNumPodcast2Fields")
2288
+
2289
+
2290
+ class GetRssStatsPodcast2ResponsePodcast2Stats(BaseModel):
2291
+ model_config = ConfigDict(populate_by_name=True)
2292
+
2293
+ podcast_level_stats: GetRssStatsPodcast2ResponsePodcast2StatsPodcastLevelStats = Field(alias="podcastLevelStats")
2294
+ episode_level_stats: GetRssStatsPodcast2ResponsePodcast2StatsPodcastLevelStats = Field(alias="episodeLevelStats")
2295
+ top_podcast2_podcasts: list[GetRssStatsPodcast2ResponsePodcast2StatsTopPodcast2PodcastsItem] = Field(
2296
+ alias="topPodcast2Podcasts"
2297
+ )
2298
+ top_hosts: list[GetRssStatsPodcast2ResponsePodcast2StatsTopHostsItem] = Field(alias="topHosts")
2299
+ top_hosts_with_podcast2_transcripts: list[
2300
+ GetRssStatsPodcast2ResponsePodcast2StatsTopHostsWithPodcast2TranscriptsItem
2301
+ ] = Field(alias="topHostsWithPodcast2Transcripts")
2302
+ top_hosts_with_podcast2_stats: list[GetRssStatsPodcast2ResponsePodcast2StatsTopHostsWithPodcast2StatsItem] = Field(
2303
+ alias="topHostsWithPodcast2Stats"
2304
+ )
2305
+
2306
+
2307
+ class GetRssStatsPodcast2Response(BaseModel):
2308
+ model_config = ConfigDict(populate_by_name=True)
2309
+
2310
+ podcast2_stats: GetRssStatsPodcast2ResponsePodcast2Stats = Field(alias="podcast2Stats")
2311
+
2312
+
2313
+ class GetTeamPodcastsResponseTeamPodcastsItemProjectsItem(BaseModel):
2314
+ model_config = ConfigDict(populate_by_name=True)
2315
+
2316
+ project_id: str = Field(alias="projectId")
2317
+ added_by_user_id: str = Field(alias="addedByUserId")
2318
+ listed_podcast_state: Literal["prospect", "qualified", "pitched", "lost", "booked", "ignored"] = Field(
2319
+ alias="listedPodcastState"
2320
+ )
2321
+
2322
+
2323
+ class GetTeamPodcastsResponseTeamPodcastsItem(BaseModel):
2324
+ model_config = ConfigDict(populate_by_name=True)
2325
+
2326
+ added_by_user_id: str | None = Field(alias="addedByUserId")
2327
+ added_reason: Literal["add-to-team-podcasts-button", "listed-podcast", "migration", "script", "search-export"] = (
2328
+ Field(alias="addedReason")
2329
+ )
2330
+ blacklist: bool
2331
+ created_at: Any = Field(alias="createdAt")
2332
+ podcast: GetLatestEpisodesResponseLatestPodcastsItemPodcast
2333
+ podcast_id: str = Field(alias="podcastId")
2334
+ projects: list[GetTeamPodcastsResponseTeamPodcastsItemProjectsItem]
2335
+ sync: bool
2336
+ team_id: str = Field(alias="teamId")
2337
+ last_airtable_sync: Any | None = Field(default=None, alias="lastAirtableSync")
2338
+ last_airtable_error_sync_date: Any | None = Field(default=None, alias="lastAirtableErrorSyncDate")
2339
+ airtable_record_id: str | None = Field(default=None, alias="airtableRecordId")
2340
+
2341
+
2342
+ class GetTeamPodcastsResponse(BaseModel):
2343
+ model_config = ConfigDict(populate_by_name=True)
2344
+
2345
+ total: float
2346
+ total_filtered: float = Field(alias="totalFiltered")
2347
+ team_podcasts: list[GetTeamPodcastsResponseTeamPodcastsItem] = Field(alias="teamPodcasts")
2348
+
2349
+
2350
+ class AddPodcastToTeamResponse(BaseModel):
2351
+ model_config = ConfigDict(populate_by_name=True)
2352
+
2353
+ team_podcast: GetTeamPodcastsResponseTeamPodcastsItem = Field(alias="teamPodcast")
2354
+
2355
+
2356
+ class RemoveMultiplePodcastsFromTeamResponse(BaseModel):
2357
+ model_config = ConfigDict(populate_by_name=True)
2358
+
2359
+ not_found_apple_ids: list[float] = Field(alias="notFoundAppleIds")
2360
+ errors: float
2361
+ removed_podcasts: float = Field(alias="removedPodcasts")
2362
+ not_on_list: float = Field(alias="notOnList")
2363
+
2364
+
2365
+ class GetCurrentResponseFeatureFlags(BaseModel):
2366
+ model_config = ConfigDict(populate_by_name=True)
2367
+
2368
+ s3_integration: bool | None = Field(default=None, alias="s3Integration")
2369
+ airtable_integration: bool | None = Field(default=None, alias="airtableIntegration")
2370
+ automated_search: bool | None = Field(default=None, alias="automatedSearch")
2371
+ apply_page: bool | None = Field(default=None, alias="applyPage")
2372
+ go_high_level_integration: bool | None = Field(default=None, alias="goHighLevelIntegration")
2373
+
2374
+
2375
+ class GetCurrentResponseAliasesItem(BaseModel):
2376
+ model_config = ConfigDict(populate_by_name=True)
2377
+
2378
+ alias: Literal[
2379
+ "deepResearchRequests",
2380
+ "diarizationRequests",
2381
+ "episodeLookups",
2382
+ "exportCount",
2383
+ "podcastLookups",
2384
+ "searchCount",
2385
+ "transcriptDownloadCount",
2386
+ "transcriptionRequests",
2387
+ ]
2388
+ label: str
2389
+ used: float
2390
+ limit: float | None
2391
+
2392
+
2393
+ class GetCurrentResponseProjectUsageProjects(BaseModel):
2394
+ model_config = ConfigDict(populate_by_name=True)
2395
+
2396
+ used: float
2397
+ limit: float | None
2398
+
2399
+
2400
+ class GetCurrentResponseProjectUsage(BaseModel):
2401
+ model_config = ConfigDict(populate_by_name=True)
2402
+
2403
+ projects: GetCurrentResponseProjectUsageProjects
2404
+ guest_profiles: GetCurrentResponseProjectUsageProjects = Field(alias="guestProfiles")
2405
+
2406
+
2407
+ class GetCurrentResponse(BaseModel):
2408
+ model_config = ConfigDict(populate_by_name=True)
2409
+
2410
+ month: str
2411
+ plan: str
2412
+ feature_flags: GetCurrentResponseFeatureFlags = Field(alias="featureFlags")
2413
+ aliases: list[GetCurrentResponseAliasesItem]
2414
+ total_used: float = Field(alias="totalUsed")
2415
+ project_usage: GetCurrentResponseProjectUsage | None = Field(default=None, alias="projectUsage")
2416
+
2417
+
2418
+ class GetDailyResponseDaysItem(BaseModel):
2419
+ model_config = ConfigDict(populate_by_name=True)
2420
+
2421
+ date: str
2422
+ total_usage: float = Field(alias="totalUsage")
2423
+ usage_by_alias: dict[str, float] = Field(alias="usageByAlias")
2424
+
2425
+
2426
+ class GetDailyResponse(BaseModel):
2427
+ model_config = ConfigDict(populate_by_name=True)
2428
+
2429
+ days: list[GetDailyResponseDaysItem]
2430
+ limits: dict[str, float | None]
2431
+
2432
+
2433
+ class GetMonthlyResponseMonthsItem(BaseModel):
2434
+ model_config = ConfigDict(populate_by_name=True)
2435
+
2436
+ month: str
2437
+ total_usage: float = Field(alias="totalUsage")
2438
+ usage_by_alias: dict[str, float] = Field(alias="usageByAlias")
2439
+
2440
+
2441
+ class GetMonthlyResponse(BaseModel):
2442
+ model_config = ConfigDict(populate_by_name=True)
2443
+
2444
+ months: list[GetMonthlyResponseMonthsItem]
2445
+ limits: dict[str, float | None]
2446
+
2447
+
2448
+ class GetMembersResponseMembersItem(BaseModel):
2449
+ model_config = ConfigDict(populate_by_name=True)
2450
+
2451
+ user_id: str = Field(alias="userId")
2452
+ email: str | None
2453
+ display_name: str | None = Field(alias="displayName")
2454
+ total_usage: float = Field(alias="totalUsage")
2455
+ usage_by_alias: dict[str, float] = Field(alias="usageByAlias")
2456
+
2457
+
2458
+ class GetMembersResponse(BaseModel):
2459
+ model_config = ConfigDict(populate_by_name=True)
2460
+
2461
+ members: list[GetMembersResponseMembersItem]