mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-24 23:38:56 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			394 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			394 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| paths:
 | |
|   /api/podcasts:
 | |
|     post:
 | |
|       summary: Create a new podcast
 | |
|       operationId: createPodcast
 | |
|       tags:
 | |
|         - Podcasts
 | |
|       requestBody:
 | |
|         required: true
 | |
|         content:
 | |
|           application/json:
 | |
|             schema:
 | |
|               $ref: '../objects/mediaTypes/Podcast.yaml#/components/schemas/Podcast'
 | |
|       responses:
 | |
|         200:
 | |
|           description: Successfully created a podcast
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 $ref: '../objects/mediaTypes/Podcast.yaml#/components/schemas/Podcast'
 | |
|         400:
 | |
|           description: Bad request
 | |
|         403:
 | |
|           description: Forbidden
 | |
|         404:
 | |
|           description: Not found
 | |
| 
 | |
|   /api/podcasts/feed:
 | |
|     post:
 | |
|       summary: Get podcast feed
 | |
|       operationId: getPodcastFeed
 | |
|       tags:
 | |
|         - Podcasts
 | |
|       requestBody:
 | |
|         required: true
 | |
|         content:
 | |
|           application/json:
 | |
|             schema:
 | |
|               type: object
 | |
|               properties:
 | |
|                 rssFeed:
 | |
|                   type: string
 | |
|                   description: The RSS feed URL of the podcast
 | |
|       responses:
 | |
|         200:
 | |
|           description: Successfully retrieved podcast feed
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 type: object
 | |
|                 properties:
 | |
|                   podcast:
 | |
|                     $ref: '../objects/mediaTypes/Podcast.yaml#/components/schemas/Podcast'
 | |
|         400:
 | |
|           description: Bad request
 | |
|         403:
 | |
|           description: Forbidden
 | |
|         404:
 | |
|           description: Not found
 | |
| 
 | |
|   /api/podcasts/opml/parse:
 | |
|     post:
 | |
|       summary: Get feeds from OPML text
 | |
|       description: Parse OPML text and return an array of feeds
 | |
|       operationId: getFeedsFromOPMLText
 | |
|       tags:
 | |
|         - Podcasts
 | |
|       requestBody:
 | |
|         content:
 | |
|           application/json:
 | |
|             schema:
 | |
|               type: object
 | |
|               properties:
 | |
|                 opmlText:
 | |
|                   type: string
 | |
|       responses:
 | |
|         '200':
 | |
|           description: Successfully parsed OPML text and returned feeds
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 type: object
 | |
|                 properties:
 | |
|                   feeds:
 | |
|                     type: array
 | |
|                     items:
 | |
|                       type: object
 | |
|                       properties:
 | |
|                         title:
 | |
|                           type: string
 | |
|                         feedUrl:
 | |
|                           type: string
 | |
|         '400':
 | |
|           description: Bad request, OPML text not provided
 | |
|         '403':
 | |
|           description: Forbidden, user is not admin
 | |
|   /api/podcasts/opml/create:
 | |
|     post:
 | |
|       summary: Bulk create podcasts from OPML feed URLs
 | |
|       operationId: bulkCreatePodcastsFromOpmlFeedUrls
 | |
|       tags:
 | |
|         - Podcasts
 | |
|       requestBody:
 | |
|         content:
 | |
|           application/json:
 | |
|             schema:
 | |
|               type: object
 | |
|               properties:
 | |
|                 feeds:
 | |
|                   type: array
 | |
|                   items:
 | |
|                     type: string
 | |
|                 libraryId:
 | |
|                   $ref: '../objects/Library.yaml#/components/schemas/libraryId'
 | |
|                 folderId:
 | |
|                   $ref: '../objects/Folder.yaml#/components/schemas/folderId'
 | |
|                 autoDownloadEpisodes:
 | |
|                   $ref: '../objects/mediaTypes/Podcast.yaml#/components/schemas/autoDownloadEpisodes'
 | |
|       responses:
 | |
|         '200':
 | |
|           description: Successfully created podcasts from feed URLs
 | |
|         '400':
 | |
|           description: Bad request, invalid request body
 | |
|         '403':
 | |
|           description: Forbidden, user is not admin
 | |
|         '404':
 | |
|           description: Folder not found
 | |
