{
  "opencollection": "1.0.0",
  "info": {
    "name": "Transistor API",
    "version": "1.0"
  },
  "request": {
    "auth": {
      "type": "apikey",
      "apikey": {
        "key": "x-api-key",
        "value": "{{apiKey}}",
        "in": "header"
      }
    }
  },
  "items": [
    {
      "info": { "name": "Account", "type": "folder" },
      "items": [
        {
          "info": { "name": "Retrieve authenticated user.", "type": "http" },
          "http": { "method": "GET", "url": "https://api.transistor.fm/v1/" },
          "docs": "Returns details for the authenticated user associated with the API key."
        }
      ]
    },
    {
      "info": { "name": "Shows", "type": "folder" },
      "items": [
        {
          "info": { "name": "List shows.", "type": "http" },
          "http": { "method": "GET", "url": "https://api.transistor.fm/v1/shows" },
          "docs": "Returns a paginated list of the shows in your account."
        },
        {
          "info": { "name": "Retrieve a show.", "type": "http" },
          "http": {
            "method": "GET",
            "url": "https://api.transistor.fm/v1/shows/:id",
            "params": [
              { "name": "id", "value": "", "type": "path", "description": "The show ID." }
            ]
          },
          "docs": "Returns a single show by ID."
        },
        {
          "info": { "name": "Update a show.", "type": "http" },
          "http": {
            "method": "PATCH",
            "url": "https://api.transistor.fm/v1/shows/:id",
            "params": [
              { "name": "id", "value": "", "type": "path", "description": "The show ID." }
            ],
            "body": { "type": "json", "data": "{ \"show\": { \"description\": \"Updated show description\" } }" }
          },
          "docs": "Updates metadata for a single show."
        }
      ]
    },
    {
      "info": { "name": "Episodes", "type": "folder" },
      "items": [
        {
          "info": { "name": "List episodes.", "type": "http" },
          "http": {
            "method": "GET",
            "url": "https://api.transistor.fm/v1/episodes",
            "params": [
              { "name": "show_id", "value": "", "type": "query", "description": "Filter by show." },
              { "name": "status", "value": "", "type": "query", "description": "Filter by episode status." },
              { "name": "query", "value": "", "type": "query", "description": "Full-text search." }
            ]
          },
          "docs": "Returns a paginated list of episodes, filterable by show, status, and full-text query."
        },
        {
          "info": { "name": "Authorize an audio upload.", "type": "http" },
          "http": {
            "method": "GET",
            "url": "https://api.transistor.fm/v1/episodes/authorize_upload",
            "params": [
              { "name": "filename", "value": "", "type": "query", "description": "The audio file name to upload." }
            ]
          },
          "docs": "Returns a pre-signed upload URL and an audio_url for uploading an episode audio file."
        },
        {
          "info": { "name": "Retrieve an episode.", "type": "http" },
          "http": {
            "method": "GET",
            "url": "https://api.transistor.fm/v1/episodes/:id",
            "params": [
              { "name": "id", "value": "", "type": "path", "description": "The episode ID." }
            ]
          },
          "docs": "Returns a single episode by ID."
        },
        {
          "info": { "name": "Create an episode.", "type": "http" },
          "http": {
            "method": "POST",
            "url": "https://api.transistor.fm/v1/episodes",
            "body": { "type": "json", "data": "{ \"episode\": { \"show_id\": \"\", \"title\": \"My Episode\", \"audio_url\": \"\" } }" }
          },
          "docs": "Creates a new draft episode."
        },
        {
          "info": { "name": "Update an episode.", "type": "http" },
          "http": {
            "method": "PATCH",
            "url": "https://api.transistor.fm/v1/episodes/:id",
            "params": [
              { "name": "id", "value": "", "type": "path", "description": "The episode ID." }
            ],
            "body": { "type": "json", "data": "{ \"episode\": { \"title\": \"Updated title\" } }" }
          },
          "docs": "Updates an existing episode."
        },
        {
          "info": { "name": "Publish, schedule, or unpublish an episode.", "type": "http" },
          "http": {
            "method": "PATCH",
            "url": "https://api.transistor.fm/v1/episodes/:id/publish",
            "params": [
              { "name": "id", "value": "", "type": "path", "description": "The episode ID." }
            ],
            "body": { "type": "json", "data": "{ \"episode\": { \"status\": \"published\" } }" }
          },
          "docs": "Changes an episode's publication status - publish, schedule, or unpublish."
        }
      ]
    },
    {
      "info": { "name": "Analytics", "type": "folder" },
      "items": [
        {
          "info": { "name": "Show analytics.", "type": "http" },
          "http": {
            "method": "GET",
            "url": "https://api.transistor.fm/v1/analytics/:id",
            "params": [
              { "name": "id", "value": "", "type": "path", "description": "The show ID." },
              { "name": "start_date", "value": "", "type": "query", "description": "Start of range (dd-mm-yyyy)." },
              { "name": "end_date", "value": "", "type": "query", "description": "End of range (dd-mm-yyyy)." }
            ]
          },
          "docs": "Returns downloads per day for a show (default last 14 days)."
        },
        {
          "info": { "name": "All-episodes analytics for a show.", "type": "http" },
          "http": {
            "method": "GET",
            "url": "https://api.transistor.fm/v1/analytics/:id/episodes",
            "params": [
              { "name": "id", "value": "", "type": "path", "description": "The show ID." },
              { "name": "start_date", "value": "", "type": "query", "description": "Start of range (dd-mm-yyyy)." },
              { "name": "end_date", "value": "", "type": "query", "description": "End of range (dd-mm-yyyy)." }
            ]
          },
          "docs": "Returns download analytics aggregated across all episodes of a show (default last 7 days)."
        },
        {
          "info": { "name": "Single-episode analytics.", "type": "http" },
          "http": {
            "method": "GET",
            "url": "https://api.transistor.fm/v1/analytics/episodes/:id",
            "params": [
              { "name": "id", "value": "", "type": "path", "description": "The episode ID." },
              { "name": "start_date", "value": "", "type": "query", "description": "Start of range (dd-mm-yyyy)." },
              { "name": "end_date", "value": "", "type": "query", "description": "End of range (dd-mm-yyyy)." }
            ]
          },
          "docs": "Returns download analytics for a single episode (default last 14 days)."
        }
      ]
    },
    {
      "info": { "name": "Subscribers", "type": "folder" },
      "items": [
        {
          "info": { "name": "List subscribers.", "type": "http" },
          "http": { "method": "GET", "url": "https://api.transistor.fm/v1/subscribers" },
          "docs": "Returns a paginated list of private podcast subscribers."
        },
        {
          "info": { "name": "Retrieve a subscriber.", "type": "http" },
          "http": {
            "method": "GET",
            "url": "https://api.transistor.fm/v1/subscribers/:id",
            "params": [
              { "name": "id", "value": "", "type": "path", "description": "The subscriber ID." }
            ]
          },
          "docs": "Returns a single private podcast subscriber by ID."
        },
        {
          "info": { "name": "Add a subscriber.", "type": "http" },
          "http": {
            "method": "POST",
            "url": "https://api.transistor.fm/v1/subscribers",
            "body": { "type": "json", "data": "{ \"subscriber\": { \"show_id\": \"\", \"email\": \"listener@example.com\" } }" }
          },
          "docs": "Adds a private podcast subscriber, optionally sending an email invitation."
        },
        {
          "info": { "name": "Add subscribers in bulk.", "type": "http" },
          "http": {
            "method": "POST",
            "url": "https://api.transistor.fm/v1/subscribers/batch",
            "body": { "type": "json", "data": "{ \"show_id\": \"\", \"subscribers\": [ { \"email\": \"a@example.com\" }, { \"email\": \"b@example.com\" } ] }" }
          },
          "docs": "Adds multiple private podcast subscribers in a single request."
        },
        {
          "info": { "name": "Update a subscriber.", "type": "http" },
          "http": {
            "method": "PATCH",
            "url": "https://api.transistor.fm/v1/subscribers/:id",
            "params": [
              { "name": "id", "value": "", "type": "path", "description": "The subscriber ID." }
            ],
            "body": { "type": "json", "data": "{ \"subscriber\": { \"email\": \"new@example.com\" } }" }
          },
          "docs": "Updates a private podcast subscriber's email address."
        },
        {
          "info": { "name": "Remove a subscriber by ID.", "type": "http" },
          "http": {
            "method": "DELETE",
            "url": "https://api.transistor.fm/v1/subscribers/:id",
            "params": [
              { "name": "id", "value": "", "type": "path", "description": "The subscriber ID." }
            ]
          },
          "docs": "Removes a single private podcast subscriber by ID."
        }
      ]
    },
    {
      "info": { "name": "Webhooks", "type": "folder" },
      "items": [
        {
          "info": { "name": "List webhooks.", "type": "http" },
          "http": { "method": "GET", "url": "https://api.transistor.fm/v1/webhooks" },
          "docs": "Returns the webhook subscriptions in your account."
        },
        {
          "info": { "name": "Subscribe to an event.", "type": "http" },
          "http": {
            "method": "POST",
            "url": "https://api.transistor.fm/v1/webhooks",
            "body": { "type": "json", "data": "{ \"event_name\": \"episode_published\", \"url\": \"https://example.com/webhook\", \"show_id\": \"\" }" }
          },
          "docs": "Registers a webhook that POSTs to a callback URL when an event fires."
        },
        {
          "info": { "name": "Unsubscribe a webhook.", "type": "http" },
          "http": {
            "method": "DELETE",
            "url": "https://api.transistor.fm/v1/webhooks/:id",
            "params": [
              { "name": "id", "value": "", "type": "path", "description": "The webhook ID." }
            ]
          },
          "docs": "Deletes a webhook subscription by ID."
        }
      ]
    }
  ]
}
