├── .nvmrc ├── api_src ├── components │ ├── responses │ │ ├── 404.yaml │ │ ├── static_feeds_db.yaml │ │ ├── 401.yaml │ │ ├── add_byitunesid.yaml │ │ ├── hub_pubnotify.yaml │ │ ├── add_batch_byfeedurl_400.yaml │ │ ├── itunes_replacement.yaml │ │ ├── static_dead_feeds.yaml │ │ ├── stats_current.yaml │ │ ├── 400.yaml │ │ ├── podcasts_dead.yaml │ │ ├── value_byfeedid.yaml │ │ ├── value_byfeedurl.yaml │ │ ├── add_byfeedurl.yaml │ │ ├── categories_list.yaml │ │ ├── episodes_byid.yaml │ │ ├── podcasts_byfeedid.yaml │ │ ├── podcasts_byfeedurl.yaml │ │ ├── podcasts_byguid.yaml │ │ ├── podcasts_byitunesid.yaml │ │ ├── recent_soundbites.yaml │ │ ├── value_bypodcastguid.yaml │ │ ├── value_byepisodeguid.yaml │ │ ├── 400_static.yaml │ │ ├── bymedium.yaml │ │ ├── add_byfeedurl_batch.yaml │ │ ├── episodes_live.yaml │ │ ├── recent_episodes.yaml │ │ ├── search_byterm.yaml │ │ ├── recent_newfeeds.yaml │ │ ├── episodes_byfeedurl.yaml │ │ ├── episodes_byitunesid.yaml │ │ ├── episodes_random.yaml │ │ ├── search_byperson.yaml │ │ ├── podcasts_batch_byguid.yaml │ │ ├── static_music_rss.yaml │ │ ├── recent_feeds.yaml │ │ ├── podcasts_trending.yaml │ │ ├── podcasts_bytag.yaml │ │ ├── recent_newvaluefeeds.yaml │ │ ├── value_batch_byepisodeguid.yaml │ │ ├── episodes_byguid.yaml │ │ ├── episodes_byfeedid.yaml │ │ ├── static_tracking_feed_value_blocks.yaml │ │ ├── recent_data.yaml │ │ ├── static_current.yaml │ │ ├── static_tracking_episode_value_blocks.yaml │ │ ├── static_music_opml.yaml │ │ └── static_music_json.yaml │ ├── security │ │ └── security.yaml │ ├── properties │ │ ├── contentLink.yaml │ │ ├── found.yaml │ │ ├── name_category.yaml │ │ ├── position.yaml │ │ ├── title_episode.yaml │ │ ├── collectionId.yaml │ │ ├── count.yaml │ │ ├── explicit_feed.yaml │ │ ├── method_v4v.yaml │ │ ├── title_feed.yaml │ │ ├── episode_number.yaml │ │ ├── price.yaml │ │ ├── resultCount.yaml │ │ ├── feedCountTotal.yaml │ │ ├── id_category.yaml │ │ ├── id_feed.yaml │ │ ├── medium.yaml │ │ ├── name_destination.yaml │ │ ├── total.yaml │ │ ├── id_episode.yaml │ │ ├── id_person.yaml │ │ ├── id_query.yaml │ │ ├── feedCount.yaml │ │ ├── guid.yaml │ │ ├── itemCount.yaml │ │ ├── query_search.yaml │ │ ├── description_response.yaml │ │ ├── episodeCount.yaml │ │ ├── feedid_query.yaml │ │ ├── guid_query.yaml │ │ ├── max.yaml │ │ ├── season.yaml │ │ ├── split_destination.yaml │ │ ├── trendScore.yaml │ │ ├── type_destination.yaml │ │ ├── contentHash.yaml │ │ ├── endTime_live.yaml │ │ ├── episodeCountTotal.yaml │ │ ├── feeds.yaml │ │ ├── feeds_data.yaml │ │ ├── title_soundbite.yaml │ │ ├── episode_object.yaml │ │ ├── feeds_batch.yaml │ │ ├── feeds_bytag.yaml │ │ ├── feeds_dead.yaml │ │ ├── generator.yaml │ │ ├── itunesType.yaml │ │ ├── query_podcast_id_single.yaml │ │ ├── startTime_live.yaml │ │ ├── value_guid_list.yaml │ │ ├── enclosureType.yaml │ │ ├── feeds_trending.yaml │ │ ├── items_data.yaml │ │ ├── items_podcast.yaml │ │ ├── status.yaml │ │ ├── status_live.yaml │ │ ├── allfound.yaml │ │ ├── dateCrawled.yaml │ │ ├── datePublished.yaml │ │ ├── episodeAdded.yaml │ │ ├── items_itunesId.yaml │ │ ├── items_live.yaml │ │ ├── liveItems_podcast.yaml │ │ ├── query_episodeguid.yaml │ │ ├── createdOn.yaml │ │ ├── feedsWithNewEpisodes10days.yaml │ │ ├── feedsWithNewEpisodes14days.yaml │ │ ├── feedsWithNewEpisodes30days.yaml │ │ ├── feedsWithNewEpisodes3days.yaml │ │ ├── feedsWithNewEpisodes60days.yaml │ │ ├── feedsWithNewEpisodes7days.yaml │ │ ├── feedsWithNewEpisodes90days.yaml │ │ ├── feeds_categories.yaml │ │ ├── items_byperson.yaml │ │ ├── items_recent.yaml │ │ ├── query_guids.yaml │ │ ├── timeAdded.yaml │ │ ├── url_feed.yaml │ │ ├── duration_soundbite.yaml │ │ ├── episodes_random_array.yaml │ │ ├── existed.yaml │ │ ├── id_query_guid.yaml │ │ ├── itunes_replacement_results.yaml │ │ ├── newEpisodes10days.yaml │ │ ├── newEpisodes14days.yaml │ │ ├── newEpisodes30days.yaml │ │ ├── newEpisodes3days.yaml │ │ ├── newEpisodes60days.yaml │ │ ├── newEpisodes7days.yaml │ │ ├── newEpisodes90days.yaml │ │ ├── enclosureLength.yaml │ │ ├── lastCrawlTime.yaml │ │ ├── nextSince.yaml │ │ ├── query_id.yaml │ │ ├── query_url.yaml │ │ ├── since.yaml │ │ ├── contentType.yaml │ │ ├── itunesId_feed.yaml │ │ ├── lastParseTime.yaml │ │ ├── link_feed.yaml │ │ ├── oldestItemPublishTime.yaml │ │ ├── feedImageUrlHash.yaml │ │ ├── inPollingQueue.yaml │ │ ├── query_guid_id.yaml │ │ ├── soundbites.yaml │ │ ├── startTime.yaml │ │ ├── status_feed.yaml │ │ ├── type.yaml │ │ ├── type_v4v.yaml │ │ ├── accountId_socialInteract.yaml │ │ ├── imageUrlHash.yaml │ │ ├── query_podcastguid.yaml │ │ ├── url_query.yaml │ │ ├── valueCreatedOn.yaml │ │ ├── view_url.yaml │ │ ├── address_destination.yaml │ │ ├── enclosureUrl.yaml │ │ ├── fee_destination.yaml │ │ ├── transcripts.yaml │ │ ├── url_socialInteract.yaml │ │ ├── destinations_v4v.yaml │ │ ├── link_episode.yaml │ │ ├── suggested_v4v.yaml │ │ ├── duplicateOf.yaml │ │ ├── title_feed_censored.yaml │ │ ├── id_guid_query.yaml │ │ ├── nextStartAt.yaml │ │ ├── originalUrl.yaml │ │ ├── author.yaml │ │ ├── episodeType.yaml │ │ ├── feedurl_query.yaml │ │ ├── priority_socialInteract.yaml │ │ ├── duration.yaml │ │ ├── image_feed.yaml │ │ ├── episodesWithChapters.yaml │ │ ├── ownerName.yaml │ │ ├── explicit_episode.yaml │ │ ├── image_episode.yaml │ │ ├── accountUrl_socialInteract.yaml │ │ ├── crawlErrors.yaml │ │ ├── episodesWithTranscripts.yaml │ │ ├── language.yaml │ │ ├── lastGoodHttpStatusTime.yaml │ │ ├── query_guid.yaml │ │ ├── feedsWithChapters.yaml │ │ ├── feedsWithFundingTag.yaml │ │ ├── feedsWithMediumMusic.yaml │ │ ├── feedsWithMediumVideo.yaml │ │ ├── feedsWithValueBlocks.yaml │ │ ├── feedsWithTranscripts.yaml │ │ ├── datePublishedPretty.yaml │ │ ├── message.yaml │ │ ├── name_person.yaml │ │ ├── query_byepisodeguid.yaml │ │ ├── chaptersUrl.yaml │ │ ├── dead.yaml │ │ ├── lastUpdateTime.yaml │ │ ├── artwork.yaml │ │ ├── data.yaml │ │ ├── paidFeedsWithNewEpisodes3days.yaml │ │ ├── paidFeedsWithNewEpisodes60days.yaml │ │ ├── paidFeedsWithNewEpisodes7days.yaml │ │ ├── query_podcast_id_multiple.yaml │ │ ├── enclosureUrl_soundbite.yaml │ │ ├── paidFeedsWithNewEpisodes10days.yaml │ │ ├── paidFeedsWithNewEpisodes14days.yaml │ │ ├── paidFeedsWithNewEpisodes30days.yaml │ │ ├── paidFeedsWithNewEpisodes90days.yaml │ │ ├── priority.yaml │ │ ├── transcriptUrl.yaml │ │ ├── medium_feed.yaml │ │ ├── lastHttpStatus.yaml │ │ ├── categories.yaml │ │ ├── model_v4v.yaml │ │ ├── img.yaml │ │ ├── url_funding.yaml │ │ ├── soundbite.yaml │ │ ├── persons.yaml │ │ ├── artworkUrl.yaml │ │ ├── podcastguid.yaml │ │ ├── parseErrors.yaml │ │ ├── socialInteract.yaml │ │ ├── protocol_socialInteract.yaml │ │ ├── href.yaml │ │ ├── guids.yaml │ │ ├── locked.yaml │ │ ├── newestItemPublishTime.yaml │ │ ├── podcastGuid_query.yaml │ │ ├── funding.yaml │ │ ├── group.yaml │ │ ├── customKey.yaml │ │ ├── chash.yaml │ │ ├── description_feed.yaml │ │ ├── value_byepisodeguid_batch.yaml │ │ ├── role.yaml │ │ ├── description_episode.yaml │ │ ├── data_static.yaml │ │ ├── customValue.yaml │ │ ├── value.yaml │ │ ├── feeds_recent_new.yaml │ │ ├── valueBlock.yaml │ │ ├── stats.yaml │ │ ├── feeds_recent.yaml │ │ ├── value_byepisodeguid.yaml │ │ ├── items_soundbites.yaml │ │ ├── feeds_recent_value.yaml │ │ └── feed_itunes.yaml │ ├── schemas │ │ ├── feed_categories.yaml │ │ ├── podcasts_batch_byguid.yaml │ │ ├── feed_dead.yaml │ │ ├── person.yaml │ │ ├── socialInteract_item.yaml │ │ ├── value_batch_byepisodeguid.yaml │ │ ├── feeds_data_obj.yaml │ │ ├── destination_v4v.yaml │ │ ├── feed_trending.yaml │ │ ├── items_data_obj.yaml │ │ ├── transcript.yaml │ │ ├── item_podcast_live.yaml │ │ ├── item_podcast_recent.yaml │ │ ├── item_podcast_random.yaml │ │ └── item_search_byperson.yaml │ ├── parameters │ │ ├── id_itunes_add.yaml │ │ ├── aponly.yaml │ │ ├── q_person.yaml │ │ ├── q.yaml │ │ ├── since.yaml │ │ ├── feedid.yaml │ │ ├── start_at.yaml │ │ ├── term_itunes.yaml │ │ ├── id_feed_podcast_pi.yaml │ │ ├── max.yaml │ │ ├── feedurl.yaml │ │ ├── id_episode_pi.yaml │ │ ├── id_feed_episode_pi_single.yaml │ │ ├── max_5000.yaml │ │ ├── entity.yaml │ │ ├── max_random.yaml │ │ ├── episodeguid.yaml │ │ ├── max_recent_episodes.yaml │ │ ├── max_recent_feeds.yaml │ │ ├── url.yaml │ │ ├── max_recent_soundbites.yaml │ │ ├── similar.yaml │ │ ├── max_recent_data.yaml │ │ ├── id_feed_podcast_pi_pubnotify.yaml │ │ ├── pretty.yaml │ │ ├── newest.yaml │ │ ├── enclosure.yaml │ │ ├── guid_episode.yaml │ │ ├── before.yaml │ │ ├── url_pubnotify.yaml │ │ ├── desc.yaml │ │ ├── clean.yaml │ │ ├── feedid_newfeeds.yaml │ │ ├── fulltext.yaml │ │ ├── val.yaml │ │ ├── itunesid.yaml │ │ ├── podcast-value.yaml │ │ ├── excludeString.yaml │ │ ├── id_feed_podcast_itunes.yaml │ │ ├── podcast-valueTimeSplit.yaml │ │ ├── podcastguid_optional.yaml │ │ ├── guid_feed_podcast.yaml │ │ ├── podcastguid.yaml │ │ ├── id_feed_episode_pi.yaml │ │ ├── medium.yaml │ │ ├── chash.yaml │ │ ├── lang.yaml │ │ ├── notcat.yaml │ │ └── cat.yaml │ └── securitySchemes │ │ ├── API-Key.yaml │ │ ├── User-Agent.yaml │ │ ├── Date.yaml │ │ └── Authorization.yaml └── paths │ ├── categories │ └── list.yaml │ ├── static │ ├── tracking │ │ ├── feedValueBlocks.yaml │ │ ├── episodeValueBlocks.yaml │ │ └── current.yaml │ ├── public │ │ ├── podcastindex_feeds_db.yaml │ │ └── podcastindex_dead_feeds.yaml │ └── stats │ │ ├── daily_counts.yaml │ │ ├── hourly_counts.yaml │ │ ├── music_rss.yaml │ │ ├── music_json.yaml │ │ ├── music_opml.yaml │ │ └── v4v.yaml │ ├── podcasts │ ├── byitunesid.yaml │ ├── dead.yaml │ ├── bymedium.yaml │ ├── byfeedid.yaml │ ├── trending.yaml │ ├── byfeedurl.yaml │ ├── batch │ │ └── byguid.yaml │ └── byguid.yaml │ ├── episodes │ ├── byid.yaml │ ├── live.yaml │ ├── random.yaml │ ├── bypodcastguid.yaml │ ├── byguid.yaml │ ├── byfeedurl.yaml │ └── byitunesid.yaml │ ├── recent │ ├── newvaluefeeds.yaml │ ├── episodes.yaml │ ├── soundbites.yaml │ ├── feeds.yaml │ ├── newfeeds.yaml │ └── data.yaml │ ├── value │ ├── bypodcastguid.yaml │ ├── byfeedid.yaml │ ├── byfeedurl.yaml │ ├── batch │ │ └── byepisodeguid.yaml │ └── byepisodeguid.yaml │ ├── hub │ └── pubnotify.yaml │ ├── stats │ └── current.yaml │ ├── itunes │ ├── search.yaml │ └── lookup.yaml │ ├── search │ ├── music │ │ └── byterm.yaml │ ├── byperson.yaml │ └── bytitle.yaml │ └── add │ └── batch │ └── byfeedurl.yaml ├── .yarnrc.yml ├── docs ├── dark_mode.svg ├── template.html ├── styles.css └── light_mode.svg ├── .editorconfig ├── Postman Docs └── PodcastIndexOrgEnvironment.postman_environment.json ├── .github └── workflows │ └── lint-api.yml ├── .redocly.yaml ├── package.json └── LICENSE /.nvmrc: -------------------------------------------------------------------------------- 1 | v20.11.0 2 | -------------------------------------------------------------------------------- /api_src/components/responses/404.yaml: -------------------------------------------------------------------------------- 1 | description: Not found 2 | -------------------------------------------------------------------------------- /.yarnrc.yml: -------------------------------------------------------------------------------- 1 | compressionLevel: mixed 2 | 3 | enableGlobalCache: false 4 | 5 | nodeLinker: node-modules 6 | -------------------------------------------------------------------------------- /api_src/components/security/security.yaml: -------------------------------------------------------------------------------- 1 | API-Key: [] 2 | User-Agent: [] 3 | Date: [] 4 | Authorization: [] 5 | -------------------------------------------------------------------------------- /api_src/components/properties/contentLink.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Link TODO 4 | type: string 5 | example: "" 6 | -------------------------------------------------------------------------------- /api_src/components/properties/found.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Number of value data returned. 4 | type: integer 5 | example: 4 6 | -------------------------------------------------------------------------------- /api_src/components/properties/name_category.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The category name. 4 | type: string 5 | example: "Books" 6 | -------------------------------------------------------------------------------- /api_src/components/properties/position.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Position in data 4 | type: integer 5 | example: 12843054496 6 | -------------------------------------------------------------------------------- /api_src/components/properties/title_episode.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Name of the episode 4 | type: string 5 | example: "Gotham" 6 | -------------------------------------------------------------------------------- /api_src/components/properties/collectionId.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The iTunes Feed ID 4 | type: integer 5 | example: 1441923632 6 | -------------------------------------------------------------------------------- /api_src/components/properties/count.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Number of items returned in request 4 | type: integer 5 | example: 1 6 | -------------------------------------------------------------------------------- /api_src/components/properties/explicit_feed.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Is feed marked as explicit 4 | type: boolean 5 | example: false 6 | -------------------------------------------------------------------------------- /api_src/components/properties/method_v4v.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Method for sending payment 4 | type: string 5 | example: "keysend" 6 | -------------------------------------------------------------------------------- /api_src/components/properties/title_feed.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Name of the feed 4 | type: string 5 | example: "Batman University" 6 | -------------------------------------------------------------------------------- /api_src/components/properties/episode_number.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Episode number 4 | type: integer 5 | nullable: true 6 | example: 19 7 | -------------------------------------------------------------------------------- /api_src/components/properties/price.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Price of content. Will always return 0. 4 | type: integer 5 | example: 0 6 | -------------------------------------------------------------------------------- /api_src/components/properties/resultCount.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Number of items returned in request 4 | type: integer 5 | example: 1 6 | -------------------------------------------------------------------------------- /api_src/components/properties/feedCountTotal.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Total podcast feeds in the index. 4 | type: integer 5 | example: 4257865 6 | -------------------------------------------------------------------------------- /api_src/components/properties/id_category.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The internal PodcastIndex.org category ID. 4 | type: integer 5 | example: 2 6 | -------------------------------------------------------------------------------- /api_src/components/properties/id_feed.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The internal PodcastIndex.org Feed ID. 4 | type: integer 5 | example: 75075 6 | -------------------------------------------------------------------------------- /api_src/components/properties/medium.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Value of `medium` parameter used in request 4 | type: string 5 | example: "film" 6 | -------------------------------------------------------------------------------- /api_src/components/properties/name_destination.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Name for the destination 4 | type: string 5 | example: "podcaster" 6 | -------------------------------------------------------------------------------- /api_src/components/properties/total.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Total number of feeds returnable by endpoint 4 | type: integer 5 | example: 13143 6 | -------------------------------------------------------------------------------- /api_src/components/properties/id_episode.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The internal PodcastIndex.org episode ID. 4 | type: integer 5 | example: 16795088 6 | -------------------------------------------------------------------------------- /api_src/components/properties/id_person.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The internal PodcastIndex.org person ID. 4 | type: integer 5 | example: 411960 6 | -------------------------------------------------------------------------------- /api_src/components/properties/id_query.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Value passed to request in the `id` field 4 | type: string 5 | example: "920666" 6 | -------------------------------------------------------------------------------- /api_src/components/properties/feedCount.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Number of items in the `feeds` returned in request 4 | type: integer 5 | example: 1 6 | -------------------------------------------------------------------------------- /api_src/components/properties/guid.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The unique identifier for the episode 4 | type: string 5 | example: "incomparable/batman/19" 6 | -------------------------------------------------------------------------------- /api_src/components/properties/itemCount.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Number of items in the `items` returned in request 4 | type: integer 5 | example: 1 6 | -------------------------------------------------------------------------------- /api_src/components/properties/query_search.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Search terms passed to request 4 | type: string 5 | example: "batman university" 6 | -------------------------------------------------------------------------------- /api_src/components/properties/description_response.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Description of the response 4 | type: string 5 | example: "Found matching feed" 6 | -------------------------------------------------------------------------------- /api_src/components/properties/episodeCount.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Number of episodes for this feed known to the index. 4 | type: integer 5 | example: 19 6 | -------------------------------------------------------------------------------- /api_src/components/properties/feedid_query.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Value passed to request in the `feedid` parameter 4 | type: string 5 | example: "920666" 6 | -------------------------------------------------------------------------------- /api_src/components/properties/guid_query.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Value passed to request in the `guid` parameter. 4 | type: string 5 | example: "PC2084" 6 | -------------------------------------------------------------------------------- /api_src/components/properties/max.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Value of `max` parameter passed to request. 4 | type: integer 5 | nullable: true 6 | example: 2 7 | -------------------------------------------------------------------------------- /api_src/components/properties/season.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Season number. May be null for `liveItem`. 4 | type: integer 5 | nullable: true 6 | example: 3 7 | -------------------------------------------------------------------------------- /api_src/components/properties/split_destination.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Share of payment the destination should receive 4 | type: integer 5 | example: 99 6 | -------------------------------------------------------------------------------- /api_src/components/properties/trendScore.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The ranking for how the podcast is trending in the index 4 | type: integer 5 | example: 1 6 | -------------------------------------------------------------------------------- /api_src/components/properties/type_destination.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Type of destination 4 | type: string 5 | enum: 6 | - "node" 7 | example: "node" 8 | -------------------------------------------------------------------------------- /api_src/components/properties/contentHash.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Hash of the entire feed body 4 | type: string 5 | example: "a652d25b56f3e2f0e069c0cc72145a85" 6 | -------------------------------------------------------------------------------- /api_src/components/properties/endTime_live.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The time the livestream ends 4 | type: integer 5 | format: Unix Epoch 6 | example: 1674167400 7 | -------------------------------------------------------------------------------- /api_src/components/properties/episodeCountTotal.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Total individual podcast episodes in the index. 4 | type: integer 5 | example: 143953477 6 | -------------------------------------------------------------------------------- /api_src/components/properties/feeds.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | List of feeds matching request 4 | type: array 5 | items: 6 | $ref: '../schemas/feed_search.yaml' 7 | -------------------------------------------------------------------------------- /api_src/components/properties/feeds_data.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | List of recent feed data 4 | type: array 5 | items: 6 | $ref: '../schemas/feeds_data_obj.yaml' 7 | -------------------------------------------------------------------------------- /api_src/components/properties/title_soundbite.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Name of the soundbite 4 | type: string 5 | example: "Why the Podcast Namespace Matters" 6 | -------------------------------------------------------------------------------- /api_src/components/properties/episode_object.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Episode data 4 | type: object 5 | properties: 6 | $ref: '../schemas/item_podcast_byid.yaml' 7 | -------------------------------------------------------------------------------- /api_src/components/properties/feeds_batch.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | List of feeds with matching GUID 4 | type: array 5 | items: 6 | $ref: 'feed_podcast_batch.yaml' 7 | -------------------------------------------------------------------------------- /api_src/components/properties/feeds_bytag.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | List of feeds matching request 4 | type: array 5 | items: 6 | $ref: '../schemas/feed_bytag.yaml' 7 | -------------------------------------------------------------------------------- /api_src/components/properties/feeds_dead.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | List of feeds matching request 4 | type: array 5 | items: 6 | $ref: '../schemas/feed_dead.yaml' 7 | -------------------------------------------------------------------------------- /api_src/components/properties/generator.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The channel-level generator element if there is one. 4 | type: string 5 | example: "my podcast host" 6 | -------------------------------------------------------------------------------- /api_src/components/properties/itunesType.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The type as specified by the `itunes:type` in the feed XML. 4 | type: string 5 | example: episodic 6 | -------------------------------------------------------------------------------- /api_src/components/properties/query_podcast_id_single.yaml: -------------------------------------------------------------------------------- 1 | title: Single ID 2 | # language=Markdown 3 | description: | 4 | Single ID passed to request 5 | type: string 6 | example: "75075" 7 | -------------------------------------------------------------------------------- /api_src/components/properties/startTime_live.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The time the livestream starts 4 | type: integer 5 | format: Unix Epoch 6 | example: 1674154800 7 | -------------------------------------------------------------------------------- /api_src/components/properties/value_guid_list.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | List of value blocks 4 | type: array 5 | items: 6 | $ref: 'value_byepisodeguid_batch.yaml' 7 | -------------------------------------------------------------------------------- /api_src/components/schemas/feed_categories.yaml: -------------------------------------------------------------------------------- 1 | type: object 2 | properties: 3 | id: 4 | $ref: '../properties/id_category.yaml' 5 | name: 6 | $ref: '../properties/name_category.yaml' 7 | -------------------------------------------------------------------------------- /api_src/components/parameters/id_itunes_add.yaml: -------------------------------------------------------------------------------- 1 | name: id 2 | in: query 3 | # language=Markdown 4 | description: | 5 | The iTunes ID to add 6 | schema: 7 | type: integer 8 | example: 1441923632 9 | -------------------------------------------------------------------------------- /api_src/components/properties/enclosureType.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The Content-Type for the item specified by the `enclosureUrl` 4 | type: string 5 | example: "audio/mp3" 6 | -------------------------------------------------------------------------------- /api_src/components/properties/feeds_trending.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | List of feeds matching request 4 | type: array 5 | items: 6 | $ref: '../schemas/feed_trending.yaml' 7 | -------------------------------------------------------------------------------- /api_src/components/properties/items_data.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | List of recent episode item data 4 | type: array 5 | items: 6 | $ref: '../schemas/items_data_obj.yaml' 7 | -------------------------------------------------------------------------------- /api_src/components/properties/items_podcast.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | List of episodes matching request 4 | type: array 5 | items: 6 | $ref: '../schemas/item_podcast.yaml' 7 | -------------------------------------------------------------------------------- /api_src/components/properties/status.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Indicates API request status 4 | type: string 5 | enum: 6 | - "true" 7 | - "false" 8 | example: "true" 9 | -------------------------------------------------------------------------------- /api_src/components/properties/status_live.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Status of the livestream 4 | type: string 5 | enum: 6 | - "ended" 7 | - "live" 8 | example: "live" 9 | -------------------------------------------------------------------------------- /api_src/components/properties/allfound.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Indicates if data was found for all `podcastguid` and `episodeguid` values. 4 | type: boolean 5 | example: true 6 | -------------------------------------------------------------------------------- /api_src/components/properties/dateCrawled.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The time this episode was found in the feed 4 | type: integer 5 | format: Unix Epoch 6 | example: 1598369047 7 | -------------------------------------------------------------------------------- /api_src/components/properties/datePublished.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The date and time the episode was published 4 | type: integer 5 | format: Unix Epoch 6 | example: 1546399813 7 | -------------------------------------------------------------------------------- /api_src/components/properties/episodeAdded.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The time the episode was added to the index 4 | type: integer 5 | format: Unix Epoch 6 | example: 1613786624 7 | -------------------------------------------------------------------------------- /api_src/components/properties/items_itunesId.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | List of episodes matching request 4 | type: array 5 | items: 6 | $ref: '../schemas/item_itunesId.yaml' 7 | -------------------------------------------------------------------------------- /api_src/components/properties/items_live.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | List of episodes matching request 4 | type: array 5 | items: 6 | $ref: '../schemas/item_podcast_live.yaml' 7 | -------------------------------------------------------------------------------- /api_src/components/properties/liveItems_podcast.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | List of live episodes for feed 4 | type: array 5 | items: 6 | $ref: '../schemas/liveitem_podcast.yaml' 7 | -------------------------------------------------------------------------------- /api_src/components/properties/query_episodeguid.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The value of the `episodeguid` argument passed to the request. 4 | type: string 5 | example: "PC20143" 6 | -------------------------------------------------------------------------------- /api_src/components/responses/static_feeds_db.yaml: -------------------------------------------------------------------------------- 1 | # language=markdown 2 | description: | 3 | Podcast Index Feeds Database 4 | content: 5 | application/gzip: 6 | schema: 7 | type: object 8 | -------------------------------------------------------------------------------- /api_src/components/parameters/aponly.yaml: -------------------------------------------------------------------------------- 1 | name: aponly 2 | in: query 3 | # language=Markdown 4 | description: | 5 | Only returns feeds with an `itunesId`. 6 | schema: 7 | type: boolean 8 | example: "true" 9 | -------------------------------------------------------------------------------- /api_src/components/properties/createdOn.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The first time the feed was seen by Podcast Index 4 | type: integer 5 | format: Unix Epoch 6 | example: 1613394034 7 | -------------------------------------------------------------------------------- /api_src/components/properties/feedsWithNewEpisodes10days.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Podcast feeds with a new episode released in the last 10 days. 4 | type: integer 5 | example: 212322 6 | -------------------------------------------------------------------------------- /api_src/components/properties/feedsWithNewEpisodes14days.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Podcast feeds with a new episode released in the last 14 days. 4 | type: integer 5 | example: 239664 6 | -------------------------------------------------------------------------------- /api_src/components/properties/feedsWithNewEpisodes30days.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Podcast feeds with a new episode released in the last 30 days. 4 | type: integer 5 | example: 306748 6 | -------------------------------------------------------------------------------- /api_src/components/properties/feedsWithNewEpisodes3days.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Podcast feeds with a new episode released in the last 3 days. 4 | type: integer 5 | example: 97522 6 | -------------------------------------------------------------------------------- /api_src/components/properties/feedsWithNewEpisodes60days.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Podcast feeds with a new episode released in the last 60 days. 4 | type: integer 5 | example: 382945 6 | -------------------------------------------------------------------------------- /api_src/components/properties/feedsWithNewEpisodes7days.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Podcast feeds with a new episode released in the last 7 days. 4 | type: integer 5 | example: 179043 6 | -------------------------------------------------------------------------------- /api_src/components/properties/feedsWithNewEpisodes90days.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Podcast feeds with a new episode released in the last 90 days. 4 | type: integer 5 | example: 436933 6 | -------------------------------------------------------------------------------- /api_src/components/properties/feeds_categories.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | List of categories 4 | type: array 5 | nullable: true 6 | items: 7 | $ref: '../schemas/feed_categories.yaml' 8 | -------------------------------------------------------------------------------- /api_src/components/properties/items_byperson.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | List of episodes matching request 4 | type: array 5 | items: 6 | $ref: '../schemas/item_search_byperson.yaml' 7 | -------------------------------------------------------------------------------- /api_src/components/properties/items_recent.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | List of episodes matching request 4 | type: array 5 | items: 6 | $ref: '../schemas/item_podcast_recent.yaml' 7 | -------------------------------------------------------------------------------- /api_src/components/properties/query_guids.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Object containing the input query data 4 | type: object 5 | properties: 6 | guids: 7 | $ref: 'guids.yaml' 8 | -------------------------------------------------------------------------------- /api_src/components/properties/timeAdded.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The date and time the feed was added to the index 4 | type: integer 5 | format: Unix Epoch 6 | example: 1613786624 7 | -------------------------------------------------------------------------------- /api_src/components/properties/url_feed.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Current feed URL 4 | type: string 5 | format: URL 6 | example: "https://feeds.theincomparable.com/batmanuniversity" 7 | -------------------------------------------------------------------------------- /api_src/components/properties/duration_soundbite.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The length to play the item specified by the `enclosureUrl` 4 | type: integer 5 | format: seconds 6 | example: 40 7 | -------------------------------------------------------------------------------- /api_src/components/properties/episodes_random_array.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | List of episodes matching request 4 | type: array 5 | items: 6 | $ref: '../schemas/item_podcast_random.yaml' 7 | -------------------------------------------------------------------------------- /api_src/components/properties/existed.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Indicates if feed already exists in the index 4 | type: string 5 | enum: 6 | - "true" 7 | - "false" 8 | example: "true" 9 | -------------------------------------------------------------------------------- /api_src/components/properties/id_query_guid.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The Podcast Index Id of the podcast GUID passed as an argument to the request 4 | type: integer 5 | example: 920666 6 | -------------------------------------------------------------------------------- /api_src/components/properties/itunes_replacement_results.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | List of feeds matching request 4 | type: array 5 | items: 6 | $ref: '../schemas/itunes_results.yaml' 7 | -------------------------------------------------------------------------------- /api_src/components/properties/newEpisodes10days.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Podcast feeds with a new episode containing a released in the last 10 days. 4 | type: integer 5 | example: 684833 6 | -------------------------------------------------------------------------------- /api_src/components/properties/newEpisodes14days.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Podcast feeds with a new episode containing a released in the last 14 days. 4 | type: integer 5 | example: 907203 6 | -------------------------------------------------------------------------------- /api_src/components/properties/newEpisodes30days.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Podcast feeds with a new episode containing a released in the last 30 days. 4 | type: integer 5 | example: 1901547 6 | -------------------------------------------------------------------------------- /api_src/components/properties/newEpisodes3days.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Podcast feeds with a new episode containing a released in the last 3 days. 4 | type: integer 5 | example: 212324 6 | -------------------------------------------------------------------------------- /api_src/components/properties/newEpisodes60days.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Podcast feeds with a new episode containing a released in the last 60 days. 4 | type: integer 5 | example: 3710750 6 | -------------------------------------------------------------------------------- /api_src/components/properties/newEpisodes7days.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Podcast feeds with a new episode containing a released in the last 7 days. 4 | type: integer 5 | example: 442061 6 | -------------------------------------------------------------------------------- /api_src/components/properties/newEpisodes90days.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Podcast feeds with a new episode containing a released in the last 90 days. 4 | type: integer 5 | example: 5498580 6 | -------------------------------------------------------------------------------- /api_src/components/parameters/q_person.yaml: -------------------------------------------------------------------------------- 1 | name: q 2 | in: query 3 | # language=Markdown 4 | description: | 5 | Person search for 6 | required: true 7 | schema: 8 | type: string 9 | example: "adam curry" 10 | -------------------------------------------------------------------------------- /api_src/components/properties/enclosureLength.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The length of the item specified by the `enclosureUrl` in bytes 4 | type: integer 5 | format: bytes 6 | example: 26385472 7 | -------------------------------------------------------------------------------- /api_src/components/properties/lastCrawlTime.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The last time we attempted to pull this feed from its url. 4 | type: integer 5 | format: Unix Epoch 6 | example: 1613394034 7 | -------------------------------------------------------------------------------- /api_src/components/properties/nextSince.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Value to pass as `since` parameter to get next batch of data 4 | type: integer 5 | format: Unix Epoch 6 | example: 1613805249 7 | -------------------------------------------------------------------------------- /api_src/components/properties/query_id.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Object containing the input query data 4 | type: object 5 | properties: 6 | id: 7 | $ref: '../properties/id_query.yaml' 8 | -------------------------------------------------------------------------------- /api_src/components/properties/query_url.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Object containing the input query data 4 | type: object 5 | properties: 6 | url: 7 | $ref: '../properties/url_query.yaml' 8 | -------------------------------------------------------------------------------- /api_src/components/properties/since.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Value of `since` parameter passed to request. 4 | type: integer 5 | nullable: true 6 | format: Unix Epoch 7 | example: 1613805249 8 | -------------------------------------------------------------------------------- /api_src/components/responses/401.yaml: -------------------------------------------------------------------------------- 1 | description: Not authenticated 2 | content: 3 | application/json: 4 | schema: 5 | type: string 6 | example: "Authorization header value either not set or blank." 7 | -------------------------------------------------------------------------------- /api_src/components/parameters/q.yaml: -------------------------------------------------------------------------------- 1 | name: q 2 | in: query 3 | # language=Markdown 4 | description: | 5 | Terms to search for 6 | required: true 7 | schema: 8 | type: string 9 | example: "batman university" 10 | -------------------------------------------------------------------------------- /api_src/components/parameters/since.yaml: -------------------------------------------------------------------------------- 1 | name: since 2 | in: query 3 | # language=Markdown 4 | description: | 5 | Return items since the specified epoch timestamp. 6 | schema: 7 | type: integer 8 | example: 1612125785 9 | -------------------------------------------------------------------------------- /api_src/components/properties/contentType.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The Content-Type header from the last time we pulled this feed from its url. 4 | type: string 5 | example: "application/rss+xml" 6 | -------------------------------------------------------------------------------- /api_src/components/properties/itunesId_feed.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The iTunes ID of this feed if there is one, and we know what it is. 4 | type: integer 5 | nullable: true 6 | example: 1441923632 7 | -------------------------------------------------------------------------------- /api_src/components/properties/lastParseTime.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The last time we tried to parse the downloaded feed content. 4 | type: integer 5 | format: Unix Epoch 6 | example: 1613394045 7 | -------------------------------------------------------------------------------- /api_src/components/properties/link_feed.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The channel-level link in the feed 4 | type: string 5 | format: URL 6 | example: "https://www.theincomparable.com/batmanuniversity/" 7 | -------------------------------------------------------------------------------- /api_src/components/properties/oldestItemPublishTime.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The date and time the oldest episode in the feed/index 4 | type: integer 5 | format: Unix Epoch 6 | example: 1546399813 7 | -------------------------------------------------------------------------------- /api_src/components/parameters/feedid.yaml: -------------------------------------------------------------------------------- 1 | name: feedid 2 | in: query 3 | # language=Markdown 4 | description: | 5 | The PodcastIndex Feed ID 6 | required: false 7 | schema: 8 | type: string 9 | example: "920666" 10 | -------------------------------------------------------------------------------- /api_src/components/parameters/start_at.yaml: -------------------------------------------------------------------------------- 1 | name: start_at 2 | in: query 3 | # language=Markdown 4 | description: | 5 | Feed ID to start at for request 6 | schema: 7 | type: integer 8 | minimum: 1 9 | example: 1 10 | -------------------------------------------------------------------------------- /api_src/components/parameters/term_itunes.yaml: -------------------------------------------------------------------------------- 1 | name: term 2 | in: query 3 | # language=Markdown 4 | description: | 5 | The term to search for 6 | required: true 7 | schema: 8 | type: string 9 | example: "batman" 10 | -------------------------------------------------------------------------------- /api_src/components/properties/feedImageUrlHash.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | A CRC32 hash of the `feedImage` URL with the protocol (`http://`, `https://`) removed. 4 | type: integer 5 | example: 1639321931 6 | -------------------------------------------------------------------------------- /api_src/components/properties/inPollingQueue.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Indicates if feed is currently scheduled to be polled/checked for new episodes. 4 | type: integer 5 | nullable: true 6 | example: 1 7 | -------------------------------------------------------------------------------- /api_src/components/properties/query_guid_id.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Object containing the input query data 4 | type: object 5 | properties: 6 | id: 7 | $ref: '../properties/id_query_guid.yaml' 8 | -------------------------------------------------------------------------------- /api_src/components/properties/soundbites.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Soundbites for episode. May not be reported. 4 | type: array 5 | nullable: true 6 | items: 7 | $ref: '../properties/soundbite.yaml' 8 | -------------------------------------------------------------------------------- /api_src/components/properties/startTime.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The time where the soundbite begins in the item specified by the `enclosureUrl` 4 | type: integer 5 | format: seconds 6 | example: 1123 7 | -------------------------------------------------------------------------------- /api_src/components/properties/status_feed.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Status of feed after being added to index 4 | type: string 5 | enum: 6 | - "unconfirmed" 7 | - "confirmed" 8 | example: "confirmed" 9 | -------------------------------------------------------------------------------- /api_src/components/properties/type.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Type of source feed where: 4 | 5 | - 0: RSS 6 | - 1: Atom 7 | type: integer 8 | enum: 9 | - 0 10 | - 1 11 | example: 0 12 | -------------------------------------------------------------------------------- /api_src/components/properties/type_v4v.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Payment type 4 | type: string 5 | enum: 6 | - "lightning" 7 | - "hive" 8 | - "webmonetization" 9 | example: "lightning" 10 | -------------------------------------------------------------------------------- /api_src/components/securitySchemes/API-Key.yaml: -------------------------------------------------------------------------------- 1 | type: apiKey 2 | in: header 3 | name: X-Auth-Key 4 | # language=Markdown 5 | description: | 6 | Your API key string 7 | 8 | 9 | *Example*: `UXKCGDSYGUUEVQJSYDZH` 10 | -------------------------------------------------------------------------------- /api_src/components/parameters/id_feed_podcast_pi.yaml: -------------------------------------------------------------------------------- 1 | name: id 2 | in: query 3 | # language=Markdown 4 | description: | 5 | The PodcastIndex Feed ID 6 | required: true 7 | schema: 8 | type: integer 9 | example: 75075 10 | -------------------------------------------------------------------------------- /api_src/components/properties/accountId_socialInteract.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The account id (on the commenting platform) of the account that created this root post. 4 | type: string 5 | example: "@dave" 6 | -------------------------------------------------------------------------------- /api_src/components/properties/imageUrlHash.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | A CRC32 hash of the `image` URL with the protocol (`http://`, `https://`) removed. 64bit integer. 4 | type: integer 5 | example: 3969216649 6 | -------------------------------------------------------------------------------- /api_src/components/properties/query_podcastguid.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The value of the `podcastguid` argument passed to the request. 4 | type: string 5 | example: "917393e3-1b1e-5cef-ace4-edaa54e1f810" 6 | -------------------------------------------------------------------------------- /api_src/components/properties/url_query.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Value passed to request in the `url` field 4 | type: string 5 | format: URL 6 | example: "https://feeds.theincomparable.com/batmanuniversity" 7 | -------------------------------------------------------------------------------- /api_src/components/properties/valueCreatedOn.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The time this feed's `value` data added. Will be 0 if no `value` data. 4 | type: integer 5 | format: Unix Epoch 6 | example: 1598369047 7 | -------------------------------------------------------------------------------- /api_src/components/properties/view_url.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The URL for viewing the feed on the Apple website. 4 | type: string 5 | example: "https://podcasts.apple.com/us/podcast/*/id1441923632?uo=4" 6 | -------------------------------------------------------------------------------- /api_src/components/properties/address_destination.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Address of node to receive payment 4 | type: string 5 | example: "03ae9f91a0cb8ff43840e3c322c4c61f019d8c1c3cea15a25cfc425ac605e61a4a" 6 | -------------------------------------------------------------------------------- /api_src/components/properties/enclosureUrl.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | URL/link to the episode file 4 | type: string 5 | format: URL 6 | example: "https://www.theincomparable.com/podcast/batmanuniversity302.mp3" 7 | -------------------------------------------------------------------------------- /api_src/components/properties/fee_destination.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Indicates if destination is included due to a fee being charged. May not be reported. 4 | type: boolean 5 | nullable: true 6 | example: true 7 | -------------------------------------------------------------------------------- /api_src/components/properties/transcripts.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | List of transcripts for the episode. May not be reported. 4 | type: array 5 | nullable: true 6 | items: 7 | $ref: '../schemas/transcript.yaml' 8 | -------------------------------------------------------------------------------- /api_src/components/properties/url_socialInteract.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The uri/url of the root post comment 4 | type: string 5 | format: URL 6 | example: "https://podcastindex.social/@dave/109762601417741559" 7 | -------------------------------------------------------------------------------- /api_src/components/parameters/max.yaml: -------------------------------------------------------------------------------- 1 | name: max 2 | in: query 3 | # language=Markdown 4 | description: | 5 | Maximum number of results to return. 6 | schema: 7 | type: integer 8 | minimum: 1 9 | maximum: 1000 10 | example: 10 11 | -------------------------------------------------------------------------------- /api_src/components/properties/destinations_v4v.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | List of destinations where "Value for Value" payments should be sent. 4 | type: array 5 | items: 6 | $ref: '../schemas/destination_v4v.yaml' 7 | -------------------------------------------------------------------------------- /api_src/components/properties/link_episode.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The item-level link in the feed for the episode 4 | type: string 5 | format: URL 6 | example: "https://www.theincomparable.com/batmanuniversity/19" 7 | -------------------------------------------------------------------------------- /api_src/components/properties/suggested_v4v.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Suggested amount per second of playback to send. Unit is specific to the `type`. 4 | type: string 5 | nullable: true 6 | example: "0.00000020000" 7 | -------------------------------------------------------------------------------- /api_src/components/parameters/feedurl.yaml: -------------------------------------------------------------------------------- 1 | name: feedurl 2 | in: query 3 | # language=Markdown 4 | description: | 5 | The Feed URL 6 | required: false 7 | schema: 8 | type: string 9 | example: "http://mp3s.nashownotes.com/pc20rss.xml" 10 | -------------------------------------------------------------------------------- /api_src/components/parameters/id_episode_pi.yaml: -------------------------------------------------------------------------------- 1 | name: id 2 | in: query 3 | # language=Markdown 4 | description: | 5 | The PodcastIndex episode ID to search for. 6 | required: true 7 | schema: 8 | type: integer 9 | example: 16795089 10 | -------------------------------------------------------------------------------- /api_src/components/properties/duplicateOf.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The internal PodcastIndex.org Feed ID this feed duplicates. May be null except in `podcasts/dead`. 4 | type: integer 5 | nullable: true 6 | example: 75075 7 | -------------------------------------------------------------------------------- /api_src/components/properties/title_feed_censored.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The name of the feed. 4 | 5 | 6 | Note: Apple censors the name but PodcastIndex does not. 7 | type: string 8 | example: "Batman University" 9 | -------------------------------------------------------------------------------- /api_src/components/parameters/id_feed_episode_pi_single.yaml: -------------------------------------------------------------------------------- 1 | name: id 2 | in: query 3 | # language=Markdown 4 | description: | 5 | The PodcastIndex Feed ID to search for. 6 | required: true 7 | schema: 8 | type: integer 9 | example: 75075 10 | -------------------------------------------------------------------------------- /api_src/components/parameters/max_5000.yaml: -------------------------------------------------------------------------------- 1 | name: max 2 | in: query 3 | # language=Markdown 4 | description: | 5 | Maximum number of results to return. 6 | schema: 7 | type: integer 8 | minimum: 1 9 | maximum: 5000 10 | example: 200 11 | -------------------------------------------------------------------------------- /api_src/components/properties/id_guid_query.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The Podcast Index feed ID for the feed specified by the `guid` field passed to the request 4 | type: string 5 | example: "9b024349-ccf0-5f69-a609-6b82873eab3c" 6 | -------------------------------------------------------------------------------- /api_src/components/properties/nextStartAt.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Feed ID to pass to next `start_at` to get next batch of feeds 4 | 5 | 6 | Only returned when `start_at` passed to request 7 | type: integer 8 | example: 322043 9 | -------------------------------------------------------------------------------- /api_src/components/properties/originalUrl.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The URL of the feed, before it changed to the current `url` value. 4 | type: string 5 | format: URL 6 | example: "https://feeds.theincomparable.com/batmanuniversity" 7 | -------------------------------------------------------------------------------- /api_src/components/properties/author.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The channel-level author element. 4 | 5 | 6 | Usually iTunes specific, but could be from another namespace if not present. 7 | type: string 8 | example: "Tony Sindelar" 9 | -------------------------------------------------------------------------------- /api_src/components/properties/episodeType.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The type of episode. May be null for `liveItem`. 4 | type: string 5 | nullable: true 6 | enum: 7 | - full 8 | - trailer 9 | - bonus 10 | example: "full" 11 | -------------------------------------------------------------------------------- /api_src/components/properties/feedurl_query.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Value passed to request in the `feedurl` parameter. If no `feedurl` passed, value will be null. 4 | type: string 5 | example: "http://mp3s.nashownotes.com/pc20rss.xml" 6 | -------------------------------------------------------------------------------- /api_src/components/properties/priority_socialInteract.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | When multiple socialInteract tags are present, this integer gives order of priority. A lower number means higher priority. 4 | type: integer 5 | example: 0 6 | -------------------------------------------------------------------------------- /api_src/components/parameters/entity.yaml: -------------------------------------------------------------------------------- 1 | name: entity 2 | in: query 3 | # language=Markdown 4 | description: | 5 | The iTunes entity type to look in 6 | required: true 7 | schema: 8 | type: string 9 | enum: 10 | - "podcast" 11 | example: "podcast" 12 | -------------------------------------------------------------------------------- /api_src/components/parameters/max_random.yaml: -------------------------------------------------------------------------------- 1 | name: max 2 | in: query 3 | # language=Markdown 4 | description: | 5 | Maximum number of results to return. 6 | schema: 7 | type: integer 8 | default: 1 9 | minimum: 1 10 | maximum: 1000 11 | example: 2 12 | -------------------------------------------------------------------------------- /api_src/components/properties/duration.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The estimated length of the item specified by the `enclosureUrl` in seconds. Will be null for `liveItem`. 4 | type: integer 5 | nullable: true 6 | format: seconds 7 | example: 54 8 | -------------------------------------------------------------------------------- /api_src/components/properties/image_feed.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The channel-level image element. 4 | type: string 5 | format: URL 6 | example: "https://www.theincomparable.com/imgs/logos/logo-batmanuniversity-3x.jpg?cache-buster=2019-06-11" 7 | -------------------------------------------------------------------------------- /api_src/components/parameters/episodeguid.yaml: -------------------------------------------------------------------------------- 1 | name: episodeguid 2 | in: query 3 | # language=Markdown 4 | description: | 5 | The guid specified by the `` in the episode ``. 6 | required: true 7 | schema: 8 | type: string 9 | example: "PC20143" 10 | -------------------------------------------------------------------------------- /api_src/components/properties/episodesWithChapters.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Number of episodes with [`podcast:chapters`](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#chapters) 4 | type: integer 5 | example: 652781 6 | -------------------------------------------------------------------------------- /api_src/components/properties/ownerName.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The channel-level owner:name element. 4 | 5 | 6 | Usually iTunes specific, but could be from another namespace if not present. 7 | type: string 8 | example: "The Incomparable" 9 | -------------------------------------------------------------------------------- /api_src/components/parameters/max_recent_episodes.yaml: -------------------------------------------------------------------------------- 1 | name: max 2 | in: query 3 | # language=Markdown 4 | description: | 5 | Maximum number of results to return. 6 | schema: 7 | type: integer 8 | default: 10 9 | minimum: 1 10 | maximum: 1000 11 | example: 7 12 | -------------------------------------------------------------------------------- /api_src/components/parameters/max_recent_feeds.yaml: -------------------------------------------------------------------------------- 1 | name: max 2 | in: query 3 | # language=Markdown 4 | description: | 5 | Maximum number of results to return. 6 | schema: 7 | type: integer 8 | default: 40 9 | minimum: 1 10 | maximum: 1000 11 | example: 20 12 | -------------------------------------------------------------------------------- /api_src/components/parameters/url.yaml: -------------------------------------------------------------------------------- 1 | name: url 2 | in: query 3 | # language=Markdown 4 | description: | 5 | Podcast feed URL 6 | required: true 7 | allowReserved: true 8 | schema: 9 | type: string 10 | example: "https://feeds.theincomparable.com/batmanuniversity" 11 | -------------------------------------------------------------------------------- /api_src/components/properties/explicit_episode.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Is feed or episode marked as explicit 4 | 5 | - 0: not marked explicit 6 | - 1: marked explicit 7 | type: integer 8 | enum: 9 | - 0 10 | - 1 11 | example: 0 12 | -------------------------------------------------------------------------------- /api_src/components/properties/image_episode.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The item-level image for the episode 4 | type: string 5 | format: URL 6 | example: "https://www.theincomparable.com/imgs/logos/logo-batmanuniversity-3x.jpg?cache-buster=2019-06-11" 7 | -------------------------------------------------------------------------------- /api_src/components/parameters/max_recent_soundbites.yaml: -------------------------------------------------------------------------------- 1 | name: max 2 | in: query 3 | # language=Markdown 4 | description: | 5 | Maximum number of soundbites to return. 6 | schema: 7 | type: integer 8 | default: 60 9 | minimum: 1 10 | maximum: 1000 11 | example: 20 12 | -------------------------------------------------------------------------------- /api_src/components/parameters/similar.yaml: -------------------------------------------------------------------------------- 1 | name: similar 2 | in: query 3 | # language=Markdown 4 | description: | 5 | If present, include similar matches in search response. For `search/byterm`, prioritizes title matches. 6 | schema: 7 | type: boolean 8 | allowEmptyValue: true 9 | -------------------------------------------------------------------------------- /api_src/components/properties/accountUrl_socialInteract.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The public url (on the commenting platform) of the account that created this root post. 4 | type: string 5 | format: URL 6 | example: "https://podcastindex.social/users/dave" 7 | -------------------------------------------------------------------------------- /api_src/components/schemas/podcasts_batch_byguid.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | JSON array of feed GUIDs 4 | type: array 5 | items: 6 | type: string 7 | example: 8 | - 917393e3-1b1e-5cef-ace4-edaa54e1f810 9 | - c73b1a23-1c28-5edb-94c3-10d1745d0877 10 | -------------------------------------------------------------------------------- /api_src/components/securitySchemes/User-Agent.yaml: -------------------------------------------------------------------------------- 1 | type: apiKey 2 | in: header 3 | name: User-Agent 4 | # language=Markdown 5 | description: | 6 | Please identify the system/product you are using to make this request. 7 | 8 | 9 | *Example*: `SuperPodcastPlayer/1.3` 10 | -------------------------------------------------------------------------------- /api_src/components/properties/crawlErrors.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The number of errors we’ve encountered trying to pull a copy of the feed. 4 | Errors are things like a 500 or 404 response, a server timeout, bad encoding, etc. 5 | type: integer 6 | example: 0 7 | -------------------------------------------------------------------------------- /api_src/components/properties/episodesWithTranscripts.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Episodes with a 4 | [`podcast:transcript`](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#transcript) 5 | tag. 6 | type: integer 7 | example: 3198597 8 | -------------------------------------------------------------------------------- /api_src/components/properties/language.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The channel-level language specification of the feed. 4 | 5 | Languages accord with the [RSS Language Spec](https://www.rssboard.org/rss-language-codes). 6 | type: string 7 | example: "en-us" 8 | -------------------------------------------------------------------------------- /api_src/components/properties/lastGoodHttpStatusTime.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Timestamp of the last time we got a "good", meaning non-4xx/non-5xx, status code when pulling this feed from its url. 4 | type: integer 5 | format: Unix Epoch 6 | example: 1613394034 7 | -------------------------------------------------------------------------------- /api_src/components/parameters/max_recent_data.yaml: -------------------------------------------------------------------------------- 1 | name: max 2 | in: query 3 | # language=Markdown 4 | description: | 5 | Maximum number of results to return (includes both `feeds` and `items`). 6 | schema: 7 | type: integer 8 | default: 1000 9 | minimum: 1 10 | example: 200 11 | -------------------------------------------------------------------------------- /api_src/components/parameters/id_feed_podcast_pi_pubnotify.yaml: -------------------------------------------------------------------------------- 1 | name: id 2 | in: query 3 | # language=Markdown 4 | description: | 5 | The PodcastIndex Feed ID 6 | 7 | 8 | The `id` or the `url` is required. 9 | required: false 10 | schema: 11 | type: integer 12 | example: 75075 13 | -------------------------------------------------------------------------------- /api_src/components/parameters/pretty.yaml: -------------------------------------------------------------------------------- 1 | name: pretty 2 | in: query 3 | # language=Markdown 4 | description: | 5 | If present, makes the output “pretty” to help with debugging. 6 | 7 | 8 | Parameter shall not have a value 9 | schema: 10 | type: boolean 11 | allowEmptyValue: true 12 | -------------------------------------------------------------------------------- /api_src/components/properties/query_guid.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Object containing the input query data 4 | type: object 5 | properties: 6 | guid: 7 | $ref: '../properties/podcastGuid_query.yaml' 8 | id: 9 | $ref: '../properties/id_guid_query.yaml' 10 | -------------------------------------------------------------------------------- /api_src/components/properties/feedsWithChapters.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Podcast feeds with a 4 | [`podcast:chapters`](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#chapters) 5 | tag in at least 1 episode. 6 | type: integer 7 | example: 35582 8 | -------------------------------------------------------------------------------- /api_src/components/properties/feedsWithFundingTag.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Podcast feeds with a 4 | [`podcast:funding`](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#funding) 5 | tag in at least 1 episode. 6 | type: integer 7 | example: 57582 8 | -------------------------------------------------------------------------------- /api_src/components/properties/feedsWithMediumMusic.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Podcast feeds with a 4 | [`podcast:medium`](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#medium) 5 | tag with a value of `music`. 6 | type: integer 7 | example: 3700 8 | -------------------------------------------------------------------------------- /api_src/components/properties/feedsWithMediumVideo.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Podcast feeds with a 4 | [`podcast:medium`](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#medium) 5 | tag with a value of `video`. 6 | type: integer 7 | example: 1288 8 | -------------------------------------------------------------------------------- /api_src/components/properties/feedsWithValueBlocks.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Podcast feeds with a 4 | [`podcast:value`](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#value) 5 | tag in at least 1 episode. 6 | type: integer 7 | example: 21916 8 | -------------------------------------------------------------------------------- /api_src/components/properties/feedsWithTranscripts.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Podcast feeds with a 4 | [`podcast:transcript`](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#transcript) 5 | tag in at least 1 episode. 6 | type: integer 7 | example: 61385 8 | -------------------------------------------------------------------------------- /api_src/components/schemas/feed_dead.yaml: -------------------------------------------------------------------------------- 1 | type: object 2 | properties: 3 | id: 4 | $ref: '../properties/id_feed.yaml' 5 | title: 6 | $ref: '../properties/title_feed.yaml' 7 | url: 8 | $ref: '../properties/url_feed.yaml' 9 | duplicateOf: 10 | $ref: '../properties/duplicateOf.yaml' 11 | -------------------------------------------------------------------------------- /api_src/components/properties/datePublishedPretty.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The date and time the episode was published formatted as a human readable string. 4 | 5 | 6 | Note: uses the PodcastIndex server local time to do conversion. 7 | type: string 8 | example: "January 01, 2019 9:30pm" 9 | -------------------------------------------------------------------------------- /api_src/components/properties/message.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Description of `url` 4 | 5 | 6 | See the [podcast namespace spec](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#funding) for more information. 7 | type: string 8 | example: "Pragmatic on Patreon" 9 | -------------------------------------------------------------------------------- /api_src/components/properties/name_person.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The name of the person. 4 | 5 | 6 | See the [podcast namespace spec](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#person) for more information. 7 | type: string 8 | example: "Dave Jones" 9 | -------------------------------------------------------------------------------- /api_src/components/parameters/newest.yaml: -------------------------------------------------------------------------------- 1 | name: newest 2 | in: query 3 | # language=Markdown 4 | description: | 5 | If present, returns only the most recent (newest) episode for each specified feed id. 6 | 7 | 8 | Parameter shall not have a value 9 | schema: 10 | type: boolean 11 | allowEmptyValue: true 12 | -------------------------------------------------------------------------------- /api_src/components/parameters/enclosure.yaml: -------------------------------------------------------------------------------- 1 | name: enclosure 2 | in: query 3 | # language=Markdown 4 | description: | 5 | The URL for the episode enclosure to get the information for. 6 | required: false 7 | schema: 8 | type: string 9 | example: "https://op3.dev/e/mp3s.nashownotes.com/NA-1551-2023-04-30-Final.mp3" 10 | -------------------------------------------------------------------------------- /api_src/components/properties/query_byepisodeguid.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Object containing the input query data 4 | type: object 5 | properties: 6 | podcastguid: 7 | $ref: '../properties/query_podcastguid.yaml' 8 | episodeguid: 9 | $ref: '../properties/query_episodeguid.yaml' 10 | -------------------------------------------------------------------------------- /api_src/components/parameters/guid_episode.yaml: -------------------------------------------------------------------------------- 1 | name: guid 2 | in: query 3 | # language=Markdown 4 | description: | 5 | The guid value for the episode to retrieve. 6 | 7 | 8 | This value is the value specified in the feed's `` field. 9 | required: true 10 | schema: 11 | type: string 12 | example: "PC2084" 13 | -------------------------------------------------------------------------------- /api_src/components/properties/chaptersUrl.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Link to the JSON file containing the episode chapters 4 | type: string 5 | nullable: true 6 | format: URL 7 | example: "https://studio.hypercatcher.com/chapters/podcast/http:feed.nashownotes.comrss.xml/episode/http:1322.noagendanotes.com" 8 | -------------------------------------------------------------------------------- /api_src/components/responses/add_byitunesid.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | description: 10 | $ref: '../properties/description_response.yaml' 11 | -------------------------------------------------------------------------------- /api_src/components/responses/hub_pubnotify.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | description: 10 | $ref: '../properties/description_response.yaml' 11 | -------------------------------------------------------------------------------- /api_src/components/properties/dead.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | At some point, we give up trying to process a feed and mark it as dead. 4 | This is usually after 1000 errors without a successful pull/parse cycle. 5 | Once the feed is marked dead, we only check it once per month. 6 | type: integer 7 | example: 0 8 | -------------------------------------------------------------------------------- /api_src/components/properties/lastUpdateTime.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The channel-level pubDate for the feed, if it’s sane. 4 | 5 | If not, this is a heuristic value, arrived at by analyzing other parts of the feed, like item-level pubDates. 6 | type: integer 7 | format: Unix Epoch 8 | example: 1613394044 9 | -------------------------------------------------------------------------------- /api_src/components/parameters/before.yaml: -------------------------------------------------------------------------------- 1 | name: before 2 | in: query 3 | # language=Markdown 4 | description: | 5 | If you pass a PodcastIndex Episode ID, you will get recent episodes before that ID, allowing you to walk back 6 | through the episode history sequentially. 7 | schema: 8 | type: integer 9 | example: 1721351091 10 | -------------------------------------------------------------------------------- /api_src/components/parameters/url_pubnotify.yaml: -------------------------------------------------------------------------------- 1 | name: url 2 | in: query 3 | # language=Markdown 4 | description: | 5 | Podcast feed URL 6 | 7 | 8 | The `id` or the `url` is required. 9 | required: false 10 | allowReserved: true 11 | schema: 12 | type: string 13 | example: "https://feeds.theincomparable.com/batmanuniversity" 14 | -------------------------------------------------------------------------------- /api_src/components/properties/artwork.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The seemingly best artwork we can find for the feed. 4 | 5 | Might be the same as `image` in most instances. 6 | type: string 7 | format: URL 8 | example: "https://www.theincomparable.com/imgs/logos/logo-batmanuniversity-3x.jpg?cache-buster=2019-06-11" 9 | -------------------------------------------------------------------------------- /api_src/components/properties/data.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Object containing the recent data 4 | type: object 5 | properties: 6 | position: 7 | $ref: '../properties/position.yaml' 8 | feeds: 9 | $ref: '../properties/feeds_data.yaml' 10 | items: 11 | $ref: '../properties/items_data.yaml' 12 | -------------------------------------------------------------------------------- /api_src/components/properties/paidFeedsWithNewEpisodes3days.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Podcast feeds with a new episode containing a 4 | [`podcast:value`](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#value) 5 | block released in the last 3 days. 6 | type: integer 7 | example: 77638 8 | -------------------------------------------------------------------------------- /api_src/components/properties/paidFeedsWithNewEpisodes60days.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Podcast feeds with a new episode containing a 4 | [`podcast:value`](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#value) 5 | block released in the last 60 days. 6 | type: integer 7 | example: 77632 8 | -------------------------------------------------------------------------------- /api_src/components/properties/paidFeedsWithNewEpisodes7days.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Podcast feeds with a new episode containing a 4 | [`podcast:value`](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#value) 5 | block released in the last 7 days. 6 | type: integer 7 | example: 140275 8 | -------------------------------------------------------------------------------- /api_src/components/properties/query_podcast_id_multiple.yaml: -------------------------------------------------------------------------------- 1 | title: Multiple IDs 2 | # language=Markdown 3 | description: | 4 | IDs passed to request 5 | type: array 6 | items: 7 | # language=Markdown 8 | description: | 9 | Podcast ID passed to request 10 | type: string 11 | example: 12 | - "75075" 13 | - "920666" 14 | -------------------------------------------------------------------------------- /api_src/components/parameters/desc.yaml: -------------------------------------------------------------------------------- 1 | name: desc 2 | in: query 3 | # language=Markdown 4 | description: | 5 | If present, display feeds in descending order. 6 | 7 | 8 | Only applicable when using `feedid` parameter. 9 | 10 | 11 | Parameter shall not have a value 12 | schema: 13 | type: boolean 14 | allowEmptyValue: true 15 | -------------------------------------------------------------------------------- /api_src/components/properties/enclosureUrl_soundbite.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | URL/link to the soundbite file 4 | type: string 5 | format: URL 6 | example: "https://pdcn.co/e/www.buzzsprout.com/1074223/7921324-episode-30-the-teacher-as-top-ten-math-routines-with-dr-nicki-newton-and-ann-elise-record.mp3?blob_id=35415988" 7 | -------------------------------------------------------------------------------- /api_src/components/properties/paidFeedsWithNewEpisodes10days.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Podcast feeds with a new episode containing a 4 | [`podcast:value`](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#value) 5 | block released in the last 10 days. 6 | type: integer 7 | example: 165789 8 | -------------------------------------------------------------------------------- /api_src/components/properties/paidFeedsWithNewEpisodes14days.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Podcast feeds with a new episode containing a 4 | [`podcast:value`](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#value) 5 | block released in the last 14 days. 6 | type: integer 7 | example: 186602 8 | -------------------------------------------------------------------------------- /api_src/components/properties/paidFeedsWithNewEpisodes30days.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Podcast feeds with a new episode containing a 4 | [`podcast:value`](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#value) 5 | block released in the last 30 days. 6 | type: integer 7 | example: 237389 8 | -------------------------------------------------------------------------------- /api_src/components/properties/paidFeedsWithNewEpisodes90days.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Podcast feeds with a new episode containing a 4 | [`podcast:value`](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#value) 5 | block released in the last 90 days. 6 | type: integer 7 | example: 335380 8 | -------------------------------------------------------------------------------- /api_src/components/responses/add_batch_byfeedurl_400.yaml: -------------------------------------------------------------------------------- 1 | description: Missing data 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | description: 10 | $ref: '../properties/description_response.yaml' 11 | -------------------------------------------------------------------------------- /api_src/components/responses/itunes_replacement.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | resultCount: 8 | $ref: '../properties/resultCount.yaml' 9 | results: 10 | $ref: '../properties/itunes_replacement_results.yaml' 11 | -------------------------------------------------------------------------------- /docs/dark_mode.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /api_src/components/parameters/clean.yaml: -------------------------------------------------------------------------------- 1 | name: clean 2 | in: query 3 | # language=Markdown 4 | description: | 5 | If present, only non-explicit feeds will be returned. 6 | Meaning, feeds where the `itunes:explicit` flag is set to `false`. 7 | 8 | 9 | Parameter shall not have a value 10 | schema: 11 | type: boolean 12 | allowEmptyValue: true 13 | -------------------------------------------------------------------------------- /api_src/components/properties/priority.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | How often the feed is checked for updates and new episodes 4 | 5 | A value of -1 means never check. A value of 5 means check the most. 6 | type: integer 7 | enum: 8 | - -1 9 | - 0 10 | - 1 11 | - 2 12 | - 3 13 | - 4 14 | - 5 15 | example: 5 16 | -------------------------------------------------------------------------------- /api_src/components/properties/transcriptUrl.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Link to the file containing the episode transcript 4 | 5 | 6 | Note: in most use cases, the `transcripts` value should be used instead 7 | type: string 8 | nullable: true 9 | format: URL 10 | example: "https://mp3s.nashownotes.com/NA-1322-Captions.srt" 11 | -------------------------------------------------------------------------------- /api_src/components/properties/medium_feed.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The value of the `podcast:medium` attribute for the feed. 4 | 5 | 6 | See the [medium](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#medium) description in the Podcast Namespace for more information. 7 | type: string 8 | example: "music" 9 | -------------------------------------------------------------------------------- /api_src/components/parameters/feedid_newfeeds.yaml: -------------------------------------------------------------------------------- 1 | name: feedid 2 | in: query 3 | # language=Markdown 4 | description: | 5 | The PodcastIndex Feed ID to start from (or go to if `desc` specified). 6 | 7 | 8 | If `since` parameter also specified, value of `since` is ignored. 9 | required: false 10 | schema: 11 | type: string 12 | example: "2653471" 13 | -------------------------------------------------------------------------------- /api_src/components/properties/lastHttpStatus.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The last http status code we got when pulling this feed from its url. 4 | 5 | 6 | You will see some made up status codes sometimes. These are what we use to track state within the feed puller. 7 | These all start with 9xx. 8 | type: integer 9 | example: 200 10 | -------------------------------------------------------------------------------- /api_src/components/properties/categories.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | An array of categories, where the index is the Category ID and the value is the Category Name. 4 | 5 | 6 | All Category numbers and names are returned by the `categories/list` endpoint. 7 | type: object 8 | example: 9 | 104: "Tv" 10 | 105: "Film" 11 | 107: "Reviews" 12 | -------------------------------------------------------------------------------- /api_src/components/parameters/fulltext.yaml: -------------------------------------------------------------------------------- 1 | name: fulltext 2 | in: query 3 | # language=Markdown 4 | description: | 5 | If present, return the full text value of any text fields (ex: `description`). 6 | If not provided, field value is truncated to 100 words. 7 | 8 | 9 | Parameter shall not have a value 10 | schema: 11 | type: boolean 12 | allowEmptyValue: true 13 | -------------------------------------------------------------------------------- /api_src/components/parameters/val.yaml: -------------------------------------------------------------------------------- 1 | name: val 2 | in: query 3 | # language=Markdown 4 | description: | 5 | Only returns feeds with a `value` block of the specified type. Use `any` to return feeds with any `value` block. 6 | schema: 7 | type: string 8 | enum: 9 | - "any" 10 | - "lightning" 11 | - "hive" 12 | - "webmonetization" 13 | example: "" 14 | -------------------------------------------------------------------------------- /api_src/components/responses/static_dead_feeds.yaml: -------------------------------------------------------------------------------- 1 | # language=markdown 2 | description: | 3 | Feed Ids in CSV file format. 4 | 5 | 6 | Each row is the feed id. No Header. 7 | 8 | 9 | Example: 10 | 11 | 12 | ```csv 13 | 3, 14 | 38, 15 | 43, 16 | 45, 17 | 56, 18 | ``` 19 | content: 20 | application/csv: 21 | schema: 22 | type: object 23 | -------------------------------------------------------------------------------- /api_src/components/properties/model_v4v.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Description of the method for providing "Value for Value" payments 4 | type: object 5 | properties: 6 | type: 7 | $ref: '../properties/type_v4v.yaml' 8 | method: 9 | $ref: '../properties/method_v4v.yaml' 10 | suggested: 11 | $ref: '../properties/suggested_v4v.yaml' 12 | -------------------------------------------------------------------------------- /api_src/components/properties/img.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | URL to a picture or avatar of the person. 4 | 5 | 6 | See the [podcast namespace spec](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#person) for more information. 7 | type: string 8 | format: URL 9 | example: "https://engineered.network/img/people/dave-jones.jp" 10 | -------------------------------------------------------------------------------- /api_src/components/properties/url_funding.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | URL to site to fund the podcast 4 | 5 | 6 | See the [podcast namespace spec](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#funding) for more information. 7 | type: string 8 | nullable: true 9 | format: URL 10 | example: "https://patreon.com/johnchidgey" 11 | -------------------------------------------------------------------------------- /api_src/components/parameters/itunesid.yaml: -------------------------------------------------------------------------------- 1 | name: itunesid 2 | in: query 3 | # language=Markdown 4 | description: | 5 | If this parameter is given, and the existing feed has no associated iTunes ID, it will be associated with this ID. 6 | If an existing iTunes ID is already associated with this feed it will **NOT** be changed. 7 | schema: 8 | type: integer 9 | example: 1441923632 10 | -------------------------------------------------------------------------------- /api_src/components/properties/soundbite.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Soundbite for episode. May not be reported. 4 | type: object 5 | nullable: true 6 | properties: 7 | startTime: 8 | $ref: '../properties/startTime.yaml' 9 | duration: 10 | $ref: '../properties/duration_soundbite.yaml' 11 | title: 12 | $ref: '../properties/title_soundbite.yaml' 13 | -------------------------------------------------------------------------------- /api_src/components/parameters/podcast-value.yaml: -------------------------------------------------------------------------------- 1 | name: podcast-value 2 | in: query 3 | # language=Markdown 4 | description: | 5 | Get feeds supporting the [`podcast:value`](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#value) tag. 6 | 7 | 8 | Parameter shall not have a value 9 | schema: 10 | type: boolean 11 | allowEmptyValue: true 12 | required: false 13 | -------------------------------------------------------------------------------- /api_src/components/responses/stats_current.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | stats: 10 | $ref: '../properties/stats.yaml' 11 | description: 12 | $ref: '../properties/description_response.yaml' 13 | -------------------------------------------------------------------------------- /api_src/components/schemas/person.yaml: -------------------------------------------------------------------------------- 1 | type: object 2 | properties: 3 | id: 4 | $ref: '../properties/id_person.yaml' 5 | name: 6 | $ref: '../properties/name_person.yaml' 7 | role: 8 | $ref: '../properties/role.yaml' 9 | group: 10 | $ref: '../properties/group.yaml' 11 | href: 12 | $ref: '../properties/href.yaml' 13 | img: 14 | $ref: '../properties/img.yaml' 15 | -------------------------------------------------------------------------------- /api_src/components/properties/persons.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | List of people with an interest in this episode. May not be reported. 4 | 5 | 6 | See the [podcast namespace spec](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#person) for more information. 7 | type: array 8 | nullable: true 9 | items: 10 | $ref: '../schemas/person.yaml' 11 | -------------------------------------------------------------------------------- /api_src/components/responses/400.yaml: -------------------------------------------------------------------------------- 1 | description: Invalid request 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | description: 10 | $ref: '../properties/description_response.yaml' 11 | example: 12 | status: "false" 13 | description: "Invalid parameters" 14 | -------------------------------------------------------------------------------- /api_src/components/parameters/excludeString.yaml: -------------------------------------------------------------------------------- 1 | name: excludeString 2 | in: query 3 | # language=Markdown 4 | description: | 5 | Any item containing this string will be discarded from the result set. 6 | 7 | 8 | This may, in certain cases, reduce your set size below your `max` value. 9 | 10 | 11 | Matches against the `title` and URL properties. 12 | schema: 13 | type: string 14 | example: "religion" 15 | -------------------------------------------------------------------------------- /api_src/components/properties/artworkUrl.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | A URL for the artwork associated with the returned media type. 4 | 5 | 6 | Note: Apple returns the image sized to value in the field name but the PodcastIndex returns the original image 7 | specified in the feed. 8 | type: string 9 | example: "https://www.theincomparable.com/imgs/logos/logo-batmanuniversity-3x.jpg" 10 | -------------------------------------------------------------------------------- /api_src/components/parameters/id_feed_podcast_itunes.yaml: -------------------------------------------------------------------------------- 1 | name: id 2 | in: query 3 | # language=Markdown 4 | description: | 5 | The iTunes Feed ID to search for 6 | required: true 7 | schema: 8 | type: integer 9 | examples: 10 | id_only: 11 | value: 1441923632 12 | description: iTunes ID without any prefix 13 | prefix: 14 | value: id1441923632 15 | description: iTunes ID with optional "id" prefix 16 | -------------------------------------------------------------------------------- /api_src/components/properties/podcastguid.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The GUID from the `podcast:guid` tag in the feed. This value is a unique, global identifier for the podcast. 4 | 5 | 6 | See the namespace spec for 7 | [guid](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#guid) for details. 8 | type: string 9 | example: "9b024349-ccf0-5f69-a609-6b82873eab3c" 10 | -------------------------------------------------------------------------------- /api_src/components/properties/parseErrors.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The number of errors we’ve encountered trying to parse the feed content. 4 | Errors here are things like not well-formed xml, bad character encoding, etc. 5 | 6 | 7 | We fix many of these types of issues on the fly when parsing. 8 | We only increment the errors count when we can’t fix it. 9 | type: integer 10 | example: 0 11 | -------------------------------------------------------------------------------- /api_src/components/parameters/podcast-valueTimeSplit.yaml: -------------------------------------------------------------------------------- 1 | name: podcast-valueTimeSplit 2 | in: query 3 | # language=Markdown 4 | description: | 5 | Get feeds supporting the [`podcast:valueTimeSplit`](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#value-time-split) tag. 6 | 7 | 8 | Parameter shall not have a value 9 | schema: 10 | type: boolean 11 | allowEmptyValue: true 12 | required: false 13 | -------------------------------------------------------------------------------- /api_src/components/properties/socialInteract.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | List the social interact data found in the podcast feed. May not be reported. 4 | 5 | 6 | See the [podcast namespace spec](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#social-interact) for more information. 7 | type: array 8 | nullable: true 9 | items: 10 | $ref: '../schemas/socialInteract_item.yaml' 11 | -------------------------------------------------------------------------------- /api_src/components/properties/protocol_socialInteract.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The protocol in use for interacting with the comment root post. 4 | 5 | 6 | For the most up-to-date list of options, see https://github.com/Podcastindex-org/podcast-namespace/blob/main/socialprotocols.txt 7 | type: string 8 | enum: 9 | - "disabled" 10 | - "activitypub" 11 | - "twitter" 12 | - "lightning" 13 | example: "activitypub" 14 | -------------------------------------------------------------------------------- /api_src/components/schemas/socialInteract_item.yaml: -------------------------------------------------------------------------------- 1 | type: object 2 | properties: 3 | url: 4 | $ref: '../properties/url_socialInteract.yaml' 5 | protocol: 6 | $ref: '../properties/protocol_socialInteract.yaml' 7 | accountId: 8 | $ref: '../properties/accountId_socialInteract.yaml' 9 | accountUrl: 10 | $ref: '../properties/accountUrl_socialInteract.yaml' 11 | priority: 12 | $ref: '../properties/priority_socialInteract.yaml' 13 | -------------------------------------------------------------------------------- /api_src/components/properties/href.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The url to a relevant resource of information about the person, such as a homepage or third-party profile platform. 4 | 5 | 6 | See the [podcast namespace spec](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#person) for more information. 7 | type: string 8 | format: URL 9 | example: "https://engineered.network/img/people/dave-jones.jp" 10 | -------------------------------------------------------------------------------- /api_src/components/properties/guids.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The `podcastguid` and `episodeguid` values passed to the request. 4 | type: object 5 | additionalProperties: 6 | type: array 7 | items: 8 | type: string 9 | example: 10 | 917393e3-1b1e-5cef-ace4-edaa54e1f810: 11 | - PC20141 12 | - PC20142 13 | - PC20143 14 | c73b1a23-1c28-5edb-94c3-10d1745d0877: 15 | - bdea6759-a7b6-4c0d-9d1e-acca3133f4a9 16 | 17 | -------------------------------------------------------------------------------- /api_src/components/properties/locked.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Tell other podcast platforms whether they are allowed to import this feed. 4 | A value of 1 means that any attempt to import this feed into a new platform should be rejected. 5 | 6 | Contains the value of the feed's channel-level `podcast:locked` tag where: 7 | 8 | - 0: 'no' 9 | - 1: 'yes' 10 | type: integer 11 | enum: 12 | - 0 13 | - 1 14 | example: 0 15 | -------------------------------------------------------------------------------- /api_src/components/responses/podcasts_dead.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | feeds: 10 | $ref: '../properties/feeds_dead.yaml' 11 | count: 12 | $ref: '../properties/count.yaml' 13 | description: 14 | $ref: '../properties/description_response.yaml' 15 | -------------------------------------------------------------------------------- /api_src/components/responses/value_byfeedid.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | query: 10 | $ref: '../properties/query_id.yaml' 11 | value: 12 | $ref: '../properties/value.yaml' 13 | description: 14 | $ref: '../properties/description_response.yaml' 15 | -------------------------------------------------------------------------------- /api_src/components/responses/value_byfeedurl.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | query: 10 | $ref: '../properties/query_url.yaml' 11 | value: 12 | $ref: '../properties/value.yaml' 13 | description: 14 | $ref: '../properties/description_response.yaml' 15 | -------------------------------------------------------------------------------- /api_src/components/responses/add_byfeedurl.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | feedId: 10 | $ref: '../properties/id_feed.yaml' 11 | existed: 12 | $ref: '../properties/existed.yaml' 13 | description: 14 | $ref: '../properties/description_response.yaml' 15 | -------------------------------------------------------------------------------- /api_src/components/securitySchemes/Date.yaml: -------------------------------------------------------------------------------- 1 | type: apiKey 2 | in: header 3 | name: X-Auth-Date 4 | # language=Markdown 5 | description: | 6 | The current UTC unix epoch time as a string. 3 minute window. 7 | 8 | 9 | This value is an integer; round down if needed. The value shall not include a decimal point. 10 | 11 | 12 | Value generated should match the value shown on the website https://www.epochconverter.com/. 13 | 14 | 15 | *Example*: `1613713388` 16 | -------------------------------------------------------------------------------- /api_src/components/properties/newestItemPublishTime.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The time the most recent episode in the feed was published. 4 | 5 | 6 | Note: some endpoints use `newestItemPubdate` while others use `newestItemPublishTime`. 7 | They return the same information. See https://github.com/Podcastindex-org/api/issues/3 to track when the property name is updated. 8 | type: integer 9 | format: Unix Epoch 10 | example: 1546399813 11 | -------------------------------------------------------------------------------- /api_src/components/responses/categories_list.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | feeds: 10 | $ref: '../properties/feeds_categories.yaml' 11 | count: 12 | $ref: '../properties/count.yaml' 13 | description: 14 | $ref: '../properties/description_response.yaml' 15 | -------------------------------------------------------------------------------- /api_src/components/responses/episodes_byid.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | id: 10 | $ref: '../properties/id_episode.yaml' 11 | episode: 12 | $ref: '../properties/episode_object.yaml' 13 | description: 14 | $ref: '../properties/description_response.yaml' 15 | -------------------------------------------------------------------------------- /api_src/components/responses/podcasts_byfeedid.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | query: 10 | $ref: '../properties/query_id.yaml' 11 | feed: 12 | $ref: '../properties/feed_podcast.yaml' 13 | description: 14 | $ref: '../properties/description_response.yaml' 15 | -------------------------------------------------------------------------------- /api_src/components/responses/podcasts_byfeedurl.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | query: 10 | $ref: '../properties/query_url.yaml' 11 | feed: 12 | $ref: '../properties/feed_podcast.yaml' 13 | description: 14 | $ref: '../properties/description_response.yaml' 15 | -------------------------------------------------------------------------------- /api_src/components/responses/podcasts_byguid.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | query: 10 | $ref: '../properties/query_guid.yaml' 11 | feed: 12 | $ref: '../properties/feed_podcast.yaml' 13 | description: 14 | $ref: '../properties/description_response.yaml' 15 | -------------------------------------------------------------------------------- /api_src/components/responses/podcasts_byitunesid.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | query: 10 | $ref: '../properties/query_id.yaml' 11 | feed: 12 | $ref: '../properties/feed_itunes.yaml' 13 | description: 14 | $ref: '../properties/description_response.yaml' 15 | -------------------------------------------------------------------------------- /api_src/components/responses/recent_soundbites.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | items: 10 | $ref: '../properties/items_soundbites.yaml' 11 | count: 12 | $ref: '../properties/count.yaml' 13 | description: 14 | $ref: '../properties/description_response.yaml' 15 | -------------------------------------------------------------------------------- /api_src/components/responses/value_bypodcastguid.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | query: 10 | $ref: '../properties/query_guid_id.yaml' 11 | value: 12 | $ref: '../properties/value.yaml' 13 | description: 14 | $ref: '../properties/description_response.yaml' 15 | -------------------------------------------------------------------------------- /api_src/components/properties/podcastGuid_query.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Value passed to request in the `guid` field 4 | 5 | 6 | The GUID from the `podcast:guid` tag in the feed. This value is a unique, global identifier for the podcast. 7 | See the namespace spec for 8 | [guid](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#guid) for details. 9 | type: string 10 | example: "9b024349-ccf0-5f69-a609-6b82873eab3c" 11 | -------------------------------------------------------------------------------- /api_src/components/parameters/podcastguid_optional.yaml: -------------------------------------------------------------------------------- 1 | name: podcastguid 2 | in: query 3 | # language=Markdown 4 | description: | 5 | The GUID from the `podcast:guid` tag in the feed. This value is a unique, global identifier for the podcast. 6 | 7 | 8 | See the namespace spec for 9 | [guid](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#guid) for details. 10 | schema: 11 | type: string 12 | example: "917393e3-1b1e-5cef-ace4-edaa54e1f810" 13 | -------------------------------------------------------------------------------- /api_src/components/properties/funding.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Information for donation/funding the podcast. May not be reported. 4 | 5 | 6 | See the [podcast namespace spec](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#funding) for more information. 7 | type: object 8 | nullable: true 9 | properties: 10 | url: 11 | $ref: '../properties/url_funding.yaml' 12 | message: 13 | $ref: '../properties/message.yaml' 14 | -------------------------------------------------------------------------------- /api_src/components/parameters/guid_feed_podcast.yaml: -------------------------------------------------------------------------------- 1 | name: guid 2 | in: query 3 | # language=Markdown 4 | description: | 5 | The GUID from the `podcast:guid` tag in the feed. This value is a unique, global identifier for the podcast. 6 | 7 | 8 | See the namespace spec for 9 | [guid](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#guid) for details. 10 | required: true 11 | schema: 12 | type: string 13 | example: "9b024349-ccf0-5f69-a609-6b82873eab3c" 14 | -------------------------------------------------------------------------------- /api_src/components/parameters/podcastguid.yaml: -------------------------------------------------------------------------------- 1 | name: podcastguid 2 | in: query 3 | # language=Markdown 4 | description: | 5 | The GUID from the `podcast:guid` tag in the feed. This value is a unique, global identifier for the podcast. 6 | 7 | 8 | See the namespace spec for 9 | [guid](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#guid) for details. 10 | required: true 11 | schema: 12 | type: string 13 | example: "917393e3-1b1e-5cef-ace4-edaa54e1f810" 14 | -------------------------------------------------------------------------------- /api_src/components/responses/value_byepisodeguid.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | query: 10 | $ref: '../properties/query_byepisodeguid.yaml' 11 | value: 12 | $ref: '../properties/value_byepisodeguid.yaml' 13 | description: 14 | $ref: '../properties/description_response.yaml' 15 | -------------------------------------------------------------------------------- /api_src/components/schemas/value_batch_byepisodeguid.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | JSON data where key is the `podcastguid` and value is a list of `episodeguid` values. 4 | type: object 5 | additionalProperties: 6 | type: array 7 | items: 8 | type: string 9 | example: 10 | 917393e3-1b1e-5cef-ace4-edaa54e1f810: 11 | - PC20141 12 | - PC20142 13 | - PC20143 14 | c73b1a23-1c28-5edb-94c3-10d1745d0877: 15 | - bdea6759-a7b6-4c0d-9d1e-acca3133f4a9 16 | -------------------------------------------------------------------------------- /api_src/components/properties/group.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The group the person's role is in. 4 | 5 | 6 | Value should be an official group within the Podcast Taxonomy Project 7 | [list](https://github.com/Podcastindex-org/podcast-namespace/blob/main/taxonomy.json). 8 | 9 | 10 | See the [podcast namespace spec](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#person) for more information. 11 | type: string 12 | example: "Cast" 13 | -------------------------------------------------------------------------------- /api_src/components/parameters/id_feed_episode_pi.yaml: -------------------------------------------------------------------------------- 1 | name: id 2 | in: query 3 | # language=Markdown 4 | description: | 5 | The PodcastIndex Feed ID or IDs to search for. 6 | 7 | 8 | If searching for multiple IDs, separate values with a comma. A maximum of 200 IDs can be provided. 9 | required: true 10 | schema: 11 | type: string 12 | examples: 13 | single: 14 | value: 75075 15 | description: Single ID 16 | multiple: 17 | value: 41504,920666 18 | description: Multiple IDs 19 | -------------------------------------------------------------------------------- /api_src/components/responses/400_static.yaml: -------------------------------------------------------------------------------- 1 | description: Invalid request 2 | content: 3 | application/xml: 4 | schema: 5 | type: object 6 | properties: 7 | Error: 8 | type: object 9 | properties: 10 | Code: 11 | type: string 12 | RequestId: 13 | type: string 14 | HostId: 15 | type: string 16 | example: 17 | status: "false" 18 | description: "Invalid parameters" 19 | -------------------------------------------------------------------------------- /api_src/components/properties/customKey.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The name of a custom record key to send along with the payment. May not be reported. 4 | 5 | 6 | See the [podcast namespace spec](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#value) 7 | and [value specification](https://github.com/Podcastindex-org/podcast-namespace/blob/main/value/value.md) 8 | for more information. 9 | type: string 10 | nullable: true 11 | example: "112111100" 12 | -------------------------------------------------------------------------------- /api_src/components/properties/chash.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The md5 hash of the following feed items in hex format. 4 | 5 | - `title` 6 | - `link` 7 | - `feedLanguage` 8 | - `generator` 9 | - `author` 10 | - `ownerName` 11 | - `ownerEmail` (note: not exposed via the API) 12 | 13 | Pseudo-code: 14 | 15 | chash = md5(title+link+feedLanguage+generator+author+ownerName+ownerEmail) 16 | type: string 17 | example: "ad651c60eaaf3344595c0dd0bd787993" 18 | -------------------------------------------------------------------------------- /api_src/components/properties/description_feed.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The channel-level description 4 | 5 | 6 | Uses the longer of the possible fields in the feed: ``, `` and `` 7 | type: string 8 | example: "Batman University is a seasonal podcast about you know who. It began with an analysis of episodes of \u201cBatman: The Animated Series\u201d but has now expanded to cover other series, movies, and media. Your professor is Tony Sindelar." 9 | -------------------------------------------------------------------------------- /api_src/components/properties/value_byepisodeguid_batch.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Information for supporting the podcast via one of the "Value for Value" methods. 4 | type: object 5 | properties: 6 | podcastGUID: 7 | $ref: 'podcastguid.yaml' 8 | guid: 9 | $ref: 'guid.yaml' 10 | title: 11 | $ref: 'title_episode.yaml' 12 | feedTitle: 13 | $ref: 'title_feed.yaml' 14 | model: 15 | $ref: 'model_v4v.yaml' 16 | destinations: 17 | $ref: 'destinations_v4v.yaml' 18 | -------------------------------------------------------------------------------- /api_src/components/responses/bymedium.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | feeds: 10 | $ref: '../properties/feeds.yaml' 11 | count: 12 | $ref: '../properties/count.yaml' 13 | medium: 14 | $ref: '../properties/medium.yaml' 15 | description: 16 | $ref: '../properties/description_response.yaml' 17 | -------------------------------------------------------------------------------- /api_src/components/properties/role.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Used to identify what role the person serves on the show or episode. 4 | 5 | 6 | Value should be an official role within the Podcast Taxonomy Project 7 | [list](https://github.com/Podcastindex-org/podcast-namespace/blob/main/taxonomy.json). 8 | 9 | 10 | See the [podcast namespace spec](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#person) for more information. 11 | type: string 12 | example: "Host" 13 | -------------------------------------------------------------------------------- /api_src/components/responses/add_byfeedurl_batch.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | # feedId: 10 | # $ref: '../properties/id_feed.yaml' 11 | # existed: 12 | # $ref: '../properties/existed.yaml' 13 | # description: 14 | # $ref: '../properties/description_response.yaml' 15 | # TODO: successful response format unknown 16 | -------------------------------------------------------------------------------- /api_src/components/responses/episodes_live.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | items: 10 | $ref: '../properties/items_live.yaml' 11 | count: 12 | $ref: '../properties/count.yaml' 13 | max: 14 | $ref: '../properties/max.yaml' 15 | description: 16 | $ref: '../properties/description_response.yaml' 17 | -------------------------------------------------------------------------------- /api_src/components/parameters/medium.yaml: -------------------------------------------------------------------------------- 1 | name: medium 2 | in: query 3 | # language=Markdown 4 | description: | 5 | The medium value to search for. 6 | 7 | 8 | Full list of possible values documented in 9 | [medium](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#medium) tag spec. 10 | schema: 11 | type: string 12 | enum: 13 | - "audiobook" 14 | - "blog" 15 | - "film" 16 | - "music" 17 | - "newsletter" 18 | - "podcast" 19 | - "video" 20 | example: "film" 21 | -------------------------------------------------------------------------------- /api_src/components/responses/recent_episodes.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | items: 10 | $ref: '../properties/items_recent.yaml' 11 | count: 12 | $ref: '../properties/count.yaml' 13 | max: 14 | $ref: '../properties/max.yaml' 15 | description: 16 | $ref: '../properties/description_response.yaml' 17 | -------------------------------------------------------------------------------- /api_src/components/responses/search_byterm.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | feeds: 10 | $ref: '../properties/feeds.yaml' 11 | count: 12 | $ref: '../properties/count.yaml' 13 | query: 14 | $ref: '../properties/query_search.yaml' 15 | description: 16 | $ref: '../properties/description_response.yaml' 17 | -------------------------------------------------------------------------------- /api_src/components/schemas/feeds_data_obj.yaml: -------------------------------------------------------------------------------- 1 | type: object 2 | properties: 3 | feedId: 4 | $ref: '../properties/id_feed.yaml' 5 | feedUrl: 6 | $ref: '../properties/url_feed.yaml' 7 | feedTitle: 8 | $ref: '../properties/title_feed.yaml' 9 | feedDescription: 10 | $ref: '../properties/description_feed.yaml' 11 | feedImage: 12 | $ref: '../properties/image_feed.yaml' 13 | feedLanguage: 14 | $ref: '../properties/language.yaml' 15 | feedItunesId: 16 | $ref: '../properties/itunesId_feed.yaml' 17 | -------------------------------------------------------------------------------- /api_src/components/properties/description_episode.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | The item-level description of the episode. 4 | 5 | 6 | Uses the longer of the possible fields in the feed: ``, `` and `` 7 | type: string 8 | example: "Batman University is back in session! James Thomson and Nathan Alderman join Tony for a discussion of Fox\u2019s \u201cGotham.\u201d Tune in to hear our thoughts on how a half-baked comic book show was reborn into an unmissable train wreck." 9 | -------------------------------------------------------------------------------- /api_src/components/responses/recent_newfeeds.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | feeds: 10 | $ref: '../properties/feeds_recent_new.yaml' 11 | count: 12 | $ref: '../properties/count.yaml' 13 | max: 14 | $ref: '../properties/max.yaml' 15 | description: 16 | $ref: '../properties/description_response.yaml' 17 | -------------------------------------------------------------------------------- /api_src/components/properties/data_static.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Object containing the recent data 4 | type: object 5 | properties: 6 | nextSince: 7 | # language=Markdown 8 | description: | 9 | Value of `since` in next block of data 10 | type: integer 11 | format: Unix Epoch 12 | example: 1613805249 13 | position: 14 | $ref: '../properties/position.yaml' 15 | feeds: 16 | $ref: '../properties/feeds_data.yaml' 17 | items: 18 | $ref: '../properties/items_data.yaml' 19 | -------------------------------------------------------------------------------- /api_src/components/responses/episodes_byfeedurl.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | items: 10 | $ref: '../properties/items_podcast.yaml' 11 | count: 12 | $ref: '../properties/count.yaml' 13 | query: 14 | $ref: '../properties/query_url.yaml' 15 | description: 16 | $ref: '../properties/description_response.yaml' 17 | -------------------------------------------------------------------------------- /api_src/components/responses/episodes_byitunesid.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | items: 10 | $ref: '../properties/items_itunesId.yaml' 11 | count: 12 | $ref: '../properties/count.yaml' 13 | query: 14 | $ref: '../properties/id_query.yaml' 15 | description: 16 | $ref: '../properties/description_response.yaml' 17 | -------------------------------------------------------------------------------- /api_src/components/responses/episodes_random.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | episodes: 10 | $ref: '../properties/episodes_random_array.yaml' 11 | count: 12 | $ref: '../properties/count.yaml' 13 | max: 14 | $ref: '../properties/max.yaml' 15 | description: 16 | $ref: '../properties/description_response.yaml' 17 | -------------------------------------------------------------------------------- /api_src/components/responses/search_byperson.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | items: 10 | $ref: '../properties/items_byperson.yaml' 11 | count: 12 | $ref: '../properties/count.yaml' 13 | query: 14 | $ref: '../properties/query_search.yaml' 15 | description: 16 | $ref: '../properties/description_response.yaml' 17 | -------------------------------------------------------------------------------- /api_src/components/responses/podcasts_batch_byguid.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | allFound: 10 | $ref: '../properties/allfound.yaml' 11 | found: 12 | $ref: '../properties/found.yaml' 13 | feeds: 14 | $ref: '../properties/feeds_batch.yaml' 15 | description: 16 | $ref: '../properties/description_response.yaml' 17 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | indent_size = 4 7 | indent_style = space 8 | insert_final_newline = true 9 | max_line_length = 120 10 | tab_width = 4 11 | trim_trailing_whitespace = true 12 | 13 | [{*.yaml,*.yml}] 14 | indent_size = 2 15 | 16 | [*.json] 17 | indent_size = 2 18 | 19 | # change format to match format produced by Postman 20 | [{*.postman_collection.json,*.postman_environment.json}] 21 | indent_size = 4 22 | indent_style = tab 23 | 24 | [{*.md,*.markdown}] 25 | indent_size = 2 26 | -------------------------------------------------------------------------------- /api_src/components/properties/customValue.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | A custom value to pass along with the payment. This is considered the value that belongs to the customKey. May not be reported. 4 | 5 | 6 | See the [podcast namespace spec](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#value) 7 | and [value specification](https://github.com/Podcastindex-org/podcast-namespace/blob/main/value/value.md) 8 | for more information. 9 | type: string 10 | nullable: true 11 | example: "wal_ZmqFg13NB31oek" 12 | -------------------------------------------------------------------------------- /api_src/components/responses/static_music_rss.yaml: -------------------------------------------------------------------------------- 1 | # language=markdown 2 | description: | 3 | The hourly Top X music 4 | 5 | 6 | Data follows the RSS XML spec with additions of 7 | [Podcast Namespace](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md) attributes. 8 | 9 | 10 | The [`podcast:remoteItem`](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#remote-item) 11 | is used to reference the episodes in the music chart. 12 | content: 13 | "application/rss+xml": 14 | schema: 15 | type: object 16 | -------------------------------------------------------------------------------- /api_src/components/responses/recent_feeds.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | feeds: 10 | $ref: '../properties/feeds_recent.yaml' 11 | count: 12 | $ref: '../properties/count.yaml' 13 | max: 14 | $ref: '../properties/max.yaml' 15 | since: 16 | $ref: '../properties/since.yaml' 17 | description: 18 | $ref: '../properties/description_response.yaml' 19 | -------------------------------------------------------------------------------- /api_src/components/responses/podcasts_trending.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | feeds: 10 | $ref: '../properties/feeds_trending.yaml' 11 | count: 12 | $ref: '../properties/count.yaml' 13 | max: 14 | $ref: '../properties/max.yaml' 15 | since: 16 | $ref: '../properties/since.yaml' 17 | description: 18 | $ref: '../properties/description_response.yaml' 19 | -------------------------------------------------------------------------------- /api_src/components/responses/podcasts_bytag.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | feeds: 10 | $ref: '../properties/feeds_bytag.yaml' 11 | count: 12 | $ref: '../properties/count.yaml' 13 | total: 14 | $ref: '../properties/total.yaml' 15 | nextStartAt: 16 | $ref: '../properties/nextStartAt.yaml' 17 | description: 18 | $ref: '../properties/description_response.yaml' 19 | -------------------------------------------------------------------------------- /api_src/components/responses/recent_newvaluefeeds.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | feeds: 10 | $ref: '../properties/feeds_recent_value.yaml' 11 | count: 12 | $ref: '../properties/count.yaml' 13 | max: 14 | $ref: '../properties/max.yaml' 15 | since: 16 | $ref: '../properties/since.yaml' 17 | description: 18 | $ref: '../properties/description_response.yaml' 19 | -------------------------------------------------------------------------------- /api_src/components/properties/value.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Information for supporting the podcast via one of the "Value for Value" methods. May not be reported. 4 | 5 | 6 | Examples: 7 | - `lightning` value type: https://api.podcastindex.org/api/1.0/podcasts/byfeedid?id=169991&pretty 8 | - `webmonetization` value type: https://api.podcastindex.org/api/1.0/podcasts/byfeedid?id=779873&pretty 9 | type: object 10 | nullable: true 11 | properties: 12 | model: 13 | $ref: '../properties/model_v4v.yaml' 14 | destinations: 15 | $ref: '../properties/destinations_v4v.yaml' 16 | -------------------------------------------------------------------------------- /api_src/components/responses/value_batch_byepisodeguid.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | query: 10 | $ref: '../properties/query_guids.yaml' 11 | value: 12 | $ref: '../properties/value_guid_list.yaml' 13 | description: 14 | $ref: '../properties/description_response.yaml' 15 | allFound: 16 | $ref: '../properties/allfound.yaml' 17 | found: 18 | $ref: '../properties/found.yaml' 19 | -------------------------------------------------------------------------------- /api_src/components/schemas/destination_v4v.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Destination for "Value for Value" payment. 4 | type: object 5 | properties: 6 | name: 7 | $ref: '../properties/name_destination.yaml' 8 | address: 9 | $ref: '../properties/address_destination.yaml' 10 | type: 11 | $ref: '../properties/type_destination.yaml' 12 | split: 13 | $ref: '../properties/split_destination.yaml' 14 | fee: 15 | $ref: '../properties/fee_destination.yaml' 16 | customKey: 17 | $ref: '../properties/customKey.yaml' 18 | customValue: 19 | $ref: '../properties/customValue.yaml' 20 | -------------------------------------------------------------------------------- /Postman Docs/PodcastIndexOrgEnvironment.postman_environment.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "afddb376-0592-4fc8-a9cf-de0eda5a767b", 3 | "name": "PodcastIndexOrgEnvironment", 4 | "values": [ 5 | { 6 | "key": "AuthKey", 7 | "value": "", 8 | "enabled": true 9 | }, 10 | { 11 | "key": "SecretKey", 12 | "value": "", 13 | "enabled": true 14 | }, 15 | { 16 | "key": "base_url", 17 | "value": "https://api.podcastindex.org/api/1.0", 18 | "enabled": true 19 | } 20 | ], 21 | "_postman_variable_scope": "environment", 22 | "_postman_exported_at": "2020-09-14T07:01:52.013Z", 23 | "_postman_exported_using": "Postman/7.32.0" 24 | } -------------------------------------------------------------------------------- /api_src/components/properties/feeds_recent_new.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | List of feeds matching request 4 | type: array 5 | items: 6 | type: object 7 | properties: 8 | id: 9 | $ref: '../properties/id_feed.yaml' 10 | url: 11 | $ref: '../properties/url_feed.yaml' 12 | image: 13 | $ref: '../properties/image_feed.yaml' 14 | timeAdded: 15 | $ref: '../properties/timeAdded.yaml' 16 | status: 17 | $ref: '../properties/status_feed.yaml' 18 | contentHash: 19 | $ref: '../properties/contentHash.yaml' 20 | language: 21 | $ref: '../properties/language.yaml' 22 | -------------------------------------------------------------------------------- /api_src/components/properties/valueBlock.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Information for supporting the podcast via one of the "Value for Value" methods. May not be reported. 4 | 5 | 6 | Value is a string of JSON data representing the feed value block data. 7 | 8 | 9 | Examples: 10 | - `lightning` value type: https://api.podcastindex.org/api/1.0/podcasts/byfeedid?id=169991&pretty 11 | - `webmonetization` value type: https://api.podcastindex.org/api/1.0/podcasts/byfeedid?id=779873&pretty 12 | type: string 13 | # TODO: waiting for clarification on format https://podcastindex.social/@steven/113014028344047257 14 | -------------------------------------------------------------------------------- /api_src/components/parameters/chash.yaml: -------------------------------------------------------------------------------- 1 | name: chash 2 | in: query 3 | # language=Markdown 4 | description: | 5 | The md5 hash of the following feed items in hex format. 6 | If known, allows for easier duplicate checking. 7 | 8 | - `title` 9 | - `link` 10 | - `feedLanguage` 11 | - `generator` 12 | - `author` 13 | - `ownerName` 14 | - `ownerEmail` (note: not exposed via the API) 15 | 16 | Pseudo-code: 17 | 18 | chash = md5(title+link+feedLanguage+generator+author+ownerName+ownerEmail) 19 | required: true 20 | allowReserved: true 21 | schema: 22 | type: string 23 | example: "ad651c60eaaf3344595c0dd0bd787993" 24 | -------------------------------------------------------------------------------- /.github/workflows/lint-api.yml: -------------------------------------------------------------------------------- 1 | name: Lint API Docs 2 | on: [push, pull_request] 3 | jobs: 4 | lint: 5 | name: Run Linter 6 | runs-on: ubuntu-latest 7 | steps: 8 | - uses: actions/checkout@v4 9 | 10 | - name: Enable Corepack 11 | run: corepack enable 12 | 13 | - name: Setup Node 14 | uses: actions/setup-node@v3 15 | with: 16 | node-version-file: '.nvmrc' 17 | cache: "yarn" 18 | 19 | - name: Install project dependencies 20 | run: yarn 21 | 22 | - name: Run Lint 23 | run: yarn run build 24 | 25 | - name: Run Lint 26 | run: yarn run lint 27 | -------------------------------------------------------------------------------- /api_src/components/parameters/lang.yaml: -------------------------------------------------------------------------------- 1 | name: lang 2 | in: query 3 | # language=Markdown 4 | description: | 5 | Specifying a language code (like "en") will return only episodes having that specific language. 6 | 7 | 8 | You can specify multiple languages by separating them with commas. 9 | 10 | 11 | If you also want to return episodes that have no language given, use the token "unknown". (ex. en,es,ja,unknown). 12 | 13 | 14 | Values are not case sensitive. 15 | schema: 16 | type: string 17 | examples: 18 | single: 19 | value: "en" 20 | description: Single ID 21 | multiple: 22 | value: "en,es" 23 | description: Multiple IDs 24 | -------------------------------------------------------------------------------- /api_src/components/properties/stats.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | An array statistic properties 4 | type: object 5 | properties: 6 | feedCountTotal: 7 | $ref: "feedCountTotal.yaml" 8 | episodeCountTotal: 9 | $ref: "episodeCountTotal.yaml" 10 | feedsWithNewEpisodes3days: 11 | $ref: "feedsWithNewEpisodes3days.yaml" 12 | feedsWithNewEpisodes10days: 13 | $ref: "feedsWithNewEpisodes10days.yaml" 14 | feedsWithNewEpisodes30days: 15 | $ref: "feedsWithNewEpisodes30days.yaml" 16 | feedsWithNewEpisodes90days: 17 | $ref: "feedsWithNewEpisodes90days.yaml" 18 | feedsWithValueBlocks: 19 | $ref: "feedsWithValueBlocks.yaml" 20 | -------------------------------------------------------------------------------- /api_src/components/responses/episodes_byguid.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | id: 10 | $ref: '../properties/feedid_query.yaml' 11 | url: 12 | $ref: '../properties/feedurl_query.yaml' 13 | podcastGuid: 14 | $ref: '../properties/podcastguid.yaml' 15 | guid: 16 | $ref: '../properties/guid_query.yaml' 17 | episode: 18 | $ref: '../properties/episode_object.yaml' 19 | description: 20 | $ref: '../properties/description_response.yaml' 21 | -------------------------------------------------------------------------------- /api_src/paths/categories/list.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Categories 4 | summary: List 5 | # language=Markdown 6 | description: | 7 | Return all the possible categories supported by the index. 8 | 9 | 10 | Example: https://api.podcastindex.org/api/1.0/categories/list?pretty 11 | operationId: categories/list 12 | security: 13 | - $ref: '../../components/security/security.yaml' 14 | parameters: 15 | - $ref: '../../components/parameters/pretty.yaml' 16 | responses: 17 | '200': 18 | $ref: '../../components/responses/categories_list.yaml' 19 | '400': 20 | $ref: '../../components/responses/400.yaml' 21 | '401': 22 | $ref: '../../components/responses/401.yaml' 23 | -------------------------------------------------------------------------------- /docs/template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | API Reference | PodcastIndex.org 5 | 6 | 7 | 8 | 9 | 13 | 19 | {{{redocHead}}} 20 | 21 | 22 | {{{redocHTML}}} 23 | 24 | 25 | -------------------------------------------------------------------------------- /api_src/components/responses/episodes_byfeedid.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | liveItems: 10 | $ref: '../properties/liveItems_podcast.yaml' 11 | items: 12 | $ref: '../properties/items_podcast.yaml' 13 | count: 14 | $ref: '../properties/count.yaml' 15 | query: 16 | oneOf: 17 | - $ref: '../properties/query_podcast_id_single.yaml' 18 | - $ref: '../properties/query_podcast_id_multiple.yaml' 19 | description: 20 | $ref: '../properties/description_response.yaml' 21 | -------------------------------------------------------------------------------- /api_src/components/responses/static_tracking_feed_value_blocks.yaml: -------------------------------------------------------------------------------- 1 | description: Array of episodes containing value blocks 2 | content: 3 | application/json: 4 | schema: 5 | type: array 6 | items: 7 | type: object 8 | properties: 9 | id: 10 | $ref: "../properties/id_feed.yaml" 11 | itunesId: 12 | $ref: "../properties/itunesId_feed.yaml" 13 | podcastGuid: 14 | $ref: "../properties/podcastguid.yaml" 15 | url: 16 | $ref: "../properties/url_feed.yaml" 17 | value: 18 | $ref: "../properties/value.yaml" 19 | valueCreatedOn: 20 | $ref: "../properties/valueCreatedOn.yaml" 21 | -------------------------------------------------------------------------------- /api_src/components/responses/recent_data.yaml: -------------------------------------------------------------------------------- 1 | description: Success 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | status: 8 | $ref: '../properties/status.yaml' 9 | feedCount: 10 | $ref: '../properties/feedCount.yaml' 11 | itemCount: 12 | $ref: '../properties/itemCount.yaml' 13 | max: 14 | $ref: '../properties/max.yaml' 15 | since: 16 | $ref: '../properties/since.yaml' 17 | description: 18 | $ref: '../properties/description_response.yaml' 19 | nextSince: 20 | $ref: '../properties/nextSince.yaml' 21 | data: 22 | $ref: '../properties/data.yaml' 23 | -------------------------------------------------------------------------------- /api_src/components/properties/feeds_recent.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | List of feeds matching request 4 | type: array 5 | items: 6 | type: object 7 | properties: 8 | id: 9 | $ref: '../properties/id_feed.yaml' 10 | url: 11 | $ref: '../properties/url_feed.yaml' 12 | title: 13 | $ref: '../properties/title_feed.yaml' 14 | newestItemPublishTime: 15 | $ref: '../properties/newestItemPublishTime.yaml' 16 | oldestItemPublishTime: 17 | $ref: '../properties/oldestItemPublishTime.yaml' 18 | itunesId: 19 | $ref: '../properties/itunesId_feed.yaml' 20 | language: 21 | $ref: '../properties/language.yaml' 22 | categories: 23 | $ref: '../properties/categories.yaml' 24 | -------------------------------------------------------------------------------- /api_src/components/properties/value_byepisodeguid.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Information for supporting the podcast via one of the "Value for Value" methods. May not be reported. 4 | 5 | 6 | Examples: 7 | - `lightning` value type: https://api.podcastindex.org/api/1.0/podcasts/byfeedid?id=169991&pretty 8 | - `webmonetization` value type: https://api.podcastindex.org/api/1.0/podcasts/byfeedid?id=779873&pretty 9 | type: object 10 | nullable: true 11 | properties: 12 | model: 13 | $ref: '../properties/model_v4v.yaml' 14 | destinations: 15 | $ref: '../properties/destinations_v4v.yaml' 16 | title: 17 | $ref: '../properties/title_episode.yaml' 18 | feedTitle: 19 | $ref: '../properties/title_feed.yaml' 20 | -------------------------------------------------------------------------------- /api_src/paths/static/tracking/feedValueBlocks.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Static Data 4 | summary: Feed Value Blocks 5 | # language=Markdown 6 | description: | 7 | Get all feeds with value blocks. 8 | 9 | 10 | Access at: https://tracking.podcastindex.org/feedValueBlocks.json 11 | operationId: feedValueBlocks.json 12 | security: [] # no security required 13 | servers: 14 | - url: 'https://tracking.podcastindex.org' 15 | description: "Podcast Index Tracking" 16 | responses: 17 | '200': 18 | $ref: '../../../components/responses/static_tracking_feed_value_blocks.yaml' 19 | '400': 20 | $ref: '../../../components/responses/400_static.yaml' 21 | '404': 22 | $ref: '../../../components/responses/404.yaml' 23 | -------------------------------------------------------------------------------- /.redocly.yaml: -------------------------------------------------------------------------------- 1 | # See https://redoc.ly/docs/cli/configuration/ for more information. 2 | extends: 3 | - recommended 4 | 5 | apis: 6 | core@v2: 7 | root: ./api_src/root.yaml 8 | rules: 9 | no-unused-components: warn 10 | 11 | theme: 12 | openapi: 13 | htmlTemplate: ./docs/template.html 14 | hideDownloadButton: true 15 | expandDefaultServerVariables : true # nice for debugging 16 | expandResponses: all # nice for debugging 17 | expandSingleSchemaField: true # nice for debugging 18 | jsonSampleExpandLevel: all # nice for debugging 19 | hideSchemaTitles: true 20 | requiredPropsFirst: true 21 | theme: 22 | spacing: 23 | sectionVertical: 10 24 | colors: 25 | primary: 26 | main: "#e90000" 27 | -------------------------------------------------------------------------------- /api_src/components/securitySchemes/Authorization.yaml: -------------------------------------------------------------------------------- 1 | type: apiKey 2 | in: header 3 | name: Authorization 4 | # language=Markdown 5 | description: | 6 | A SHA-1 hash of the `X-Auth-Key`, the corresponding secret and the `X-Auth-Date` value concatenated as a string. 7 | The resulting hash should be encoded as a hexadecimal value, two digits per byte, using lower case letters for 8 | the hex digits "a" through "f". 9 | 10 | 11 | The Authorization header is computed with something like this (pseudo-code): 12 | 13 | authHeader = sha1(apiKey+apiSecret+unixTime) 14 | 15 | Example value, uses example values of `X-Auth-Key` and `X-Auth-Date` and an api secret of 16 | `yzJe2eE7XV-3eY576dyRZ6wXyAbndh6LUrCZ8KN|` 17 | 18 | 19 | *Example*: `UXKCGDSYGUUEVQJSYDZH` 20 | -------------------------------------------------------------------------------- /api_src/paths/static/tracking/episodeValueBlocks.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Static Data 4 | summary: Episode Value Blocks 5 | # language=Markdown 6 | description: | 7 | Get all episodes with value blocks. 8 | 9 | 10 | Access at: https://tracking.podcastindex.org/episodeValueBlocks.json 11 | operationId: episodeValueBlocks.json 12 | security: [] # no security required 13 | servers: 14 | - url: 'https://tracking.podcastindex.org' 15 | description: "Podcast Index Tracking" 16 | responses: 17 | '200': 18 | $ref: '../../../components/responses/static_tracking_episode_value_blocks.yaml' 19 | '400': 20 | $ref: '../../../components/responses/400_static.yaml' 21 | '404': 22 | $ref: '../../../components/responses/404.yaml' 23 | -------------------------------------------------------------------------------- /api_src/components/properties/items_soundbites.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | List of soundbites matching request 4 | type: array 5 | items: 6 | type: object 7 | properties: 8 | enclosureUrl: 9 | $ref: '../properties/enclosureUrl.yaml' 10 | title: 11 | $ref: '../properties/title_soundbite.yaml' 12 | startTime: 13 | $ref: '../properties/startTime.yaml' 14 | duration: 15 | $ref: '../properties/duration_soundbite.yaml' 16 | episodeId: 17 | $ref: '../properties/id_episode.yaml' 18 | episodeTitle: 19 | $ref: '../properties/title_episode.yaml' 20 | feedTitle: 21 | $ref: '../properties/title_feed.yaml' 22 | feedUrl: 23 | $ref: '../properties/url_feed.yaml' 24 | feedId: 25 | $ref: '../properties/id_feed.yaml' 26 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pi_api_docs", 3 | "version": "1.12.1", 4 | "private": true, 5 | "devDependencies": { 6 | "@redocly/cli": "^1.21.0", 7 | "copyfiles": "^2.4.1", 8 | "http-server": "^14.1.1", 9 | "livereload": "^0.9.3", 10 | "npm-run-all": "^4.1.5" 11 | }, 12 | "scripts": { 13 | "preview": "redocly preview-docs", 14 | "build": "run-s -cln 'build:*'", 15 | "build:json": "redocly bundle -o docs/pi_api --ext json", 16 | "build:yaml": "redocly bundle -o docs/pi_api --ext yaml", 17 | "lint": "redocly lint", 18 | "local": "run-p -cln 'local:*'", 19 | "local:reload": "livereload . -w 2000 -d -e html,css,js,png,gif,jpg,php,php5,py,rb,erb,coffee,yaml,json", 20 | "local:server": "http-server docs -c 1 -p 8000" 21 | }, 22 | "packageManager": "yarn@4.1.1" 23 | } 24 | -------------------------------------------------------------------------------- /api_src/components/schemas/feed_trending.yaml: -------------------------------------------------------------------------------- 1 | type: object 2 | properties: 3 | id: 4 | $ref: '../properties/id_feed.yaml' 5 | url: 6 | $ref: '../properties/url_feed.yaml' 7 | title: 8 | $ref: '../properties/title_feed.yaml' 9 | description: 10 | $ref: '../properties/description_feed.yaml' 11 | author: 12 | $ref: '../properties/author.yaml' 13 | image: 14 | $ref: '../properties/image_feed.yaml' 15 | artwork: 16 | $ref: '../properties/artwork.yaml' 17 | newestItemPublishTime: 18 | $ref: '../properties/newestItemPublishTime.yaml' 19 | itunesId: 20 | $ref: '../properties/itunesId_feed.yaml' 21 | trendScore: 22 | $ref: '../properties/trendScore.yaml' 23 | language: 24 | $ref: '../properties/language.yaml' 25 | categories: 26 | $ref: '../properties/categories.yaml' 27 | -------------------------------------------------------------------------------- /api_src/paths/podcasts/byitunesid.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Podcasts 4 | summary: By iTunes ID 5 | # language=Markdown 6 | description: | 7 | This call returns everything we know about the feed from the iTunes ID 8 | 9 | 10 | Example: https://api.podcastindex.org/api/1.0/podcasts/byitunesid?id=1441923632&pretty 11 | operationId: podcasts/byitunesid 12 | security: 13 | - $ref: '../../components/security/security.yaml' 14 | parameters: 15 | - $ref: '../../components/parameters/id_feed_podcast_itunes.yaml' 16 | - $ref: '../../components/parameters/pretty.yaml' 17 | responses: 18 | '200': 19 | $ref: '../../components/responses/podcasts_byitunesid.yaml' 20 | '400': 21 | $ref: '../../components/responses/400.yaml' 22 | '401': 23 | $ref: '../../components/responses/401.yaml' 24 | -------------------------------------------------------------------------------- /api_src/paths/episodes/byid.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Episodes 4 | summary: By ID 5 | # language=Markdown 6 | description: | 7 | Get all the metadata for a single episode by passing its id. 8 | 9 | 10 | Example: https://api.podcastindex.org/api/1.0/episodes/byid?id=16795090&pretty 11 | operationId: episodes/byid 12 | security: 13 | - $ref: '../../components/security/security.yaml' 14 | parameters: 15 | - $ref: '../../components/parameters/id_episode_pi.yaml' 16 | - $ref: '../../components/parameters/fulltext.yaml' 17 | - $ref: '../../components/parameters/pretty.yaml' 18 | responses: 19 | '200': 20 | $ref: '../../components/responses/episodes_byid.yaml' 21 | '400': 22 | $ref: '../../components/responses/400.yaml' 23 | '401': 24 | $ref: '../../components/responses/401.yaml' 25 | -------------------------------------------------------------------------------- /api_src/components/responses/static_current.yaml: -------------------------------------------------------------------------------- 1 | # language=markdown 2 | description: | 3 | The feed and episode data seen by the Podcast Index. 4 | content: 5 | application/json: 6 | schema: 7 | type: object 8 | properties: 9 | status: 10 | $ref: '../properties/status.yaml' 11 | feedCount: 12 | $ref: '../properties/feedCount.yaml' 13 | itemCount: 14 | $ref: '../properties/itemCount.yaml' 15 | max: 16 | $ref: '../properties/max.yaml' 17 | since: 18 | $ref: '../properties/since.yaml' 19 | previousTrackingUrl: 20 | description: URL to previous set of data 21 | type: string 22 | example: "https://tracking.podcastindex.org/1724468201" 23 | data: 24 | $ref: '../properties/data_static.yaml' 25 | -------------------------------------------------------------------------------- /api_src/components/properties/feeds_recent_value.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | List of feeds matching request 4 | type: array 5 | items: 6 | type: object 7 | properties: 8 | id: 9 | $ref: '../properties/id_feed.yaml' 10 | url: 11 | $ref: '../properties/url_feed.yaml' 12 | title: 13 | $ref: '../properties/title_feed.yaml' 14 | author: 15 | $ref: '../properties/author.yaml' 16 | image: 17 | $ref: '../properties/image_feed.yaml' 18 | newestItemPublishTime: 19 | $ref: '../properties/newestItemPublishTime.yaml' 20 | itunesId: 21 | $ref: '../properties/itunesId_feed.yaml' 22 | trendScore: 23 | $ref: '../properties/trendScore.yaml' 24 | language: 25 | $ref: '../properties/language.yaml' 26 | categories: 27 | $ref: '../properties/categories.yaml' 28 | -------------------------------------------------------------------------------- /api_src/paths/static/public/podcastindex_feeds_db.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Static Data 4 | summary: Feeds Database 5 | # language=Markdown 6 | description: | 7 | Compressed database of all non-dead feeds in the Podcast Index database. 8 | 9 | 10 | Updated daily. Some attributes excluded. No episodes included. 11 | 12 | 13 | Download from: https://public.podcastindex.org/podcastindex_feeds.db.tgz 14 | operationId: podcastindex_feeds_db.tgz 15 | security: [] # no security required 16 | servers: 17 | - url: 'https://public.podcastindex.org' 18 | description: "Podcast Index Public" 19 | responses: 20 | '200': 21 | $ref: '../../../components/responses/static_feeds_db.yaml' 22 | '400': 23 | $ref: '../../../components/responses/400_static.yaml' 24 | '404': 25 | $ref: '../../../components/responses/404.yaml' 26 | -------------------------------------------------------------------------------- /api_src/components/responses/static_tracking_episode_value_blocks.yaml: -------------------------------------------------------------------------------- 1 | description: Array of episodes containing value blocks 2 | content: 3 | application/json: 4 | schema: 5 | type: array 6 | items: 7 | type: object 8 | properties: 9 | episodeGuid: 10 | $ref: "../properties/guid.yaml" 11 | episodeId: 12 | $ref: "../properties/id_episode.yaml" 13 | feedId: 14 | $ref: "../properties/id_feed.yaml" 15 | feedUrl: 16 | $ref: "../properties/url_feed.yaml" 17 | itunesId: 18 | $ref: "../properties/itunesId_feed.yaml" 19 | podcastGuid: 20 | $ref: "../properties/podcastguid.yaml" 21 | value: 22 | $ref: "../properties/value.yaml" 23 | valueCreatedOn: 24 | $ref: "../properties/valueCreatedOn.yaml" 25 | -------------------------------------------------------------------------------- /api_src/paths/episodes/live.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Episodes 4 | summary: Live 5 | # language=Markdown 6 | description: | 7 | Get all episodes that have been found in the [podcast:liveitem](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#live-item) from the feeds. 8 | 9 | 10 | Examples: 11 | 12 | - https://api.podcastindex.org/api/1.0/episodes/live?pretty 13 | operationId: episodes/live 14 | security: 15 | - $ref: '../../components/security/security.yaml' 16 | parameters: 17 | - $ref: '../../components/parameters/max.yaml' 18 | - $ref: '../../components/parameters/pretty.yaml' 19 | responses: 20 | '200': 21 | $ref: '../../components/responses/episodes_live.yaml' 22 | '400': 23 | $ref: '../../components/responses/400.yaml' 24 | '401': 25 | $ref: '../../components/responses/401.yaml' 26 | -------------------------------------------------------------------------------- /api_src/paths/recent/newvaluefeeds.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Recent 4 | summary: New Value Feeds 5 | # language=Markdown 6 | description: | 7 | This call returns feeds that have added a `value` tag in reverse chronological order. 8 | 9 | 10 | Example: https://api.podcastindex.org/api/1.0/recent/newvaluefeeds?pretty 11 | operationId: recent/newvaluefeeds 12 | security: 13 | - $ref: '../../components/security/security.yaml' 14 | parameters: 15 | - $ref: '../../components/parameters/max_recent_feeds.yaml' 16 | - $ref: '../../components/parameters/since.yaml' 17 | - $ref: '../../components/parameters/pretty.yaml' 18 | responses: 19 | '200': 20 | $ref: '../../components/responses/recent_newvaluefeeds.yaml' 21 | '400': 22 | $ref: '../../components/responses/400.yaml' 23 | '401': 24 | $ref: '../../components/responses/401.yaml' 25 | -------------------------------------------------------------------------------- /api_src/paths/static/stats/daily_counts.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Static Data 4 | summary: Stats Daily Counts 5 | # language=Markdown 6 | description: | 7 | Report a number of statistics about the feeds in Podcast Index's database. Updated daily. 8 | 9 | 10 | A subset of stats can be retrieved using the API endpoint [stats/current](#get-/stats/current). 11 | 12 | 13 | View at: https://stats.podcastindex.org/daily_counts.json 14 | operationId: daily_counts.json 15 | security: [] # no security required 16 | servers: 17 | - url: 'https://stats.podcastindex.org' 18 | description: "Podcast Index Stats" 19 | responses: 20 | '200': 21 | $ref: '../../../components/responses/static_stats_counts.yaml' 22 | '400': 23 | $ref: '../../../components/responses/400_static.yaml' 24 | '404': 25 | $ref: '../../../components/responses/404.yaml' 26 | -------------------------------------------------------------------------------- /api_src/paths/static/stats/hourly_counts.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Static Data 4 | summary: Stats Hourly Counts 5 | # language=Markdown 6 | description: | 7 | Report a number of statistics about the feeds in Podcast Index's database. Updated hourly. 8 | 9 | 10 | A subset of stats can be retrieved using the API endpoint [stats/current](#get-/stats/current). 11 | 12 | 13 | View at: https://stats.podcastindex.org/hourly_counts.json 14 | operationId: hourly_counts.json 15 | security: [] # no security required 16 | servers: 17 | - url: 'https://stats.podcastindex.org' 18 | description: "Podcast Index Stats" 19 | responses: 20 | '200': 21 | $ref: '../../../components/responses/static_stats_counts.yaml' 22 | '400': 23 | $ref: '../../../components/responses/400_static.yaml' 24 | '404': 25 | $ref: '../../../components/responses/404.yaml' 26 | -------------------------------------------------------------------------------- /api_src/components/schemas/items_data_obj.yaml: -------------------------------------------------------------------------------- 1 | type: object 2 | properties: 3 | episodeId: 4 | $ref: '../properties/id_episode.yaml' 5 | episodeTitle: 6 | $ref: '../properties/title_feed.yaml' 7 | episodeDescription: 8 | $ref: '../properties/description_episode.yaml' 9 | episodeImage: 10 | $ref: '../properties/image_episode.yaml' 11 | episodeTimestamp: 12 | $ref: '../properties/datePublished.yaml' 13 | episodeAdded: 14 | $ref: '../properties/episodeAdded.yaml' 15 | episodeEnclosureUrl: 16 | $ref: '../properties/enclosureUrl.yaml' 17 | episodeEnclosureLength: 18 | $ref: '../properties/enclosureLength.yaml' 19 | episodeEnclosureType: 20 | $ref: '../properties/enclosureType.yaml' 21 | episodeDuration: 22 | $ref: '../properties/duration.yaml' 23 | episodeType: 24 | $ref: '../properties/episodeType.yaml' 25 | feedId: 26 | $ref: '../properties/id_feed.yaml' 27 | -------------------------------------------------------------------------------- /api_src/paths/podcasts/dead.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Podcasts 4 | summary: Dead 5 | # language=Markdown 6 | description: | 7 | This call returns all feeds that have been marked dead (`dead` == 1) 8 | 9 | 10 | Hourly statistics can also be access at https://public.podcastindex.org/podcastindex_dead_feeds.csv 11 | For details, see [Dead Feeds](#get-/static/public/podcastindex_dead_feeds.csv). 12 | 13 | 14 | Example: https://api.podcastindex.org/api/1.0/podcasts/dead?pretty 15 | operationId: podcasts/dead 16 | security: 17 | - $ref: '../../components/security/security.yaml' 18 | parameters: 19 | - $ref: '../../components/parameters/pretty.yaml' 20 | responses: 21 | '200': 22 | $ref: '../../components/responses/podcasts_dead.yaml' 23 | '400': 24 | $ref: '../../components/responses/400.yaml' 25 | '401': 26 | $ref: '../../components/responses/401.yaml' 27 | -------------------------------------------------------------------------------- /api_src/paths/value/bypodcastguid.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Value 4 | summary: By Feed GUID 5 | # language=Markdown 6 | description: | 7 | This call returns the information for supporting the podcast via one of the "Value for Value" methods from podcast GUID. 8 | 9 | 10 | Note: No API key needed for this endpoint. 11 | 12 | 13 | Example: https://api.podcastindex.org/api/1.0/value/bypodcastguid?guid=917393e3-1b1e-5cef-ace4-edaa54e1f810&pretty 14 | operationId: value/bypodcastguid 15 | security: [] # no security required 16 | parameters: 17 | - $ref: '../../components/parameters/guid_feed_podcast.yaml' 18 | - $ref: '../../components/parameters/pretty.yaml' 19 | responses: 20 | '200': 21 | $ref: '../../components/responses/value_bypodcastguid.yaml' 22 | '400': 23 | $ref: '../../components/responses/400.yaml' 24 | '401': 25 | $ref: '../../components/responses/401.yaml' 26 | -------------------------------------------------------------------------------- /api_src/paths/static/public/podcastindex_dead_feeds.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Static Data 4 | summary: Dead Feeds 5 | # language=Markdown 6 | description: | 7 | Lists all feed Ids that have been marked dead in the Podcast Index database. The list is updated every X hours. 8 | 9 | 10 | A subset of stats can be retrieved using the API endpoint [podcasts/dead](#get-/podcasts/dead). 11 | 12 | 13 | Download from: https://public.podcastindex.org/podcastindex_dead_feeds.csv 14 | operationId: podcastindex_dead_feeds.csv 15 | security: [] # no security required 16 | servers: 17 | - url: 'https://public.podcastindex.org' 18 | description: "Podcast Index Public" 19 | responses: 20 | '200': 21 | $ref: '../../../components/responses/static_dead_feeds.yaml' 22 | '400': 23 | $ref: '../../../components/responses/400_static.yaml' 24 | '404': 25 | $ref: '../../../components/responses/404.yaml' 26 | -------------------------------------------------------------------------------- /api_src/paths/podcasts/bymedium.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Podcasts 4 | summary: By Medium 5 | # language=Markdown 6 | description: | 7 | This call returns all feeds marked with the specified 8 | [medium](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#medium) tag value. 9 | 10 | 11 | Example: https://api.podcastindex.org/api/1.0/podcasts/bymedium?medium=music&pretty 12 | operationId: podcasts/bymedium 13 | security: 14 | - $ref: '../../components/security/security.yaml' 15 | parameters: 16 | - $ref: '../../components/parameters/medium.yaml' 17 | - $ref: '../../components/parameters/max.yaml' 18 | - $ref: '../../components/parameters/pretty.yaml' 19 | responses: 20 | '200': 21 | $ref: '../../components/responses/bymedium.yaml' 22 | '400': 23 | $ref: '../../components/responses/400.yaml' 24 | '401': 25 | $ref: '../../components/responses/401.yaml' 26 | -------------------------------------------------------------------------------- /api_src/paths/podcasts/byfeedid.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Podcasts 4 | summary: By Feed ID 5 | # language=Markdown 6 | description: | 7 | This call returns everything we know about the feed from the PodcastIndex ID 8 | 9 | 10 | Examples: 11 | 12 | - https://api.podcastindex.org/api/1.0/podcasts/byfeedid?id=75075&pretty 13 | - Includes `value` and `funding`: https://api.podcastindex.org/api/1.0/podcasts/byfeedid?id=169991&pretty 14 | operationId: podcasts/byfeedid 15 | security: 16 | - $ref: '../../components/security/security.yaml' 17 | parameters: 18 | - $ref: '../../components/parameters/id_feed_podcast_pi.yaml' 19 | - $ref: '../../components/parameters/pretty.yaml' 20 | responses: 21 | '200': 22 | $ref: '../../components/responses/podcasts_byfeedid.yaml' 23 | '400': 24 | $ref: '../../components/responses/400.yaml' 25 | '401': 26 | $ref: '../../components/responses/401.yaml' 27 | -------------------------------------------------------------------------------- /api_src/components/schemas/transcript.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | This tag is used to link to a transcript or closed captions file. Multiple tags can be present for multiple transcript formats. 4 | 5 | Detailed file format information and example files are [here](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/tags/transcript.md). 6 | type: object 7 | properties: 8 | url: 9 | description: URL of the podcast transcript. 10 | type: string 11 | format: URL 12 | example: "https://mp3s.nashownotes.com/NA-1385-Captions.srt" 13 | type: 14 | # language=Markdown 15 | description: | 16 | Mime type of the file such as `text/plain`, `text/html`, `application/srt`, `text/vtt`, `application/json` 17 | type: string 18 | enum: 19 | - "application/json" 20 | - "application/srt" 21 | - "text/html" 22 | - "text/plain" 23 | - "text/srt" 24 | - "text/vtt" 25 | example: "application/srt" 26 | -------------------------------------------------------------------------------- /api_src/paths/hub/pubnotify.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Hub 4 | summary: Pub Notify 5 | # language=Markdown 6 | description: | 7 | Notify the index that a feed has changed 8 | 9 | 10 | Note: No API key needed for this endpoint. 11 | 12 | 13 | Examples: 14 | 15 | - https://api.podcastindex.org/api/1.0/hub/pubnotify?id=920666&pretty 16 | - https://api.podcastindex.org/api/1.0/hub/pubnotify?url=https://feeds.theincomparable.com/batmanuniversity&pretty 17 | operationId: hub/pubnotify 18 | security: [] # no security required 19 | parameters: 20 | - $ref: '../../components/parameters/id_feed_podcast_pi_pubnotify.yaml' 21 | - $ref: '../../components/parameters/url_pubnotify.yaml' 22 | - $ref: '../../components/parameters/pretty.yaml' 23 | responses: 24 | '200': 25 | $ref: '../../components/responses/hub_pubnotify.yaml' 26 | '400': 27 | $ref: '../../components/responses/400.yaml' 28 | '401': 29 | $ref: '../../components/responses/401.yaml' 30 | -------------------------------------------------------------------------------- /api_src/paths/podcasts/trending.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Podcasts 4 | summary: Trending 5 | # language=Markdown 6 | description: | 7 | This call returns the podcasts/feeds that in the index that are trending. 8 | 9 | 10 | Example: https://api.podcastindex.org/api/1.0/podcasts/trending?pretty 11 | operationId: podcasts/trending 12 | security: 13 | - $ref: '../../components/security/security.yaml' 14 | parameters: 15 | - $ref: '../../components/parameters/max.yaml' 16 | - $ref: '../../components/parameters/since.yaml' 17 | - $ref: '../../components/parameters/lang.yaml' 18 | - $ref: '../../components/parameters/cat.yaml' 19 | - $ref: '../../components/parameters/notcat.yaml' 20 | - $ref: '../../components/parameters/pretty.yaml' 21 | responses: 22 | '200': 23 | $ref: '../../components/responses/podcasts_trending.yaml' 24 | '400': 25 | $ref: '../../components/responses/400.yaml' 26 | '401': 27 | $ref: '../../components/responses/401.yaml' 28 | -------------------------------------------------------------------------------- /api_src/paths/podcasts/byfeedurl.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Podcasts 4 | summary: By Feed URL 5 | # language=Markdown 6 | description: | 7 | This call returns everything we know about the feed from the feed URL 8 | 9 | 10 | Examples: 11 | 12 | - https://api.podcastindex.org/api/1.0/podcasts/byfeedurl?url=https://feeds.theincomparable.com/batmanuniversity&pretty 13 | - Includes `value` and `funding`: https://api.podcastindex.org/api/1.0/podcasts/byfeedurl?url=https://engineered.network/pragmatic/feed/index.xml&pretty 14 | operationId: podcasts/byfeedurl 15 | security: 16 | - $ref: '../../components/security/security.yaml' 17 | parameters: 18 | - $ref: '../../components/parameters/url.yaml' 19 | - $ref: '../../components/parameters/pretty.yaml' 20 | responses: 21 | '200': 22 | $ref: '../../components/responses/podcasts_byfeedurl.yaml' 23 | '400': 24 | $ref: '../../components/responses/400.yaml' 25 | '401': 26 | $ref: '../../components/responses/401.yaml' 27 | -------------------------------------------------------------------------------- /docs/styles.css: -------------------------------------------------------------------------------- 1 | .home-logo { 2 | display: block; 3 | } 4 | 5 | .pi-button { 6 | cursor: pointer; 7 | } 8 | 9 | .theme-toggle { 10 | width: 24px; 11 | height: 24px; 12 | display: block; 13 | position: absolute; 14 | right: 10px; 15 | top: 16px; 16 | 17 | background-color: #bbb; 18 | mask-position: center; 19 | -webkit-mask-position: center; 20 | background-repeat: no-repeat; 21 | mask-repeat: no-repeat; 22 | -webkit-mask-repeat: no-repeat; 23 | } 24 | 25 | .theme-toggle[data-theme=light] { 26 | mask-image: url("dark_mode.svg"); 27 | -webkit-mask-image: url("dark_mode.svg"); 28 | } 29 | 30 | .theme-toggle[data-theme=dark] { 31 | mask-image: url("light_mode.svg"); 32 | -webkit-mask-image: url("light_mode.svg"); 33 | } 34 | 35 | .pi-footer { 36 | border-top: 1px solid #424242; 37 | text-align: center; 38 | padding: 4px; 39 | } 40 | 41 | 42 | @media only screen and (min-width: 768px) { 43 | .home-logo { 44 | display: none; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /api_src/paths/recent/episodes.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Recent 4 | summary: Episodes 5 | # language=Markdown 6 | description: | 7 | This call returns the most recent `max` number of episodes globally across the whole index, 8 | in reverse chronological order. 9 | 10 | 11 | Example: https://api.podcastindex.org/api/1.0/recent/episodes?max=7&pretty 12 | operationId: recent/episodes 13 | security: 14 | - $ref: '../../components/security/security.yaml' 15 | parameters: 16 | - $ref: '../../components/parameters/max_recent_episodes.yaml' 17 | - $ref: '../../components/parameters/excludeString.yaml' 18 | - $ref: '../../components/parameters/before.yaml' 19 | - $ref: '../../components/parameters/fulltext.yaml' 20 | - $ref: '../../components/parameters/pretty.yaml' 21 | responses: 22 | '200': 23 | $ref: '../../components/responses/recent_episodes.yaml' 24 | '400': 25 | $ref: '../../components/responses/400.yaml' 26 | '401': 27 | $ref: '../../components/responses/401.yaml' 28 | -------------------------------------------------------------------------------- /api_src/paths/recent/soundbites.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Recent 4 | summary: Soundbites 5 | # language=Markdown 6 | description: | 7 | This call returns the most recent `max` soundbites that the index has discovered. 8 | 9 | 10 | A soundbite consists of an enclosure url, a start time and a duration. 11 | It is documented in the [podcast namespace](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#soundbite). 12 | 13 | 14 | Example: https://api.podcastindex.org/api/1.0/recent/soundbites?pretty 15 | operationId: recent/soundbites 16 | security: 17 | - $ref: '../../components/security/security.yaml' 18 | parameters: 19 | - $ref: '../../components/parameters/max_recent_soundbites.yaml' 20 | - $ref: '../../components/parameters/pretty.yaml' 21 | responses: 22 | '200': 23 | $ref: '../../components/responses/recent_soundbites.yaml' 24 | '400': 25 | $ref: '../../components/responses/400.yaml' 26 | '401': 27 | $ref: '../../components/responses/401.yaml' 28 | -------------------------------------------------------------------------------- /api_src/paths/stats/current.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Stats 4 | summary: Current 5 | # language=Markdown 6 | description: | 7 | Return the most recent index statistics. 8 | 9 | 10 | Hourly statistics can also be access at https://stats.podcastindex.org/hourly_counts.json 11 | For details, see [Stats Hourly Counts](#get-/static/stats/hourly_counts.json). 12 | 13 | 14 | Daily statistics can also be access at https://stats.podcastindex.org/daily_counts.json. 15 | For details, see [Stats Daily Counts](#get-/static/stats/daily_counts.json). 16 | 17 | 18 | Example: https://api.podcastindex.org/api/1.0/stats/current?pretty 19 | operationId: stats/current 20 | security: 21 | - $ref: '../../components/security/security.yaml' 22 | parameters: 23 | - $ref: '../../components/parameters/pretty.yaml' 24 | responses: 25 | '200': 26 | $ref: '../../components/responses/stats_current.yaml' 27 | '400': 28 | $ref: '../../components/responses/400.yaml' 29 | '401': 30 | $ref: '../../components/responses/401.yaml' 31 | -------------------------------------------------------------------------------- /api_src/paths/itunes/search.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Apple Replacement 4 | summary: Search 5 | # language=Markdown 6 | description: | 7 | Replaces the Apple search API but returns data from the Podcast Index database. 8 | 9 | 10 | Note: No API key needed for this endpoint. 11 | 12 | 13 | Example: 14 | 15 | - Apple: https://itunes.apple.com/search?media=podcast&entity=podcast&term=batman 16 | - PodcastIndex: https://api.podcastindex.org/search?term=batman 17 | operationId: search 18 | security: [] # no security required 19 | servers: 20 | - url: https://api.podcastindex.org 21 | description: "URL for Apple Replacement endpoints" 22 | parameters: 23 | - $ref: '../../components/parameters/term_itunes.yaml' 24 | - $ref: '../../components/parameters/pretty.yaml' 25 | responses: 26 | '200': 27 | $ref: '../../components/responses/itunes_replacement.yaml' 28 | '400': 29 | $ref: '../../components/responses/400.yaml' 30 | '401': 31 | $ref: '../../components/responses/401.yaml' 32 | -------------------------------------------------------------------------------- /docs/light_mode.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /api_src/paths/recent/feeds.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Recent 4 | summary: Feeds 5 | # language=Markdown 6 | description: | 7 | This call returns the most recent `max` feeds, in reverse chronological order. 8 | 9 | 10 | Examples: 11 | 12 | - https://api.podcastindex.org/api/1.0/recent/feeds?pretty 13 | - https://api.podcastindex.org/api/1.0/recent/feeds?max=20&cat=102,health&lang=de,ja&pretty 14 | operationId: recent/feeds 15 | security: 16 | - $ref: '../../components/security/security.yaml' 17 | parameters: 18 | - $ref: '../../components/parameters/max_recent_feeds.yaml' 19 | - $ref: '../../components/parameters/since.yaml' 20 | - $ref: '../../components/parameters/lang.yaml' 21 | - $ref: '../../components/parameters/cat.yaml' 22 | - $ref: '../../components/parameters/notcat.yaml' 23 | - $ref: '../../components/parameters/pretty.yaml' 24 | responses: 25 | '200': 26 | $ref: '../../components/responses/recent_feeds.yaml' 27 | '400': 28 | $ref: '../../components/responses/400.yaml' 29 | '401': 30 | $ref: '../../components/responses/401.yaml' 31 | -------------------------------------------------------------------------------- /api_src/paths/episodes/random.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Episodes 4 | summary: Random 5 | # language=Markdown 6 | description: | 7 | This call returns a random batch of episodes, in no specific order. 8 | 9 | 10 | Examples: 11 | 12 | - https://api.podcastindex.org/api/1.0/episodes/random?notcat=News,Religion&lang=en,es&pretty 13 | - https://api.podcastindex.org/api/1.0/episodes/random?max=2&pretty 14 | operationId: episodes/random 15 | security: 16 | - $ref: '../../components/security/security.yaml' 17 | parameters: 18 | - $ref: '../../components/parameters/max_random.yaml' 19 | - $ref: '../../components/parameters/lang.yaml' 20 | - $ref: '../../components/parameters/cat.yaml' 21 | - $ref: '../../components/parameters/notcat.yaml' 22 | - $ref: '../../components/parameters/fulltext.yaml' 23 | - $ref: '../../components/parameters/pretty.yaml' 24 | responses: 25 | '200': 26 | $ref: '../../components/responses/episodes_random.yaml' 27 | '400': 28 | $ref: '../../components/responses/400.yaml' 29 | '401': 30 | $ref: '../../components/responses/401.yaml' 31 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Podcastindex.org 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /api_src/paths/static/stats/music_rss.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Static Data 4 | summary: v4v Music Chart RSS 5 | # language=Markdown 6 | description: | 7 | Contains the ranking of the music tracks played on podcasts that have been boosted the most over the last 7 days. 8 | 9 | Each entry shows the number of listener boosts sent over this time period. The chart is updated hourly. 10 | 11 | 12 | Can be viewed in a browser at https://podcastindex.top/ (https://stats.podcastindex.org/v4vmusic.html). 13 | 14 | 15 | View at: https://stats.podcastindex.org/v4vmusic.rss 16 | 17 | 18 | Also available in [JSON](#get-/static/stats/v4vmusic.json) and [OPML](#get-/static/stats/v4vmusic.opml). 19 | operationId: v4vmusic.rss 20 | security: [ ] # no security required 21 | servers: 22 | - url: 'https://stats.podcastindex.org' 23 | description: "Podcast Index Stats" 24 | responses: 25 | '200': 26 | $ref: '../../../components/responses/static_music_rss.yaml' 27 | '400': 28 | $ref: '../../../components/responses/400_static.yaml' 29 | '404': 30 | $ref: '../../../components/responses/404.yaml' 31 | -------------------------------------------------------------------------------- /api_src/paths/static/stats/music_json.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Static Data 4 | summary: v4v Music Chart JSON 5 | # language=Markdown 6 | description: | 7 | Contains the ranking of the music tracks played on podcasts that have been boosted the most over the last 7 days. 8 | 9 | Each entry shows the number of listener boosts sent over this time period. The chart is updated hourly. 10 | 11 | 12 | Can be viewed in a browser at https://podcastindex.top/ (https://stats.podcastindex.org/v4vmusic.html). 13 | 14 | 15 | View at: https://stats.podcastindex.org/v4vmusic.json 16 | 17 | 18 | Also available in [OPML](#get-/static/stats/v4vmusic.opml) and [RSS](#get-/static/stats/v4vmusic.rss). 19 | operationId: v4vmusic.json 20 | security: [ ] # no security required 21 | servers: 22 | - url: 'https://stats.podcastindex.org' 23 | description: "Podcast Index Stats" 24 | responses: 25 | '200': 26 | $ref: '../../../components/responses/static_music_json.yaml' 27 | '400': 28 | $ref: '../../../components/responses/400_static.yaml' 29 | '404': 30 | $ref: '../../../components/responses/404.yaml' 31 | -------------------------------------------------------------------------------- /api_src/paths/static/stats/music_opml.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Static Data 4 | summary: v4v Music Chart OPML 5 | # language=Markdown 6 | description: | 7 | Contains the ranking of the music tracks played on podcasts that have been boosted the most over the last 7 days. 8 | 9 | Each entry shows the number of listener boosts sent over this time period. The chart is updated hourly. 10 | 11 | 12 | Can be viewed in a browser at https://podcastindex.top/ (https://stats.podcastindex.org/v4vmusic.html). 13 | 14 | 15 | View at: https://stats.podcastindex.org/v4vmusic.opml 16 | 17 | 18 | Also available in [JSON](#get-/static/stats/v4vmusic.json) and [RSS](#get-/static/stats/v4vmusic.rss). 19 | operationId: v4vmusic.opml 20 | security: [ ] # no security required 21 | servers: 22 | - url: 'https://stats.podcastindex.org' 23 | description: "Podcast Index Stats" 24 | responses: 25 | '200': 26 | $ref: '../../../components/responses/static_music_opml.yaml' 27 | '400': 28 | $ref: '../../../components/responses/400_static.yaml' 29 | '404': 30 | $ref: '../../../components/responses/404.yaml' 31 | -------------------------------------------------------------------------------- /api_src/components/parameters/notcat.yaml: -------------------------------------------------------------------------------- 1 | name: notcat 2 | in: query 3 | # language=Markdown 4 | description: | 5 | Use this argument to specify categories of episodes to **NOT** show in the results. 6 | 7 | 8 | Separate multiple categories with commas. 9 | 10 | 11 | You may specify either the Category ID and/or the Category Name. 12 | 13 | 14 | Values are not case sensitive. 15 | 16 | 17 | The `cat` and `notcat` filters can be used together to fine tune a very specific result set. 18 | 19 | 20 | Category numbers and names can be found in the 21 | [Podcast Namespace documentation](https://github.com/Podcastindex-org/podcast-namespace/blob/main/categories.json) 22 | schema: 23 | type: string 24 | examples: 25 | single_name: 26 | value: "News" 27 | description: Single Category Name 28 | single_id: 29 | value: 65 30 | description: Single Category ID 31 | multiple_name: 32 | value: "News,Religion" 33 | description: Multiple Category Names 34 | multiple_id_: 35 | value: "55,65" 36 | description: Multiple Category IDs 37 | multiple_mixed: 38 | value: "News,65" 39 | description: Multiple Categories Mixed Format 40 | -------------------------------------------------------------------------------- /api_src/paths/podcasts/batch/byguid.yaml: -------------------------------------------------------------------------------- 1 | post: 2 | tags: 3 | - Podcasts 4 | summary: Batch By Feed GUID 5 | # language=Markdown 6 | description: | 7 | This call returns everything we know about the feed from the feed's GUID provided in JSON array in the body of the request. 8 | 9 | 10 | The GUID is a unique, global identifier for the podcast. See the namespace spec for 11 | [guid](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#guid) for details. 12 | operationId: podcasts/batch/byguid 13 | security: 14 | - $ref: '../../../components/security/security.yaml' 15 | parameters: 16 | - $ref: '../../../components/parameters/pretty.yaml' 17 | requestBody: 18 | description: Get episode value data 19 | required: true 20 | content: 21 | application/json: 22 | schema: 23 | $ref: '../../../components/schemas/podcasts_batch_byguid.yaml' 24 | responses: 25 | '200': 26 | $ref: '../../../components/responses/podcasts_batch_byguid.yaml' 27 | '400': 28 | $ref: '../../../components/responses/400.yaml' 29 | '401': 30 | $ref: '../../../components/responses/401.yaml' 31 | -------------------------------------------------------------------------------- /api_src/paths/itunes/lookup.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Apple Replacement 4 | summary: Lookup 5 | # language=Markdown 6 | description: | 7 | Replaces the Apple podcast lookup API but returns data from the Podcast Index database. 8 | 9 | 10 | Note: No API key needed for this endpoint. 11 | 12 | 13 | Example: 14 | 15 | - Apple: https://itunes.apple.com/lookup?media=podcast&entity=podcast&id=1636765656 16 | - PodcastIndex: https://api.podcastindex.org/lookup?entity=podcast&id=1636765656 17 | operationId: lookup 18 | security: [] # no security required 19 | servers: 20 | - url: 'https://api.podcastindex.org' 21 | description: "URL for Apple Replacement endpoints" 22 | parameters: 23 | - $ref: '../../components/parameters/id_feed_podcast_itunes.yaml' 24 | - $ref: '../../components/parameters/entity.yaml' 25 | - $ref: '../../components/parameters/pretty.yaml' 26 | responses: 27 | '200': 28 | $ref: '../../components/responses/itunes_replacement.yaml' 29 | '400': 30 | $ref: '../../components/responses/400.yaml' 31 | '401': 32 | $ref: '../../components/responses/401.yaml' 33 | -------------------------------------------------------------------------------- /api_src/components/parameters/cat.yaml: -------------------------------------------------------------------------------- 1 | name: cat 2 | in: query 3 | # language=Markdown 4 | description: | 5 | Use this argument to specify that you **ONLY** want episodes with these categories in the results. 6 | 7 | 8 | Separate multiple categories with commas. 9 | 10 | 11 | You may specify either the Category ID and/or the Category Name. 12 | 13 | 14 | Values are not case sensitive. 15 | 16 | 17 | The `cat` and `notcat` filters can be used together to fine tune a very specific result set. 18 | 19 | 20 | Category numbers and names can be found in the 21 | [Podcast Namespace documentation](https://github.com/Podcastindex-org/podcast-namespace/blob/main/categories.json) 22 | schema: 23 | type: string 24 | examples: 25 | single_name: 26 | value: "News" 27 | description: Single Category Name 28 | single_id: 29 | value: 65 30 | description: Single Category ID 31 | multiple_name: 32 | value: "News,Religion" 33 | description: Multiple Category Names 34 | multiple_id_: 35 | value: "55,65" 36 | description: Multiple Category IDs 37 | multiple_mixed: 38 | value: "News,65" 39 | description: Multiple Categories Mixed Format 40 | -------------------------------------------------------------------------------- /api_src/paths/episodes/bypodcastguid.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Episodes 4 | summary: By Podcast GUID 5 | # language=Markdown 6 | description: | 7 | This call returns all the episodes we know about for this feed from the [Podcast GUID](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#guid). 8 | Episodes are in reverse chronological order. 9 | 10 | 11 | Example: https://api.podcastindex.org/api/1.0/episodes/bypodcastguid?guid=856cd618-7f34-57ea-9b84-3600f1f65e7f&pretty 12 | operationId: episodes/bypodcastguid 13 | security: 14 | - $ref: '../../components/security/security.yaml' 15 | parameters: 16 | - $ref: '../../components/parameters/guid_feed_podcast.yaml' 17 | - $ref: '../../components/parameters/since.yaml' 18 | - $ref: '../../components/parameters/max.yaml' 19 | - $ref: '../../components/parameters/fulltext.yaml' 20 | - $ref: '../../components/parameters/pretty.yaml' 21 | responses: 22 | '200': 23 | $ref: '../../components/responses/episodes_byfeedurl.yaml' 24 | '400': 25 | $ref: '../../components/responses/400.yaml' 26 | '401': 27 | $ref: '../../components/responses/401.yaml' 28 | -------------------------------------------------------------------------------- /api_src/paths/podcasts/byguid.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Podcasts 4 | summary: By GUID 5 | # language=Markdown 6 | description: | 7 | This call returns everything we know about the feed from the feed's GUID. 8 | 9 | 10 | The GUID is a unique, global identifier for the podcast. See the namespace spec for 11 | [guid](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#guid) for details. 12 | 13 | 14 | Examples: 15 | 16 | - https://api.podcastindex.org/api/1.0/podcasts/byguid?guid=9b024349-ccf0-5f69-a609-6b82873eab3c&pretty 17 | - Includes `value` and `funding`: https://api.podcastindex.org/api/1.0/podcasts/byguid?guid=9b024349-ccf0-5f69-a609-6b82873eab3c&pretty 18 | operationId: podcasts/byguid 19 | security: 20 | - $ref: '../../components/security/security.yaml' 21 | parameters: 22 | - $ref: '../../components/parameters/guid_feed_podcast.yaml' 23 | - $ref: '../../components/parameters/pretty.yaml' 24 | responses: 25 | '200': 26 | $ref: '../../components/responses/podcasts_byguid.yaml' 27 | '400': 28 | $ref: '../../components/responses/400.yaml' 29 | '401': 30 | $ref: '../../components/responses/401.yaml' 31 | -------------------------------------------------------------------------------- /api_src/components/schemas/item_podcast_live.yaml: -------------------------------------------------------------------------------- 1 | type: object 2 | properties: 3 | id: 4 | $ref: '../properties/id_episode.yaml' 5 | title: 6 | $ref: '../properties/title_feed.yaml' 7 | link: 8 | $ref: '../properties/link_feed.yaml' 9 | guid: 10 | $ref: '../properties/guid.yaml' 11 | datePublished: 12 | $ref: '../properties/datePublished.yaml' 13 | datePublishedPretty: 14 | $ref: '../properties/datePublishedPretty.yaml' 15 | dateCrawled: 16 | $ref: '../properties/dateCrawled.yaml' 17 | enclosureUrl: 18 | $ref: '../properties/enclosureUrl.yaml' 19 | enclosureType: 20 | $ref: '../properties/enclosureType.yaml' 21 | enclosureLength: 22 | $ref: '../properties/enclosureLength.yaml' 23 | explicit: 24 | $ref: '../properties/explicit_episode.yaml' 25 | image: 26 | $ref: '../properties/image_episode.yaml' 27 | feedItunesId: 28 | $ref: '../properties/itunesId_feed.yaml' 29 | feedImage: 30 | $ref: '../properties/image_feed.yaml' 31 | feedId: 32 | $ref: '../properties/id_feed.yaml' 33 | feedTitle: 34 | $ref: '../properties/title_feed.yaml' 35 | feedLanguage: 36 | $ref: '../properties/language.yaml' 37 | categories: 38 | $ref: '../properties/categories.yaml' 39 | -------------------------------------------------------------------------------- /api_src/paths/value/byfeedid.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Value 4 | summary: By Feed ID 5 | # language=Markdown 6 | description: | 7 | This call returns the information for supporting the podcast via one of the "Value for Value" methods from the 8 | PodcastIndex ID. 9 | 10 | 11 | Additionally, the value block data can be accessed using static JSON files (updated every 15 minutes). 12 | 13 | - Feeds: https://tracking.podcastindex.org/feedValueBlocks.json 14 | - Episodes: https://tracking.podcastindex.org/episodeValueBlocks.json 15 | 16 | 17 | Note: No API key needed for this endpoint. 18 | 19 | 20 | Examples: 21 | 22 | - https://api.podcastindex.org/api/1.0/value/byfeedid?id=920666&pretty 23 | - https://api.podcastindex.org/api/1.0/value/byfeedid?id=779873&pretty 24 | operationId: value/byfeedid 25 | security: [] # no security required 26 | parameters: 27 | - $ref: '../../components/parameters/id_feed_episode_pi_single.yaml' 28 | - $ref: '../../components/parameters/pretty.yaml' 29 | responses: 30 | '200': 31 | $ref: '../../components/responses/value_byfeedid.yaml' 32 | '400': 33 | $ref: '../../components/responses/400.yaml' 34 | '401': 35 | $ref: '../../components/responses/401.yaml' 36 | -------------------------------------------------------------------------------- /api_src/paths/recent/newfeeds.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Recent 4 | summary: New Feeds 5 | # language=Markdown 6 | description: | 7 | This call returns every new feed added to the index over the past 24 hours in reverse chronological order. 8 | 9 | 10 | Examples: 11 | 12 | - https://api.podcastindex.org/api/1.0/recent/newfeeds?pretty 13 | - https://api.podcastindex.org/api/1.0/recent/newfeeds?pretty&since=1613805000 14 | - https://api.podcastindex.org/api/1.0/recent/newfeeds?feedid=2653471&pretty 15 | - https://api.podcastindex.org/api/1.0/recent/newfeeds?feedid=2653471&desc&pretty 16 | operationId: recent/newfeeds 17 | security: 18 | - $ref: '../../components/security/security.yaml' 19 | parameters: 20 | - $ref: '../../components/parameters/max_recent_feeds.yaml' 21 | - $ref: '../../components/parameters/since.yaml' 22 | - $ref: '../../components/parameters/feedid_newfeeds.yaml' 23 | - $ref: '../../components/parameters/desc.yaml' 24 | - $ref: '../../components/parameters/pretty.yaml' 25 | responses: 26 | '200': 27 | $ref: '../../components/responses/recent_newfeeds.yaml' 28 | '400': 29 | $ref: '../../components/responses/400.yaml' 30 | '401': 31 | $ref: '../../components/responses/401.yaml' 32 | -------------------------------------------------------------------------------- /api_src/paths/search/music/byterm.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Search 4 | summary: Search Music Podcasts 5 | # language=Markdown 6 | description: | 7 | This call returns all of the feeds that match the search terms in the `title`, `author` or `owner` of the 8 | where the [medium](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#medium) is `music`. 9 | 10 | 11 | Example: https://api.podcastindex.org/api/1.0/search/music/byterm?q=able+kirby&pretty 12 | operationId: search/music/byterm 13 | security: 14 | - $ref: '../../../components/security/security.yaml' 15 | parameters: 16 | - $ref: '../../../components/parameters/q.yaml' 17 | - $ref: '../../../components/parameters/val.yaml' 18 | - $ref: '../../../components/parameters/aponly.yaml' 19 | - $ref: '../../../components/parameters/max.yaml' 20 | - $ref: '../../../components/parameters/clean.yaml' 21 | - $ref: '../../../components/parameters/fulltext.yaml' 22 | - $ref: '../../../components/parameters/pretty.yaml' 23 | responses: 24 | '200': 25 | $ref: '../../../components/responses/search_byterm.yaml' 26 | '400': 27 | $ref: '../../../components/responses/400.yaml' 28 | '401': 29 | $ref: '../../../components/responses/401.yaml' 30 | -------------------------------------------------------------------------------- /api_src/paths/value/byfeedurl.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Value 4 | summary: By Feed URL 5 | # language=Markdown 6 | description: | 7 | This call returns the information for supporting the podcast via one of the "Value for Value" methods from feed URL. 8 | 9 | 10 | Additionally, the value block data can be accessed using static JSON files (updated every 15 minutes). 11 | 12 | - Feeds: https://tracking.podcastindex.org/feedValueBlocks.json 13 | - Episodes: https://tracking.podcastindex.org/episodeValueBlocks.json 14 | 15 | 16 | Note: No API key needed for this endpoint. 17 | 18 | 19 | Examples: 20 | 21 | - https://api.podcastindex.org/api/1.0/value/byfeedurl?url=https://mp3s.nashownotes.com/pc20rss.xml&pretty 22 | - https://api.podcastindex.org/api/1.0/value/byfeedurl?url=https://lespoesiesdheloise.fr/@heloise/feed.xml&pretty 23 | operationId: value/byfeedurl 24 | security: [] # no security required 25 | parameters: 26 | - $ref: '../../components/parameters/url.yaml' 27 | - $ref: '../../components/parameters/pretty.yaml' 28 | responses: 29 | '200': 30 | $ref: '../../components/responses/value_byfeedurl.yaml' 31 | '400': 32 | $ref: '../../components/responses/400.yaml' 33 | '401': 34 | $ref: '../../components/responses/401.yaml' 35 | -------------------------------------------------------------------------------- /api_src/paths/search/byperson.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Search 4 | summary: Search Episodes by Person 5 | # language=Markdown 6 | description: | 7 | This call returns all of the episodes where the specified person is mentioned. 8 | 9 | 10 | It searches the following fields: 11 | 12 | - Person tags 13 | - Episode title 14 | - Episode description 15 | - Feed owner 16 | - Feed author 17 | 18 | 19 | Examples: 20 | 21 | - https://api.podcastindex.org/api/1.0/search/byperson?q=adam%20curry&pretty 22 | - https://api.podcastindex.org/api/1.0/search/byperson?q=Martin+Mouritzen&pretty 23 | - https://api.podcastindex.org/api/1.0/search/byperson?q=Klaus+Schwab&pretty 24 | operationId: search/byperson 25 | security: 26 | - $ref: '../../components/security/security.yaml' 27 | parameters: 28 | - $ref: '../../components/parameters/q_person.yaml' 29 | - $ref: '../../components/parameters/max.yaml' 30 | - $ref: '../../components/parameters/fulltext.yaml' 31 | - $ref: '../../components/parameters/pretty.yaml' 32 | responses: 33 | '200': 34 | $ref: '../../components/responses/search_byperson.yaml' 35 | '400': 36 | $ref: '../../components/responses/400.yaml' 37 | '401': 38 | $ref: '../../components/responses/401.yaml' 39 | -------------------------------------------------------------------------------- /api_src/paths/search/bytitle.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Search 4 | summary: Search Podcasts by Title 5 | # language=Markdown 6 | description: | 7 | This call returns all of the feeds where the `title` of the feed matches the search term (ignores case). 8 | 9 | 10 | Example "everything everywhere daily" will match the podcast 11 | [Everything Everywhere Daily](https://podcastindex.org/podcast/437685) by "everything everywhere" will not. 12 | 13 | 14 | Example: https://api.podcastindex.org/api/1.0/search/bytitle?q=everything+everywhere+daily&pretty 15 | operationId: search/bytitle 16 | security: 17 | - $ref: '../../components/security/security.yaml' 18 | parameters: 19 | - $ref: '../../components/parameters/q.yaml' 20 | - $ref: '../../components/parameters/val.yaml' 21 | - $ref: '../../components/parameters/max.yaml' 22 | - $ref: '../../components/parameters/clean.yaml' 23 | - $ref: '../../components/parameters/fulltext.yaml' 24 | - $ref: '../../components/parameters/pretty.yaml' 25 | - $ref: '../../components/parameters/similar.yaml' 26 | responses: 27 | '200': 28 | $ref: '../../components/responses/search_byterm.yaml' 29 | '400': 30 | $ref: '../../components/responses/400.yaml' 31 | '401': 32 | $ref: '../../components/responses/401.yaml' 33 | -------------------------------------------------------------------------------- /api_src/paths/static/tracking/current.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Static Data 4 | summary: Current 5 | # language=Markdown 6 | description: | 7 | This call returns every new feed and episode added to the index over the past 24 hours in reverse chronological order. 8 | 9 | 10 | This is similar to `/recent/feeds` but uses the date the feed was found by the index rather than the feed's 11 | internal timestamp. 12 | 13 | 14 | Similar data can also be retrieved using the API endpoint [recent/data](#get-/recent/data). 15 | 16 | 17 | Access at: https://tracking.podcastindex.org/current 18 | 19 | 20 | The prior 24 hours of data (going backwards until all tracked data is received) can be accessed using the timestamp 21 | of the previous data set. This is found in the `previousTrackingUrl`. 22 | The format of these prior data sets follows the format described below. 23 | operationId: current 24 | security: [] # no security required 25 | servers: 26 | - url: 'https://tracking.podcastindex.org' 27 | description: "Podcast Index Tracking" 28 | responses: 29 | '200': 30 | $ref: '../../../components/responses/static_current.yaml' 31 | '400': 32 | $ref: '../../../components/responses/400_static.yaml' 33 | '404': 34 | $ref: '../../../components/responses/404.yaml' 35 | -------------------------------------------------------------------------------- /api_src/paths/episodes/byguid.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Episodes 4 | summary: By GUID 5 | # language=Markdown 6 | description: | 7 | Get all the metadata for a single episode by passing its guid and the feed id or URL. 8 | 9 | 10 | The `feedid`, `feedurl`, or `podcastguid` is required. 11 | 12 | 13 | Examples: 14 | 15 | - Search using Podcast Index feed ID: https://api.podcastindex.org/api/1.0/episodes/byguid?guid=PC2084&feedid=920666&pretty 16 | - Search using feed URL: https://api.podcastindex.org/api/1.0/episodes/byguid?guid=PC2084&feedurl=http://mp3s.nashownotes.com/pc20rss.xml&pretty 17 | operationId: episodes/byguid 18 | security: 19 | - $ref: '../../components/security/security.yaml' 20 | parameters: 21 | - $ref: '../../components/parameters/guid_episode.yaml' 22 | - $ref: '../../components/parameters/feedurl.yaml' 23 | - $ref: '../../components/parameters/feedid.yaml' 24 | - $ref: '../../components/parameters/podcastguid_optional.yaml' 25 | - $ref: '../../components/parameters/fulltext.yaml' 26 | - $ref: '../../components/parameters/pretty.yaml' 27 | responses: 28 | '200': 29 | $ref: '../../components/responses/episodes_byguid.yaml' 30 | '400': 31 | $ref: '../../components/responses/400.yaml' 32 | '401': 33 | $ref: '../../components/responses/401.yaml' 34 | -------------------------------------------------------------------------------- /api_src/paths/static/stats/v4v.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Static Data 4 | summary: v4v Sats 5 | # language=Markdown 6 | description: | 7 | Contains the raw data used to populate the graphs at https://stats.podcastindex.org/v4v. 8 | 9 | This is a look at the total [sats](https://www.investopedia.com/terms/s/satoshi.asp) flowing through the Value4Value 10 | Lightning podcasting economy over various periods of time. 11 | 12 | We calculate this data based on our visibility as a one percent voluntary split on Podcastindex.org api 13 | calls. Therefore, the true numbers could be higher, but they cannot be lower than listed here. This represents our 14 | best approximation of how many sats are flowing across the entire ecosystem from listeners to creators, guests (via 15 | episode splits), platforms, services and apps. 16 | 17 | 18 | View at: https://stats.podcastindex.org/chart-data.json 19 | operationId: chart-data.json 20 | security: [ ] # no security required 21 | servers: 22 | - url: 'https://stats.podcastindex.org' 23 | description: "Podcast Index Stats" 24 | responses: 25 | '200': 26 | $ref: '../../../components/responses/static_sats_data.yaml' 27 | '400': 28 | $ref: '../../../components/responses/400_static.yaml' 29 | '404': 30 | $ref: '../../../components/responses/404.yaml' 31 | -------------------------------------------------------------------------------- /api_src/paths/episodes/byfeedurl.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Episodes 4 | summary: By Feed URL 5 | # language=Markdown 6 | description: | 7 | This call returns all the episodes we know about for this feed from the feed URL. 8 | Episodes are in reverse chronological order. 9 | 10 | 11 | Examples: 12 | 13 | - https://api.podcastindex.org/api/1.0/episodes/byfeedurl?url=https://feeds.theincomparable.com/batmanuniversity&pretty 14 | - Includes `persons`: https://api.podcastindex.org/api/1.0/episodes/byfeedurl?url=https://engineered.network/pragmatic/feed/index.xml&pretty 15 | - Includes `value`: https://api.podcastindex.org/api/1.0/episodes/byfeedurl?url=https://closing-the-loop.github.io/feed.xml&pretty 16 | operationId: episodes/byfeedurl 17 | security: 18 | - $ref: '../../components/security/security.yaml' 19 | parameters: 20 | - $ref: '../../components/parameters/url.yaml' 21 | - $ref: '../../components/parameters/since.yaml' 22 | - $ref: '../../components/parameters/max.yaml' 23 | - $ref: '../../components/parameters/fulltext.yaml' 24 | - $ref: '../../components/parameters/pretty.yaml' 25 | responses: 26 | '200': 27 | $ref: '../../components/responses/episodes_byfeedurl.yaml' 28 | '400': 29 | $ref: '../../components/responses/400.yaml' 30 | '401': 31 | $ref: '../../components/responses/401.yaml' 32 | -------------------------------------------------------------------------------- /api_src/paths/recent/data.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Recent 4 | summary: Recent Data 5 | # language=Markdown 6 | description: | 7 | This call returns every new feed and episode added to the index over the past 24 hours in reverse chronological order. 8 | 9 | 10 | This is similar to `/recent/feeds` but uses the date the feed was found by the index rather than the feed's 11 | internal timestamp. 12 | 13 | 14 | Similar data can also be accessed using object storage root url https://tracking.podcastindex.org/current 15 | For details, see [Current](#get-/static/tracking/current). 16 | 17 | 18 | Examples: 19 | 20 | - https://api.podcastindex.org/api/1.0/recent/data?pretty 21 | - https://api.podcastindex.org/api/1.0/recent/data?pretty&max=10 22 | - https://api.podcastindex.org/api/1.0/recent/data?pretty&max=10&since=1671164867 23 | operationId: recent/data 24 | security: 25 | - $ref: '../../components/security/security.yaml' 26 | parameters: 27 | - $ref: '../../components/parameters/max_recent_data.yaml' 28 | - $ref: '../../components/parameters/since.yaml' 29 | - $ref: '../../components/parameters/pretty.yaml' 30 | responses: 31 | '200': 32 | $ref: '../../components/responses/recent_data.yaml' 33 | '400': 34 | $ref: '../../components/responses/400.yaml' 35 | '401': 36 | $ref: '../../components/responses/401.yaml' 37 | -------------------------------------------------------------------------------- /api_src/paths/episodes/byitunesid.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Episodes 4 | summary: By iTunes ID 5 | # language=Markdown 6 | description: | 7 | This call returns all the episodes we know about for this feed from the iTunes ID. 8 | Episodes are in reverse chronological order. 9 | 10 | 11 | When using the `enclosure` parameter, only the episode matching the URL is returned. 12 | 13 | 14 | Examples: 15 | 16 | - https://api.podcastindex.org/api/1.0/episodes/byitunesid?id=1441923632&pretty 17 | - Using `enclosure`: https://api.podcastindex.org/api/1.0/episodes/byitunesid?id=269169796&enclosure=https://op3.dev/e/mp3s.nashownotes.com/NA-1551-2023-04-30-Final.mp3&pretty 18 | operationId: episodes/byitunesid 19 | security: 20 | - $ref: '../../components/security/security.yaml' 21 | parameters: 22 | - $ref: '../../components/parameters/id_feed_podcast_itunes.yaml' 23 | - $ref: '../../components/parameters/since.yaml' 24 | - $ref: '../../components/parameters/max.yaml' 25 | - $ref: '../../components/parameters/enclosure.yaml' 26 | - $ref: '../../components/parameters/fulltext.yaml' 27 | - $ref: '../../components/parameters/pretty.yaml' 28 | responses: 29 | '200': 30 | $ref: '../../components/responses/episodes_byitunesid.yaml' 31 | '400': 32 | $ref: '../../components/responses/400.yaml' 33 | '401': 34 | $ref: '../../components/responses/401.yaml' 35 | -------------------------------------------------------------------------------- /api_src/components/schemas/item_podcast_recent.yaml: -------------------------------------------------------------------------------- 1 | type: object 2 | properties: 3 | id: 4 | $ref: '../properties/id_episode.yaml' 5 | title: 6 | $ref: '../properties/title_feed.yaml' 7 | link: 8 | $ref: '../properties/link_feed.yaml' 9 | description: 10 | $ref: '../properties/description_episode.yaml' 11 | guid: 12 | $ref: '../properties/guid.yaml' 13 | datePublished: 14 | $ref: '../properties/datePublished.yaml' 15 | datePublishedPretty: 16 | $ref: '../properties/datePublishedPretty.yaml' 17 | dateCrawled: 18 | $ref: '../properties/dateCrawled.yaml' 19 | enclosureUrl: 20 | $ref: '../properties/enclosureUrl.yaml' 21 | enclosureType: 22 | $ref: '../properties/enclosureType.yaml' 23 | enclosureLength: 24 | $ref: '../properties/enclosureLength.yaml' 25 | explicit: 26 | $ref: '../properties/explicit_episode.yaml' 27 | episode: 28 | $ref: '../properties/episode_number.yaml' 29 | episodeType: 30 | $ref: '../properties/episodeType.yaml' 31 | season: 32 | $ref: '../properties/season.yaml' 33 | image: 34 | $ref: '../properties/image_episode.yaml' 35 | feedItunesId: 36 | $ref: '../properties/itunesId_feed.yaml' 37 | feedImage: 38 | $ref: '../properties/image_feed.yaml' 39 | feedId: 40 | $ref: '../properties/id_feed.yaml' 41 | feedTitle: 42 | $ref: '../properties/title_feed.yaml' 43 | feedLanguage: 44 | $ref: '../properties/language.yaml' 45 | -------------------------------------------------------------------------------- /api_src/components/responses/static_music_opml.yaml: -------------------------------------------------------------------------------- 1 | # language=markdown 2 | description: | 3 | The hourly Top X music 4 | 5 | 6 | Data follows the [OPML spec](https://opml.org/spec2.opml) with additions of 7 | [Podcast Namespace](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md) attributes. 8 | 9 | 10 | Example `outline` entry: 11 | 12 | ```xml 13 | 14 | ``` 15 | 16 | Attributes: 17 | 18 | - `text` 19 | - Title of Track 20 | - Example: `"To be in Nashville"` 21 | - `xmlUrl` 22 | - Feed URL track is in 23 | - Example: `"https://files.heycitizen.xyz/Songs/Albums/The-Heycitizen-Experience/the heycitizen experience.xml"` 24 | - `podcast:feedGuid` 25 | - The GUID from the `podcast:guid` tag in the feed. This value is a unique, global identifier for the podcast. 26 | - See the namespace spec for [guid](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#guid) for details. 27 | - Example: `"a2d2e313-9cbd-5169-b89c-ab07b33ecc33"` 28 | - `podcast:itemGuid` 29 | - The unique identifier for the episode 30 | - Example: `"ac34129c-c78a-463e-a64f-01405e1f2be4"` 31 | content: 32 | application/xml: 33 | schema: 34 | type: object 35 | -------------------------------------------------------------------------------- /api_src/components/responses/static_music_json.yaml: -------------------------------------------------------------------------------- 1 | description: The hourly Top X music 2 | content: 3 | application/json: 4 | schema: 5 | type: object 6 | properties: 7 | title: 8 | description: Title of music 9 | type: string 10 | example: "Podcasting 2.0 Top 100 (Music)" 11 | description: 12 | description: Description of object 13 | type: string 14 | example: "An hourly Top 100 music playlist." 15 | timestamp: 16 | description: Date updated 17 | type: integer 18 | example: 1724465107 19 | items: 20 | description: Array of top X music feeds 21 | type: object 22 | properties: 23 | rank: 24 | description: Rank in chart 25 | type: integer 26 | example: 1 27 | boosts: 28 | description: Number of boosts 29 | type: string 30 | example: "42" 31 | title: 32 | description: Title of Track 33 | type: string 34 | example: "To be in Nashville" 35 | image: 36 | $ref: "../properties/image_episode.yaml" 37 | feedId: 38 | $ref: "../properties/id_feed.yaml" 39 | feedUrl: 40 | $ref: "../properties/url_feed.yaml" 41 | feedGuid: 42 | $ref: "../properties/podcastguid.yaml" 43 | itemGuid: 44 | $ref: "../properties/guid.yaml" 45 | 46 | -------------------------------------------------------------------------------- /api_src/components/schemas/item_podcast_random.yaml: -------------------------------------------------------------------------------- 1 | type: object 2 | properties: 3 | id: 4 | $ref: '../properties/id_episode.yaml' 5 | title: 6 | $ref: '../properties/title_feed.yaml' 7 | link: 8 | $ref: '../properties/link_feed.yaml' 9 | description: 10 | $ref: '../properties/description_episode.yaml' 11 | guid: 12 | $ref: '../properties/guid.yaml' 13 | datePublished: 14 | $ref: '../properties/datePublished.yaml' 15 | datePublishedPretty: 16 | $ref: '../properties/datePublishedPretty.yaml' 17 | dateCrawled: 18 | $ref: '../properties/dateCrawled.yaml' 19 | enclosureUrl: 20 | $ref: '../properties/enclosureUrl.yaml' 21 | enclosureType: 22 | $ref: '../properties/enclosureType.yaml' 23 | enclosureLength: 24 | $ref: '../properties/enclosureLength.yaml' 25 | explicit: 26 | $ref: '../properties/explicit_episode.yaml' 27 | episode: 28 | $ref: '../properties/episode_number.yaml' 29 | episodeType: 30 | $ref: '../properties/episodeType.yaml' 31 | season: 32 | $ref: '../properties/season.yaml' 33 | image: 34 | $ref: '../properties/image_episode.yaml' 35 | feedItunesId: 36 | $ref: '../properties/itunesId_feed.yaml' 37 | feedImage: 38 | $ref: '../properties/image_feed.yaml' 39 | feedId: 40 | $ref: '../properties/id_feed.yaml' 41 | feedTitle: 42 | $ref: '../properties/title_feed.yaml' 43 | feedLanguage: 44 | $ref: '../properties/language.yaml' 45 | categories: 46 | $ref: '../properties/categories.yaml' 47 | chaptersUrl: 48 | $ref: '../properties/chaptersUrl.yaml' 49 | -------------------------------------------------------------------------------- /api_src/paths/value/batch/byepisodeguid.yaml: -------------------------------------------------------------------------------- 1 | post: 2 | tags: 3 | - Value 4 | summary: Batch By Episode GUID 5 | # language=Markdown 6 | description: | 7 | This call returns the information for supporting the podcast episode via one of the "Value for Value" methods from 8 | a JSON object containing one or more podcast GUID and one or more episode GUID for the podcast. 9 | 10 | 11 | The JSON object key shall be the `podcastguid` from the `podcast:guid` tag in the feed. 12 | This value is a unique, global identifier for the podcast. See the namespace spec for 13 | [guid](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#guid) for details. 14 | 15 | 16 | The value of the `podcastguid` shall be an array of `episodeguid` values. 17 | This is the unique guid specified for the `` in the feed but may not be globally unique. 18 | 19 | 20 | Note: No API key needed for this endpoint. 21 | operationId: value/batch/byepisodeguid 22 | security: [] # no security required 23 | parameters: 24 | - $ref: '../../../components/parameters/pretty.yaml' 25 | requestBody: 26 | description: Get episode value data 27 | required: true 28 | content: 29 | application/json: 30 | schema: 31 | $ref: '../../../components/schemas/value_batch_byepisodeguid.yaml' 32 | responses: 33 | '200': 34 | $ref: '../../../components/responses/value_batch_byepisodeguid.yaml' 35 | '400': 36 | $ref: '../../../components/responses/400.yaml' 37 | '401': 38 | $ref: '../../../components/responses/401.yaml' 39 | -------------------------------------------------------------------------------- /api_src/paths/value/byepisodeguid.yaml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Value 4 | summary: By Episode GUID 5 | # language=Markdown 6 | description: | 7 | This call returns the information for supporting the podcast episode via one of the "Value for Value" methods from 8 | podcast GUID and the episode GUID. 9 | 10 | 11 | The `podcastguid` is the GUID from the `podcast:guid` tag in the feed. This value is a unique, global identifier 12 | for the podcast. See the namespace spec for 13 | [guid](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#guid) for details. 14 | 15 | 16 | The `episodeguid` is the unique guid specified for the `` in the feed but may not be globally unique. 17 | 18 | 19 | Note: No API key needed for this endpoint. 20 | 21 | 22 | Examples: 23 | 24 | - https://api.podcastindex.org/api/1.0/value/byepisodeguid?podcastguid=917393e3-1b1e-5cef-ace4-edaa54e1f810&episodeguid=PC20143&pretty 25 | - https://api.podcastindex.org/api/1.0/value/byepisodeguid?podcastguid=c73b1a23-1c28-5edb-94c3-10d1745d0877&episodeguid=bdea6759-a7b6-4c0d-9d1e-acca3133f4a9&pretty 26 | operationId: value/byepisodeguid 27 | security: [] # no security required 28 | parameters: 29 | - $ref: '../../components/parameters/podcastguid.yaml' 30 | - $ref: '../../components/parameters/episodeguid.yaml' 31 | - $ref: '../../components/parameters/pretty.yaml' 32 | responses: 33 | '200': 34 | $ref: '../../components/responses/value_byepisodeguid.yaml' 35 | '400': 36 | $ref: '../../components/responses/400.yaml' 37 | '401': 38 | $ref: '../../components/responses/401.yaml' 39 | -------------------------------------------------------------------------------- /api_src/paths/add/batch/byfeedurl.yaml: -------------------------------------------------------------------------------- 1 | post: 2 | tags: 3 | - Add 4 | summary: By Feed URL Batch 5 | # language=Markdown 6 | description: | 7 | This call adds multiple feed urls at once. 8 | 9 | 10 | It returns an array listing the results of each one. If the feed existed already, or if it was added, you will get 11 | back its PodcastIndex.org feed id. If we have linkage to an iTunes ID for this feed it will be returned as well. 12 | 13 | 14 | There are also "error" and "valid" properties returned. A false in the "valid" property indicates the feed url was 15 | structurally invalid. A true in the "error" property indicates something went wrong internally while adding the feed. 16 | 17 | 18 | **NOTE**: this endpoint requires an API Key with the **publisher** permission. 19 | 20 | 21 | Example: https://api.podcastindex.org/api/1.0/add/batch/byfeedurl?pretty 22 | operationId: add/batch/byfeedurl 23 | security: 24 | - $ref: '../../../components/security/security.yaml' 25 | parameters: 26 | - $ref: '../../../components/parameters/pretty.yaml' 27 | requestBody: 28 | # language=Markdown 29 | description: | 30 | List of Feed URLs to add 31 | required: true 32 | content: 33 | application/x-www-form-urlencoded: 34 | schema: 35 | type: array 36 | items: 37 | type: string 38 | format: URL 39 | # TODO: what is the actual format since this cannot be tested 40 | responses: 41 | '200': 42 | $ref: '../../../components/responses/add_byfeedurl.yaml' 43 | '400': 44 | $ref: '../../../components/responses/add_batch_byfeedurl_400.yaml' 45 | '401': 46 | $ref: '../../../components/responses/401.yaml' 47 | -------------------------------------------------------------------------------- /api_src/components/schemas/item_search_byperson.yaml: -------------------------------------------------------------------------------- 1 | type: object 2 | properties: 3 | id: 4 | $ref: '../properties/id_episode.yaml' 5 | title: 6 | $ref: '../properties/title_episode.yaml' 7 | link: 8 | $ref: '../properties/link_feed.yaml' 9 | description: 10 | $ref: '../properties/description_episode.yaml' 11 | guid: 12 | $ref: '../properties/guid.yaml' 13 | datePublished: 14 | $ref: '../properties/datePublished.yaml' 15 | dateCrawled: 16 | $ref: '../properties/dateCrawled.yaml' 17 | enclosureUrl: 18 | $ref: '../properties/enclosureUrl.yaml' 19 | enclosureType: 20 | $ref: '../properties/enclosureType.yaml' 21 | enclosureLength: 22 | $ref: '../properties/enclosureLength.yaml' 23 | duration: 24 | $ref: '../properties/duration.yaml' 25 | explicit: 26 | $ref: '../properties/explicit_episode.yaml' 27 | episode: 28 | $ref: '../properties/episode_number.yaml' 29 | episodeType: 30 | $ref: '../properties/episodeType.yaml' 31 | season: 32 | $ref: '../properties/season.yaml' 33 | image: 34 | $ref: '../properties/image_episode.yaml' 35 | feedItunesId: 36 | $ref: '../properties/itunesId_feed.yaml' 37 | feedImage: 38 | $ref: '../properties/image_feed.yaml' 39 | feedId: 40 | $ref: '../properties/id_feed.yaml' 41 | feedUrl: 42 | $ref: '../properties/url_feed.yaml' 43 | feedAuthor: 44 | $ref: '../properties/author.yaml' 45 | feedTitle: 46 | $ref: '../properties/title_feed.yaml' 47 | feedLanguage: 48 | $ref: '../properties/language.yaml' 49 | chaptersUrl: 50 | $ref: '../properties/chaptersUrl.yaml' 51 | transcriptUrl: 52 | $ref: '../properties/transcriptUrl.yaml' 53 | transcripts: 54 | $ref: '../properties/transcripts.yaml' 55 | -------------------------------------------------------------------------------- /api_src/components/properties/feed_itunes.yaml: -------------------------------------------------------------------------------- 1 | # language=Markdown 2 | description: | 3 | Known details of podcast feed 4 | type: object 5 | properties: 6 | id: 7 | $ref: '../properties/id_feed.yaml' 8 | podcastGuid: 9 | $ref: '../properties/podcastguid.yaml' 10 | title: 11 | $ref: '../properties/title_feed.yaml' 12 | url: 13 | $ref: '../properties/url_feed.yaml' 14 | originalUrl: 15 | $ref: '../properties/originalUrl.yaml' 16 | link: 17 | $ref: '../properties/link_feed.yaml' 18 | description: 19 | $ref: '../properties/description_feed.yaml' 20 | author: 21 | $ref: '../properties/author.yaml' 22 | ownerName: 23 | $ref: '../properties/ownerName.yaml' 24 | image: 25 | $ref: '../properties/image_feed.yaml' 26 | artwork: 27 | $ref: '../properties/artwork.yaml' 28 | lastUpdateTime: 29 | $ref: '../properties/lastUpdateTime.yaml' 30 | lastCrawlTime: 31 | $ref: '../properties/lastCrawlTime.yaml' 32 | lastParseTime: 33 | $ref: '../properties/lastParseTime.yaml' 34 | lastGoodHttpStatusTime: 35 | $ref: '../properties/lastGoodHttpStatusTime.yaml' 36 | lastHttpStatus: 37 | $ref: '../properties/lastHttpStatus.yaml' 38 | contentType: 39 | $ref: '../properties/contentType.yaml' 40 | itunesId: 41 | $ref: '../properties/itunesId_feed.yaml' 42 | generator: 43 | $ref: '../properties/generator.yaml' 44 | language: 45 | $ref: '../properties/language.yaml' 46 | type: 47 | $ref: '../properties/type.yaml' 48 | dead: 49 | $ref: '../properties/dead.yaml' 50 | episodeCount: 51 | $ref: '../properties/episodeCount.yaml' 52 | crawlErrors: 53 | $ref: '../properties/crawlErrors.yaml' 54 | parseErrors: 55 | $ref: '../properties/parseErrors.yaml' 56 | categories: 57 | $ref: '../properties/categories.yaml' 58 | locked: 59 | $ref: '../properties/locked.yaml' 60 | funding: 61 | $ref: '../properties/funding.yaml' 62 | --------------------------------------------------------------------------------