| 
 | |
|   /api/podcasts/{id}/checknew:
 | |
|     parameters:
 | |
|       - name: id
 | |
|         in: path
 | |
|         description: Podcast ID
 | |
|         required: true
 | |
|         schema:
 | |
|           $ref: '../objects/mediaTypes/Podcast.yaml#/components/schemas/podcastId'
 | |
| 
 | |
|     get:
 | |
|       summary: Check and download new episodes
 | |
|       operationId: checkNewEpisodes
 | |
|       tags:
 | |
|         - Podcasts
 | |
|       parameters:
 | |
|         - name: limit
 | |
|           in: query
 | |
|           description: Maximum number of episodes to download
 | |
|           required: false
 | |
|           schema:
 | |
|             type: integer
 | |
|       responses:
 | |
|         200:
 | |
|           description: Successfully checked and downloaded new episodes
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 type: object
 | |
|                 properties:
 | |
|                   episodes:
 | |
|                     type: array
 | |
|                     items:
 | |
|                       $ref: '../objects/entities/PodcastEpisode.yaml#/components/schemas/PodcastEpisode'
 | |
|         403:
 | |
|           description: Forbidden
 | |
|         404:
 | |
|           description: Not found
 | |
|         500:
 | |
|           description: Server error
 | |
| 
 | |
|   /api/podcasts/{id}/clear-queue:
 | |
|     parameters:
 | |
|       - name: id
 | |
|         in: path
 | |
|         description: Podcast ID
 | |
|         required: true
 | |
|         schema:
 | |
|           $ref: '../objects/mediaTypes/Podcast.yaml#/components/schemas/podcastId'
 | |
| 
 | |
|     get:
 | |
|       summary: Clear episode download queue
 | |
|       operationId: clearEpisodeDownloadQueue
 | |
|       tags:
 | |
|         - Podcasts
 | |
|       responses:
 | |
|         200:
 | |
|           description: Successfully cleared download queue
 | |
|         403:
 | |
|           description: Forbidden
 | |
| 
 | |
|   /api/podcasts/{id}/downloads:
 | |
|     parameters:
 | |
|       - name: id
 | |
|         in: path
 | |
|         description: Podcast ID
 | |
|         required: true
 | |
|         schema:
 | |
|           $ref: '../objects/mediaTypes/Podcast.yaml#/components/schemas/podcastId'
 | |
| 
 | |
|     get:
 | |
|       summary: Get episode downloads
 | |
|       operationId: getEpisodeDownloads
 | |
|       tags:
 | |
|         - Podcasts
 | |
|       responses:
 | |
|         200:
 | |
|           description: Successfully retrieved episode downloads
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 type: object
 | |
|                 properties:
 | |
|                   downloads:
 | |
|                     type: array
 | |
|                     items:
 | |
|                       $ref: '../objects/entities/PodcastEpisode.yaml#/components/schemas/PodcastEpisode'
 | |
|         404:
 | |
|           description: Not found
 | |
| 
 | |
|   /api/podcasts/{id}/search-episode:
 | |
|     parameters:
 | |
|       - name: id
 | |
|         in: path
 | |
|         description: Podcast ID
 | |
|         required: true
 | |
|         schema:
 | |
|           $ref: '../objects/mediaTypes/Podcast.yaml#/components/schemas/podcastId'
 | |
| 
 | |
|     get:
 | |
|       summary: Find episode by title
 | |
|       operationId: findEpisode
 | |
|       tags:
 | |
|         - Podcasts
 | |
|       parameters:
 | |
|         - name: title
 | |
|           in: query
 | |
|           description: Title of the episode to search for
 | |
|           required: true
 | |
|           schema:
 | |
|             type: string
 | |
|       responses:
 | |
|         200:
 | |
|           description: Successfully found episodes
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 type: object
 | |
|                 properties:
 | |
|                   episodes:
 | |
|                     type: array
 | |
|                     items:
 | |
|                       $ref: '../objects/entities/PodcastEpisode.yaml#/components/schemas/PodcastEpisode'
 | |
|         404:
 | |
|           description: Not found
 | |
|         500:
 | |
|           description: Server error
 | |
| 
 | |
|   /api/podcasts/{id}/download-episodes:
 | |
|     parameters:
 | |
