mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-27 11:18:14 +01: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
 |