openapi: 3.1.0 info: title: Blubrry Podcast Hosting & Episode Statistics API version: '2' description: 'REST API for podcast publishing, media hosting, episode management, and podcast download statistics on Blubrry. Authentication is OAuth 2.0 Bearer; obtain a client_id / secret from Blubrry and request an access token at https://api.blubrry.com/oauth2/token. Source spec: https://blubrry.com/developer/api/podcaster.yaml ' contact: name: Blubrry Developer url: https://blubrry.com/developer/api/ servers: - url: https://api.blubrry.com/2 description: Production security: - OAuth2: [] tags: - name: Statistics description: Podcast download statistics. paths: /stats/index.{format}: get: tags: - Statistics summary: List shows with statistics access operationId: listStatsShows parameters: - $ref: '#/components/parameters/Format' responses: '200': description: Shows returned. '401': $ref: '#/components/responses/Unauthorized' /stats/{keyword}/summary.{format}: get: tags: - Statistics summary: Show statistics summary description: Overall download summary for a show. operationId: getShowStatsSummary parameters: - $ref: '#/components/parameters/Keyword' - $ref: '#/components/parameters/Format' responses: '200': description: Summary returned. '401': $ref: '#/components/responses/Unauthorized' /stats/{keyword}/show-episodes/: get: tags: - Statistics summary: Episode-level download counts for a show operationId: getShowEpisodeStats parameters: - $ref: '#/components/parameters/Keyword' responses: '200': description: Episode stats returned. '401': $ref: '#/components/responses/Unauthorized' /stats/{keyword}/: get: tags: - Statistics summary: Monthly download breakdown for a show operationId: getShowMonthlyStats parameters: - $ref: '#/components/parameters/Keyword' responses: '200': description: Monthly stats returned. '401': $ref: '#/components/responses/Unauthorized' /stats/{keyword}/countries/: get: tags: - Statistics summary: Show downloads by country operationId: getShowCountryStats parameters: - $ref: '#/components/parameters/Keyword' responses: '200': description: Country stats returned. '401': $ref: '#/components/responses/Unauthorized' /stats/{keyword}/app-types/: get: tags: - Statistics summary: Show downloads by application type operationId: getShowAppTypeStats parameters: - $ref: '#/components/parameters/Keyword' responses: '200': description: App type stats returned. '401': $ref: '#/components/responses/Unauthorized' /stats/{keyword}/apps/: get: tags: - Statistics summary: Show downloads by application operationId: getShowAppStats parameters: - $ref: '#/components/parameters/Keyword' responses: '200': description: App stats returned. '401': $ref: '#/components/responses/Unauthorized' /stats/{keyword}/episodes/: get: tags: - Statistics summary: List episodes with stats operationId: listStatsEpisodes parameters: - $ref: '#/components/parameters/Keyword' responses: '200': description: Episode list returned. '401': $ref: '#/components/responses/Unauthorized' /stats/{keyword}/{episode_id}/countries/: get: tags: - Statistics summary: Episode downloads by country operationId: getEpisodeCountryStats parameters: - $ref: '#/components/parameters/Keyword' - $ref: '#/components/parameters/EpisodeId' responses: '200': description: Country stats returned. '401': $ref: '#/components/responses/Unauthorized' /stats/{keyword}/{episode_id}/app-types/: get: tags: - Statistics summary: Episode downloads by application type operationId: getEpisodeAppTypeStats parameters: - $ref: '#/components/parameters/Keyword' - $ref: '#/components/parameters/EpisodeId' responses: '200': description: App type stats returned. '401': $ref: '#/components/responses/Unauthorized' /stats/{keyword}/{episode_id}/apps/: get: tags: - Statistics summary: Episode downloads by application operationId: getEpisodeAppStats parameters: - $ref: '#/components/parameters/Keyword' - $ref: '#/components/parameters/EpisodeId' responses: '200': description: App stats returned. '401': $ref: '#/components/responses/Unauthorized' /stats/{keyword}/widget/preview.json: get: tags: - Statistics summary: Stats widget preview operationId: getStatsWidgetPreview parameters: - $ref: '#/components/parameters/Keyword' responses: '200': description: Widget preview returned. '401': $ref: '#/components/responses/Unauthorized' /stats/{keyword}/totals.json: get: tags: - Statistics summary: Lifetime totals for a show operationId: getShowStatsTotals parameters: - $ref: '#/components/parameters/Keyword' responses: '200': description: Totals returned. '401': $ref: '#/components/responses/Unauthorized' components: parameters: Keyword: name: keyword in: path required: true description: Program keyword that identifies the show. schema: type: string Format: name: format in: path required: true description: Response serialization format. schema: type: string enum: - json - xml EpisodeId: name: episode_id in: path required: true schema: type: integer responses: Unauthorized: description: Missing or invalid access token. securitySchemes: OAuth2: type: oauth2 description: 'OAuth 2.0 Bearer token. Contact Blubrry to receive a client_id and secret. Tokens expire after one hour; refresh tokens do not expire. ' flows: authorizationCode: authorizationUrl: https://api.blubrry.com/oauth2/authorize tokenUrl: https://api.blubrry.com/oauth2/token refreshUrl: https://api.blubrry.com/oauth2/token scopes: {}