|       - name: id
 | |
|         in: path
 | |
|         description: Podcast ID
 | |
|         required: true
 | |
|         schema:
 | |
|           $ref: '../objects/mediaTypes/Podcast.yaml#/components/schemas/podcastId'
 | |
| 
 | |
|     post:
 | |
|       summary: Download podcast episodes
 | |
|       operationId: downloadEpisodes
 | |
|       tags:
 | |
|         - Podcasts
 | |
|       requestBody:
 | |
|         required: true
 | |
|         content:
 | |
|           application/json:
 | |
|             schema:
 | |
|               type: array
 | |
|               items:
 | |
|                 type: string
 | |
|       responses:
 | |
|         200:
 | |
|           description: Successfully started episode download
 | |
|         400:
 | |
|           description: Bad request
 | |
|         403:
 | |
|           description: Forbidden
 | |
| 
 | |
|   /api/podcasts/{id}/match-episodes:
 | |
|     parameters:
 | |
|       - name: id
 | |
|         in: path
 | |
|         description: Podcast ID
 | |
|         required: true
 | |
|         schema:
 | |
|           $ref: '../objects/mediaTypes/Podcast.yaml#/components/schemas/podcastId'
 | |
| 
 | |
|     post:
 | |
|       summary: Quick match podcast episodes
 | |
|       operationId: quickMatchEpisodes
 | |
|       tags:
 | |
|         - Podcasts
 | |
|       parameters:
 | |
|         - name: override
 | |
|           in: query
 | |
|           description: Override existing details if set to 1
 | |
|           required: false
 | |
|           schema:
 | |
|             type: string
 | |
|       responses:
 | |
|         200:
 | |
|           description: Successfully matched episodes
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 type: object
 | |
|                 properties:
 | |
|                   numEpisodesUpdated:
 | |
|                     type: integer
 | |
|         403:
 | |
|           description: Forbidden
 | |
| 
 | |
|   /api/podcasts/{id}/episode/{episodeId}:
 | |
|     parameters:
 | |
|       - name: id
 | |
|         in: path
 | |
|         description: Podcast ID
 | |
|         required: true
 | |
|         schema:
 | |
|           $ref: '../objects/mediaTypes/Podcast.yaml#/components/schemas/podcastId'
 | |
|       - name: episodeId
 | |
|         in: path
 | |
|         description: Episode ID
 | |
|         required: true
 | |
|         schema:
 | |
|           $ref: '../objects/mediaTypes/Podcast.yaml#/components/schemas/podcastId'
 | |
| 
 | |
|     patch:
 | |
|       summary: Update a podcast episode
 | |
|       operationId: updateEpisode
 | |
|       tags:
 | |
|         - Podcasts
 | |
|       requestBody:
 | |
|         required: true
 | |
|         content:
 | |
|           application/json:
 | |
|             schema:
 | |
|               type: object
 | |
|       responses:
 | |
|         200:
 | |
|           description: Successfully updated episode
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 $ref: '../objects/mediaTypes/Podcast.yaml#/components/schemas/Podcast'
 | |
|         404:
 | |
|           description: Not found
 | |
| 
 | |
|     get:
 | |
|       summary: Get a specific podcast episode
 | |
|       operationId: getEpisode
 | |
|       tags:
 | |
|         - Podcasts
 | |
|       responses:
 | |
|         200:
 | |
|           description: Successfully retrieved episode
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 $ref: '../objects/entities/PodcastEpisode.yaml#/components/schemas/PodcastEpisode'
 | |
|         404:
 | |
|           description: Not found
 | |
| 
 | |
|     delete:
 | |
|       summary: Remove a podcast episode
 | |
|       operationId: removeEpisode
 | |
|       tags:
 | |
|         - Podcasts
 | |
|       parameters:
 | |
|         - name: hard
 | |
|           in: query
 | |
|           description: Hard delete the episode if set to 1
 | |
|           required: false
 | |
|           schema:
 | |
|             type: string
 | |
|       responses:
 | |
|         200:
 | |
|           description: Successfully removed episode
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 $ref: '../objects/mediaTypes/Podcast.yaml#/components/schemas/Podcast'
 | |
|         404:
 | |
|           description: Not found
 | |
|         500:
 | |
|           description: Server error
 |