openapi: 3.0.3 info: title: Transistor Account Shows API description: The Transistor API is a public REST API for the Transistor podcast hosting and analytics platform. It follows the JSON:API specification, accepts JSON or form-encoded request bodies, and returns JSON:API resource objects. It supports sparse fieldsets and included related resources. Authentication is via an x-api-key header carrying an API key generated in the Transistor dashboard Account area. The API covers shows, episodes, download analytics, private podcast subscribers, and event webhooks. Requests are rate-limited to 10 requests per 10 seconds; exceeding the limit returns HTTP 429 and blocks access for 10 seconds. version: '1.0' contact: name: Transistor url: https://transistor.fm termsOfService: https://transistor.fm/legal/ servers: - url: https://api.transistor.fm/v1 description: Transistor API v1 security: - apiKeyAuth: [] tags: - name: Shows description: Podcasts (shows) in your Transistor account. paths: /shows: get: operationId: listShows tags: - Shows summary: List shows description: Returns a paginated list of the shows in your account. parameters: - $ref: '#/components/parameters/PageNumber' - $ref: '#/components/parameters/PageSize' responses: '200': description: A paginated list of shows. content: application/json: schema: $ref: '#/components/schemas/JsonApiResourceList' '401': $ref: '#/components/responses/Unauthorized' '429': $ref: '#/components/responses/RateLimited' /shows/{id}: parameters: - $ref: '#/components/parameters/ResourceId' get: operationId: getShow tags: - Shows summary: Retrieve a show description: Returns a single show by ID. responses: '200': description: The requested show. content: application/json: schema: $ref: '#/components/schemas/JsonApiResource' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/RateLimited' patch: operationId: updateShow tags: - Shows summary: Update a show description: Updates metadata for a single show. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WriteBody' responses: '200': description: The updated show. content: application/json: schema: $ref: '#/components/schemas/JsonApiResource' '401': $ref: '#/components/responses/Unauthorized' '429': $ref: '#/components/responses/RateLimited' components: responses: RateLimited: description: Too many requests. The API allows 10 requests per 10 seconds; exceeding this blocks access for 10 seconds. content: application/json: schema: $ref: '#/components/schemas/Errors' Unauthorized: description: Missing or invalid API key. content: application/json: schema: $ref: '#/components/schemas/Errors' NotFound: description: The requested resource was not found. content: application/json: schema: $ref: '#/components/schemas/Errors' schemas: JsonApiResource: type: object description: A JSON:API single-resource document. properties: data: $ref: '#/components/schemas/ResourceObject' included: type: array items: $ref: '#/components/schemas/ResourceObject' Errors: type: object properties: errors: type: array items: type: object properties: status: type: string title: type: string detail: type: string ResourceObject: type: object description: A JSON:API resource object. properties: id: type: string type: type: string attributes: type: object additionalProperties: true relationships: type: object additionalProperties: true JsonApiResourceList: type: object description: A JSON:API list document with pagination metadata. properties: data: type: array items: $ref: '#/components/schemas/ResourceObject' meta: type: object properties: currentPage: type: integer totalPages: type: integer totalCount: type: integer WriteBody: type: object description: A write payload. Transistor accepts attributes nested under a resource-named key (for example show, episode, or subscriber). additionalProperties: true parameters: ResourceId: name: id in: path required: true description: The resource identifier. schema: type: string PageNumber: name: pagination[page] in: query description: The page number to return. schema: type: integer PageSize: name: pagination[per] in: query description: The number of records to return per page. schema: type: integer securitySchemes: apiKeyAuth: type: apiKey in: header name: x-api-key description: API key generated in the Transistor dashboard Account area.