---
# yaml-language-server: $schema=https://raw.githubusercontent.com/OAI/OpenAPI-Specification/main/schemas/v3.1/schema.json
openapi: "3.1.0"
info:
  title: LibreTime API overview
  version: 1.1
paths:
  /live-info:
    get:
      summary: Retrieve the currently playing show as well as upcoming shows
      parameters:
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: false
        - name: type
          in: path
          description: |-
            endofday retrieves the info for shows up until the end of the day,
            while interval will return shows in the next 48 hours
          schema:
            enum:
              - "endofday"
              - "interval"
            default: "interval"
          required: false
        - name: limit
          in: path
          description: the number of shows to retrieve
          schema:
            type: integer
            default: 5
          required: false
      responses:
        "200":
          description: 200 response for default request
          content:
            application/json:
              example:
                {
                  "env": "production",
                  "schedulerTime": "2019-10-21 17:52:45",
                  "previous":
                    {
                      "starts": "2019-10-21 17:47:25.000000",
                      "ends": "2019-10-21 17:52:13.000000",
                      "type": "track",
                      "name": "Disclosure - F For You (feat. Mary J. Blige)",
                      "metadata":
                        {
                          "id": 8,
                          "name": "",
                          "mime": "audio/mp3",
                          "ftype": "audioclip",
                          "directory": 1,
                          "filepath": "imported/1/Disclosure/www.mmibty.com/01-F-For-You-feat.-Mary-J.-Blige.mp3",
                          "import_status": 0,
                          "currentlyaccessing": 0,
                          "editedby": null,
                          "mtime": "2019-10-21 17:19:03",
                          "utime": "2019-10-21 17:18:57",
                          "lptime": "2019-10-21 17:47:25",
                          "md5": "e008616551750aea49820a16d1fb1527",
                          "track_title": "F For You (feat. Mary J. Blige)",
                          "artist_name": "Disclosure",
                          "bit_rate": 251628,
                          "sample_rate": 44100,
                          "format": null,
                          "length": "00:04:48.026122",
                          "album_title": "www.mmibty.com",
                          "genre": "Electronic",
                          "comments": null,
                          "year": "2014",
                          "track_number": 1,
                          "channels": 2,
                          "url": null,
                          "bpm": null,
                          "rating": null,
                          "encoded_by": null,
                          "disc_number": null,
                          "mood": null,
                          "label": null,
                          "composer": null,
                          "encoder": null,
                          "checksum": null,
                          "lyrics": null,
                          "orchestra": null,
                          "conductor": null,
                          "lyricist": null,
                          "original_lyricist": null,
                          "radio_station_name": null,
                          "info_url": null,
                          "artist_url": null,
                          "audio_source_url": null,
                          "radio_station_url": null,
                          "buy_this_url": null,
                          "isrc_number": null,
                          "catalog_number": null,
                          "original_artist": null,
                          "copyright": null,
                          "report_datetime": null,
                          "report_location": null,
                          "report_organization": null,
                          "subject": null,
                          "contributor": null,
                          "language": null,
                          "replay_gain": "-5.58",
                          "owner_id": 1,
                          "cuein": "00:00:00",
                          "cueout": "00:04:48.026122",
                          "hidden": false,
                          "filesize": 9271626,
                          "description": null,
                          "artwork": "imported/1/artwork/01-F-For-You-feat.-Mary-J.-Blige",
                          "artwork_url": "http://localhost:8080/api/track?id=8&return=artwork",
                        },
                    },
                  "current":
                    {
                      "starts": "2019-10-21 17:52:13",
                      "ends": "2019-10-21 17:56:27",
                      "type": "track",
                      "name": "Armin van Buuren - Ping Pong",
                      "media_item_played": true,
                      "metadata":
                        {
                          "id": 2,
                          "name": "",
                          "mime": "audio/mp3",
                          "ftype": "audioclip",
                          "directory": 1,
                          "filepath": "imported/1/Armin van Buuren/A State of Trance 2014/2-18 Armin van Buuren - Ping Pong.mp3",
                          "import_status": 0,
                          "currentlyaccessing": 0,
                          "editedby": null,
                          "mtime": "2019-10-21 17:18:02",
                          "utime": "2019-10-21 17:18:00",
                          "lptime": "2019-10-21 17:52:13",
                          "md5": "04c26823902065db0706d121d0e703a2",
                          "track_title": "Ping Pong",
                          "artist_name": "Armin van Buuren",
                          "bit_rate": 32000,
                          "sample_rate": 44100,
                          "format": null,
                          "length": "00:04:14.171429",
                          "album_title": "A State of Trance 2014",
                          "genre": "Trance;Electronic;Dance",
                          "comments": null,
                          "year": "2014",
                          "track_number": 18,
                          "channels": 2,
                          "url": null,
                          "bpm": null,
                          "rating": null,
                          "encoded_by": null,
                          "disc_number": null,
                          "mood": null,
                          "label": "Armada Music",
                          "composer": null,
                          "encoder": null,
                          "checksum": null,
                          "lyrics": null,
                          "orchestra": null,
                          "conductor": null,
                          "lyricist": null,
                          "original_lyricist": null,
                          "radio_station_name": null,
                          "info_url": null,
                          "artist_url": null,
                          "audio_source_url": null,
                          "radio_station_url": null,
                          "buy_this_url": null,
                          "isrc_number": null,
                          "catalog_number": null,
                          "original_artist": null,
                          "copyright": null,
                          "report_datetime": null,
                          "report_location": null,
                          "report_organization": null,
                          "subject": null,
                          "contributor": null,
                          "language": null,
                          "replay_gain": "-5.07",
                          "owner_id": 1,
                          "cuein": "00:00:00",
                          "cueout": "00:04:14.171429",
                          "hidden": false,
                          "filesize": 6136238,
                          "description": null,
                          "artwork": "imported/1/artwork/2-18 Armin van Buuren - Ping Pong",
                          "artwork_url": "http://localhost:8080/api/track?id=2&return=artwork",
                        },
                      "record": "0",
                    },
                  "next":
                    {
                      "starts": "2019-10-21 17:56:27.000000",
                      "ends": "2019-10-21 18:00:28.000000",
                      "type": "track",
                      "name": "Bastille - No Angels (feat. Ella)",
                      "metadata":
                        {
                          "id": 4,
                          "name": "",
                          "mime": "audio/mp3",
                          "ftype": "audioclip",
                          "directory": 1,
                          "filepath": "imported/1/Bastille/Other People's Heartache, Pt. 2/03 Bastille - No Angels (feat. Ella).mp3",
                          "import_status": 0,
                          "currentlyaccessing": 0,
                          "editedby": null,
                          "mtime": "2019-10-21 17:18:16",
                          "utime": "2019-10-21 17:18:14",
                          "lptime": "2019-10-21 17:24:46",
                          "md5": "87bf83451d7618eefc0141c262aead2a",
                          "track_title": "No Angels (feat. Ella)",
                          "artist_name": "Bastille",
                          "bit_rate": 128000,
                          "sample_rate": 44100,
                          "format": null,
                          "length": "00:04:00.752438",
                          "album_title": "Other People's Heartache, Pt. 2",
                          "genre": null,
                          "comments": null,
                          "year": "2012",
                          "track_number": 3,
                          "channels": 2,
                          "url": null,
                          "bpm": null,
                          "rating": null,
                          "encoded_by": null,
                          "disc_number": null,
                          "mood": null,
                          "label": "[no label]",
                          "composer": null,
                          "encoder": null,
                          "checksum": null,
                          "lyrics": null,
                          "orchestra": null,
                          "conductor": null,
                          "lyricist": null,
                          "original_lyricist": null,
                          "radio_station_name": null,
                          "info_url": null,
                          "artist_url": null,
                          "audio_source_url": null,
                          "radio_station_url": null,
                          "buy_this_url": null,
                          "isrc_number": null,
                          "catalog_number": null,
                          "original_artist": null,
                          "copyright": null,
                          "report_datetime": null,
                          "report_location": null,
                          "report_organization": null,
                          "subject": null,
                          "contributor": null,
                          "language": null,
                          "replay_gain": "-8.57",
                          "owner_id": 1,
                          "cuein": "00:00:00",
                          "cueout": "00:04:00.752438",
                          "hidden": false,
                          "filesize": 3858688,
                          "description": null,
                          "artwork": "",
                        },
                    },
                  "currentShow":
                    [
                      {
                        "start_timestamp": "2019-10-21 17:20:00",
                        "end_timestamp": "2019-10-21 18:31:00",
                        "name": "Show 1",
                        "description": "A show",
                        "id": 1,
                        "instance_id": 1,
                        "record": 0,
                        "url": "https://example.com",
                        "image_path": "",
                        "starts": "2019-10-21 17:20:00",
                        "ends": "2019-10-21 18:31:00",
                      },
                    ],
                  "nextShow":
                    [
                      {
                        "id": 2,
                        "instance_id": 2,
                        "name": "Reading",
                        "description": "A reading of After the EMP by Harley Tate",
                        "url": "https://example.com",
                        "start_timestamp": "2019-10-21 18:31:00",
                        "end_timestamp": "2019-10-22 10:45:00",
                        "starts": "2019-10-21 18:31:00",
                        "ends": "2019-10-22 10:45:00",
                        "record": 0,
                        "image_path": "",
                        "type": "show",
                      },
                    ],
                  "source_enabled": "Scheduled",
                  "timezone": "UTC",
                  "timezoneOffset": "0",
                  "AIRTIME_API_VERSION": "1.1",
                }
  /live-info-v2:
    get:
      summary: Retrieve the currently playing and upcoming shows
      parameters:
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: true
        - name: days
          in: path
          description: The number of days to return
          schema:
            type: integer
            default: 2
          required: false
        - show_id: shows
          in: path
          description: the number of shows to retrieve
          schema:
            type: integer
            default: 5
          required: false
        - name: timezone
          in: path
          description: The timezone to send the times in
          schema:
            type: string
            default: "$server_timezone"
          required: false
      responses:
        "200":
          description: 200 response for default request
          content:
            application/json:
              example:
                {
                  "station":
                    {
                      "env": "production",
                      "schedulerTime": "2019-10-21 17:29:40",
                      "source_enabled": "Scheduled",
                      "timezone": "UTC",
                      "AIRTIME_API_VERSION": "1.1",
                    },
                  "tracks":
                    {
                      "previous":
                        {
                          "starts": "2019-10-21 17:24:45",
                          "ends": "2019-10-21 17:28:46",
                          "type": "track",
                          "name": "Bastille - No Angels (feat. Ella)",
                          "metadata":
                            {
                              "id": 4,
                              "name": "",
                              "mime": "audio/mp3",
                              "ftype": "audioclip",
                              "directory": 1,
                              "filepath": "imported/1/Bastille/Other People's Heartache, Pt. 2/03 Bastille - No Angels (feat. Ella).mp3",
                              "import_status": 0,
                              "currentlyaccessing": 0,
                              "editedby": null,
                              "mtime": "2019-10-21 17:18:16",
                              "utime": "2019-10-21 17:18:14",
                              "lptime": "2019-10-21 17:24:46",
                              "md5": "87bf83451d7618eefc0141c262aead2a",
                              "track_title": "No Angels (feat. Ella)",
                              "artist_name": "Bastille",
                              "bit_rate": 128000,
                              "sample_rate": 44100,
                              "format": null,
                              "length": "00:04:00.752438",
                              "album_title": "Other People's Heartache, Pt. 2",
                              "genre": null,
                              "comments": null,
                              "year": "2012",
                              "track_number": 3,
                              "channels": 2,
                              "url": null,
                              "bpm": null,
                              "rating": null,
                              "encoded_by": null,
                              "disc_number": null,
                              "mood": null,
                              "label": "[no label]",
                              "composer": null,
                              "encoder": null,
                              "checksum": null,
                              "lyrics": null,
                              "orchestra": null,
                              "conductor": null,
                              "lyricist": null,
                              "original_lyricist": null,
                              "radio_station_name": null,
                              "info_url": null,
                              "artist_url": null,
                              "audio_source_url": null,
                              "radio_station_url": null,
                              "buy_this_url": null,
                              "isrc_number": null,
                              "catalog_number": null,
                              "original_artist": null,
                              "copyright": null,
                              "report_datetime": null,
                              "report_location": null,
                              "report_organization": null,
                              "subject": null,
                              "contributor": null,
                              "language": null,
                              "replay_gain": "-8.57",
                              "owner_id": 1,
                              "cuein": "00:00:00",
                              "cueout": "00:04:00.752438",
                              "hidden": false,
                              "filesize": 3858688,
                              "description": null,
                              "artwork": "",
                            },
                        },
                      "current": null,
                      "next":
                        {
                          "starts": "2019-10-21 17:32:49",
                          "ends": "2019-10-21 17:36:44",
                          "type": "track",
                          "name": "Bob Marley - Could You Be Loved",
                          "metadata":
                            {
                              "id": 14,
                              "name": "",
                              "mime": "audio/mp3",
                              "ftype": "audioclip",
                              "directory": 1,
                              "filepath": "imported/1/Bob Marley/Greatest Hits/02. Could You Be Loved.mp3",
                              "import_status": 0,
                              "currentlyaccessing": 0,
                              "editedby": null,
                              "mtime": "2019-10-21 17:19:16",
                              "utime": "2019-10-21 17:18:59",
                              "lptime": null,
                              "md5": "75e49569fd6af61cc8c18f5660beadc2",
                              "track_title": "Could You Be Loved",
                              "artist_name": "Bob Marley",
                              "bit_rate": 128000,
                              "sample_rate": 44100,
                              "format": null,
                              "length": "00:03:55.11",
                              "album_title": "Greatest Hits",
                              "genre": "Various",
                              "comments": null,
                              "year": null,
                              "track_number": 2,
                              "channels": 2,
                              "url": null,
                              "bpm": 103,
                              "rating": null,
                              "encoded_by": null,
                              "disc_number": null,
                              "mood": null,
                              "label": null,
                              "composer": null,
                              "encoder": null,
                              "checksum": null,
                              "lyrics": null,
                              "orchestra": null,
                              "conductor": null,
                              "lyricist": null,
                              "original_lyricist": null,
                              "radio_station_name": null,
                              "info_url": null,
                              "artist_url": null,
                              "audio_source_url": null,
                              "radio_station_url": null,
                              "buy_this_url": null,
                              "isrc_number": null,
                              "catalog_number": null,
                              "original_artist": null,
                              "copyright": null,
                              "report_datetime": null,
                              "report_location": null,
                              "report_organization": null,
                              "subject": null,
                              "contributor": null,
                              "language": null,
                              "replay_gain": "-1.2",
                              "owner_id": 1,
                              "cuein": "00:00:00",
                              "cueout": "00:03:55.11",
                              "hidden": false,
                              "filesize": 3773820,
                              "description": null,
                              "artwork": "",
                            },
                        },
                    },
                  "shows":
                    {
                      "previous": [],
                      "current":
                        {
                          "name": "Show 1",
                          "description": "A show",
                          "genre": "HipHop",
                          "id": 1,
                          "instance_id": 1,
                          "record": 0,
                          "url": "https://example.com",
                          "image_path": "",
                          "starts": "2019-10-21 17:20:00",
                          "ends": "2019-10-21 18:31:00",
                        },
                      "next":
                        [
                          {
                            "name": "Reading",
                            "description": "A reading of After the EMP by Harley Tate",
                            "genre": "Sci-fi",
                            "id": 2,
                            "instance_id": 2,
                            "record": 0,
                            "url": "https://example.com",
                            "image_path": "",
                            "starts": "2019-10-21 18:31:00",
                            "ends": "2019-10-22 10:45:00",
                          },
                        ],
                    },
                  "sources":
                    {
                      "livedj": "off",
                      "masterdj": "off",
                      "scheduledplay": "on",
                    },
                }
  /week-info:
    get:
      summary: Retrieve the schedule for the week
      parameters:
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: false
      responses:
        "200":
          description: 200 response for default request
          content:
            application/json:
              example:
                {
                  "monday":
                    [
                      {
                        "start_timestamp": "2019-10-21 17:20:00",
                        "end_timestamp": "2019-10-21 18:31:00",
                        "name": "Show 1",
                        "description": "A show",
                        "id": 1,
                        "instance_id": 1,
                        "instance_description": "",
                        "record": 0,
                        "url": "https://example.com",
                        "image_path": "",
                        "starts": "2019-10-21 17:20:00",
                        "ends": "2019-10-21 18:31:00",
                      },
                      {
                        "start_timestamp": "2019-10-21 18:31:00",
                        "end_timestamp": "2019-10-22 10:45:00",
                        "name": "Reading",
                        "description": "A reading of After the EMP by Harley Tate",
                        "id": 2,
                        "instance_id": 2,
                        "instance_description": "",
                        "record": 0,
                        "url": "https://example.com",
                        "image_path": "",
                        "starts": "2019-10-21 18:31:00",
                        "ends": "2019-10-22 10:45:00",
                      },
                    ],
                  "tuesday": [],
                  "wednesday": [],
                  "thursday": [],
                  "friday": [],
                  "saturday": [],
                  "sunday": [],
                  "nextmonday": [],
                  "nexttuesday": [],
                  "nextwednesday": [],
                  "nextthursday": [],
                  "nextfriday": [],
                  "nextsaturday": [],
                  "nextsunday": [],
                  "AIRTIME_API_VERSION": "1.1",
                }
  /station-metadata:
    get:
      summary: BROKEN - Retrieve the schedule for the week
      parameters:
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: false
  /station-logo:
    get:
      summary: Fetch the station logo
      parameters:
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: false
  /show-history-feed:
    get:
      summary: BROKEN - Retrieve the show schedules for a given time range and show
      parameters:
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: false
        - name: start
          in: path
          description: The start time for the feed
          required: true
        - name: end
          in: path
          description: The end time for the feed
          required: true
        - name: timezone
          in: path
          description: The timezone that the times are in
          required: true
  /item-history-feed:
    get:
      summary: Retrieve the items for a time range and/or show
      parameters:
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: false
        - name: start
          in: path
          description: The start time for the feed
          required: false
        - name: end
          in: path
          description: The end time for the feed
          required: false
        - name: timezone
          in: path
          description: The timezone that the times are in
          required: false
        - name: instance_id
          in: path
          description: The show instance ID
          required: false
      responses:
        "200":
          description: The 200 default response
          content:
            application/json:
              example:
                [
                  {
                    "starts": "2019-10-21 18:19:07",
                    "ends": "2019-10-21 18:23:55",
                    "history_id": 16,
                    "instance_id": 1,
                    "track_title": "F For You (feat. Mary J. Blige)",
                    "artist_name": "Disclosure",
                    "checkbox": "",
                  },
                  {
                    "starts": "2019-10-21 17:20:31",
                    "ends": "2019-10-21 17:24:45",
                    "history_id": 1,
                    "instance_id": 1,
                    "track_title": "Ping Pong",
                    "artist_name": "Armin van Buuren",
                    "checkbox": "",
                  },
                ]
  /shows:
    get:
      summary: Retrieve the show info (without schedule for given show_id
      parameters:
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: false
        - name: show_id
          in: path
          description: The ID of the show
          required: false
      response:
        "200":
          description: The response with a show_id of 1
          content:
            application/json:
              example:
                [
                  {
                    "name": "Show 1",
                    "id": 1,
                    "url": "https://example.com",
                    "genre": "HipHop",
                    "description": "A show",
                    "color": "",
                    "background_color": "",
                    "linked": false,
                    "has_autoplaylist": false,
                    "autoplaylist_id": null,
                    "autoplaylist_repeat": false,
                  },
                ]
  /show-tracks:
    get:
      summary: Display the track listing for given instance_id
      parameters:
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: false
        - name: instance_id
          in: path
          description: The ID of the show
          required: true
      response:
        "200":
          description: The response with a instance_id of 1
          content:
            application/json:
              example:
                [
                  {
                    "title": "Ping Pong",
                    "artist": "Armin van Buuren",
                    "position": 0,
                    "id": 1,
                    "mime": "audio/mp3",
                    "starts": "2019-10-21 17:20:31",
                    "length": "4:14.2",
                    "file_id": 2,
                  },
                  {
                    "title": "No Angels (feat. Ella)",
                    "artist": "Bastille",
                    "position": 1,
                    "id": 2,
                    "mime": "audio/mp3",
                    "starts": "2019-10-21 17:24:45",
                    "length": "4:00.8",
                    "file_id": 4,
                  },
                ]
  /show-schedules:
    get:
      summary: Display the show schedule for given show_id
      parameters:
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: false
        - name: show_id
          in: path
          description: The ID of the show
          required: true
        - name: start
          in: path
          description: The start time for the feed
          required: false
        - name: end
          in: path
          description: The end time for the feed
          required: false
        - name: timezone
          in: path
          description: The timezone that the times are in
          required: false
      response:
        "200":
          description: The response with a instance_id of 1
          content:
            application/json:
              example:
                [
                  {
                    "starts": "2019-10-21 17:20:00",
                    "ends": "2019-10-21 18:31:00",
                    "record": 0,
                    "rebroadcast": 0,
                    "parent_starts": null,
                    "record_id": null,
                    "show_id": 1,
                    "name": "Show 1",
                    "description": "A show",
                    "color": "",
                    "background_color": "",
                    "image_path": "",
                    "linked": false,
                    "file_id": null,
                    "instance_id": 1,
                    "instance_description": "",
                    "created": "2019-10-21 17:20:22",
                    "last_scheduled": "2019-10-21 17:20:50",
                    "time_filled": "01:14:39.265872",
                  },
                ]
  /show-logo:
    get:
      summary: Fetch the show logo. Returns the station logo if none exists
      parameters:
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: false
        - name: id
          in: path
          description: The ID of the show with the logo to retrieve
          required: true
  /track:
    get:
      summary: Displays the metadata of a particular track
      parameters:
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: false
        - name: id
          in: path
          description: The track id
          required: true
        - name: response
          in: path
          description: The type of response
          schema:
            enum:
              - json
              - artwork_data
              - artwork
          required: true
      responses:
        "200":
          description: The 200 response
          content:
            application/json:
              example:
                {
                  "MDATA_KEY_FILEPATH": "imported\/1\/Armin van Buuren\/Another You (feat. Mr. Probz)\/01 Another You (feat. Mr. Probz).mp3",
                  "MDATA_KEY_DIRECTORY": 1,
                  "MDATA_KEY_TITLE": "Another You (feat. Mr. Probz)",
                  "MDATA_KEY_CREATOR": "Armin van Buuren",
                  "MDATA_KEY_SOURCE": "Another You (feat. Mr. Probz)",
                  "MDATA_KEY_DURATION": "00:03:19.183673",
                  "MDATA_KEY_MIME": "audio\/mp3",
                  "MDATA_KEY_FTYPE": "audioclip",
                  "MDATA_KEY_URL": null,
                  "MDATA_KEY_GENRE": null,
                  "MDATA_KEY_MOOD": null,
                  "MDATA_KEY_LABEL": "Armin Audio B.V.",
                  "MDATA_KEY_COMPOSER": null,
                  "MDATA_KEY_DESCRIPTION": null,
                  "MDATA_KEY_SAMPLERATE": 44100,
                  "MDATA_KEY_BITRATE": 192000,
                  "MDATA_KEY_ENCODER": null,
                  "MDATA_KEY_ISRC": null,
                  "MDATA_KEY_COPYRIGHT": null,
                  "MDATA_KEY_YEAR": "2015",
                  "MDATA_KEY_BPM": null,
                  "MDATA_KEY_TRACKNUMBER": 1,
                  "MDATA_KEY_CONDUCTOR": null,
                  "MDATA_KEY_LANGUAGE": null,
                  "MDATA_KEY_REPLAYGAIN": "-8.36",
                  "MDATA_KEY_OWNER_ID": 1,
                  "MDATA_KEY_CUE_IN": "00:00:00",
                  "MDATA_KEY_CUE_OUT": "00:03:19.183673",
                  "MDATA_KEY_ARTWORK": "imported\/1\/artwork\/01 Another You (feat. Mr. Probz)",
                }
  /stream-m3u:
    get:
      summary: Returns m3u playlist file for the station's output stream
      response:
        "200":
          description: The M3U file for the stream
          content: application/x-mpegurl
  /version:
    get:
      summary: Returns the current LibreTime and API versions
      parameters:
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: false
      responses:
        "200":
          description: 200 response
          content:
            application/json:
              example:
                { "airtime_version": "3.0.0~alpha.5", "api_version": "1.1" }
  /recorded-shows:
    get:
      summary: BROKEN - Unclear what this did, not implemented in ApiController
  /calendar-init:
    get:
      summary: BROKEN - Unclear what this did, not implemented in ApiController
  /upload-file:
    get:
      summary: BROKEN - Unclear what this did, not implemented in ApiController
  /upload-recorded:
    post:
      summary: Upload a recorded show
      parameters:
        - name: showinstanceid
          in: path
          description: The ID of the show that was recorded
          required: true
        - name: fileid
          in: path
          description: The ID of the recorded file in the database
          required: true
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: true
  /media-monitor-setup:
    post:
      summary: Initialises monitoring of media directories
      parameters:
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: true
  /media-item-status:
    get:
      summary: BROKEN - Unclear what this did, not implemented in ApiController
      parameters:
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: true
  /reload-metadata:
    get:
      summary: BROKEN - Unclear what this did, not implemented in ApiController
      parameters:
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: true
  /list-all-files:
    get:
      summary: BROKEN - List all files in a given directory managed by LibreTime
      parameters:
        - name: dir_id
          in: path
          description: The directory to list files in
          required: true
        - name: all
          in: path
          description: |-
            true to show all files in the database, even if they do not exist
            on disk
          required: false
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: true
  /list-all-watched-dirs:
    get:
      summary: |-
        BROKEN (LT does not currently support watched files) - lists all
        directories to watch for new files
      parameters:
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: true
  /add-watched-dir:
    post:
      summary: |-
        BROKEN (LT does not currently support watched files) - adds a directory
        to the list of watched directories
      parameters:
        - name: path
          in: path
          description: the path of the directory on the server, base64 encoded
          required: true
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: true
  /remove-watched-dir:
    post:
      summary: |-
        BROKEN (LT does not currently support watched files) - removes a
        directory from the list of watched directories
      parameters:
        - name: path
          in: path
          description: the path of the directory on the server, base64 encoded
          required: true
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: true
  /set-storage-dir:
    post:
      summary: Sets the storage path for music files
      parameters:
        - name: path
          in: path
          description: The base64 encoded path to the new storage directory
          required: true
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: true
  /get-stream-setting:
    get:
      summary: |-
        BROKEN - Returns the settings configured for the four output Icecast
        streams
      parameters:
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: true
  /status:
    get:
      summary: |-
        BROKEN - Returns the current status of the various LibreTime
        components
      parameters:
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: true
  /register-component:
    post:
      summary: Add a service component (for example Monit)
      parameters:
        - name: component
          in: path
          description: The component name to add
          required: true
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: true
  /update-liquidsoap-status:
    post:
      summary: |-
        Update the status of a stream to indicate a Liquidsoap status update
      parameters:
        - name: msg_post
          in: path
          description: The error message to use
          required: true
        - name: stream_id
          in: path
          description: The ID of the stream to update
          required: true
        - name: boot_time
          description: |-
            The time that the status was last updated. Excluding this will
            force update.
          required: false
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: true
  /update-file-system-mount:
    post:
      summary: |-
        Handles additions/deletions of mount points on which watched
        directories reside
      parameters:
        - name: added_dir
          in: path
          description: |-
            A comma separated list of directories that were added to the system
          required: false
        - name: removed_dir
          in: path
          description: |-
            A comma separated list of directories that were removed from the
            system
          required: false
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: true
  /handle-watched-dir-missing:
    post:
      summary: |-
        BROKEN (LibreTime does not currently handle watched directories) -
        Handles missing watched directories.
      parameters:
        - name: dir
          in: path
          description: The directory to disable
          required: true
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: true
  /rabbitmq-do-push:
    post:
      summary: |-
        Used by dev scripts to make rabbitmq send out a message to pypo that a
        potential change has been made to the database.
      parameters:
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: true
  /check-live-stream-auth:
    get:
      summary: |-
        Tests the authentication supplied to authenticate DJs connecting to a
        live stream
      parameters:
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: true
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                username:
                  type: string
                password:
                  type: string
                  format: password
                djtype:
                  type: string
              required:
                - username
                - password
                - djtype
  /update-source-status:
    post:
      summary: Update on source connect or disconnect
      parameters:
        - name: sourcename
          in: path
          description: |-
            The name of the source that has connected or disconnected
        - name: status
          in: path
          description: true if the source is now connected
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: true
  /get-bootstrap-info:
    get:
      summary: |-
        BROKEN - Retrieves the current state of the instance. This includes
        which sources are currently connected, station name, etc
      parameters:
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: true
  /get-files-without-replay-gain:
    get:
      summary: |-
        BROKEN (returns all files) - Returns the files that do not have replay
        gain set.
      parameters:
        - name: dir_id
          in: path
          description: The directory ID
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: true
  /get-files-without-silan-value:
    get:
      summary: Returns the files that have not been processed by silan
      parameters:
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: true
      responses:
        "200":
          description: 200 response for default request
          content:
            application/json:
              example:
                [
                  { "id": 9, "fp": "/srv/airtime/stor/" },
                  {
                    "id": 12,
                    "fp": "/srv/airtime/stor/imported/1/Sam Smith Feat John Legend/The Official Uk Top 40 Singles Chart 03-22-2015/01 Sam Smith Feat John Legend - Lay Me Down.mp3",
                  },
                  {
                    "id": 13,
                    "fp": "/srv/airtime/stor/imported/1/Mumford & Sons/Wilder Mind [ Deluxe Edition ]/01 - Tompkins Square Park.mp3",
                  },
                  {
                    "id": 3,
                    "fp": "/srv/airtime/stor/imported/1/Bastille/All This Bad Blood/1-02 Things We Lost in the Fire.mp3",
                  },
                  {
                    "id": 1,
                    "fp": "/srv/airtime/stor/imported/1/Armin van Buuren/Another You (feat. Mr. Probz)/01 Another You (feat. Mr. Probz).mp3",
                  },
                  {
                    "id": 15,
                    "fp": "/srv/airtime/stor/imported/1/Harley Tate/Harley Tate - After the EMP 01 - After the EMP/Harley Tate - After the EMP 01 - After the EMP.mp3",
                  },
                ]
  /reload-metadata-group:
    get:
      summary: |-
        Extracts all file metadata from the list of files
      parameters:
        - name: mdXXX
          # This could be wrong - the function in ApiController is confusing...
          in: path
          description: |-
            A json encoded hash with all the information related to the action.
            the XXX represents at least 1 digit. Currently the mdXXX key has no
            meaning.
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: true
  /notify-webstream-data:
    post:
      summary: Notifies webstreams of data being updated
      parameters:
        - name: data
          in: path
          description: |-
            A json encoded hash with the data used to notify the webstream. This
            includes keys such as 'title'.
          required: true
        - name: media_id
          in: path
          description: The ID of the media to show
          required: true
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: true
  /get-stream-parameters:
    get:
      summary: BROKEN - Retrieves the parameters set for each stream
      parameters:
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: true
  /push-stream-stats:
    post:
      summary: Updates the listener number statistics
      parameters:
        - name: data
          in: path
          description: A json encoded mapping of time to number of listeners
          required: true
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: true
  /update-stream-setting-table:
    post:
      summary: Set stream settings
      parameters:
        - name: data
          in: path
          description: A json encoded array of key-value pairs to update
          required: true
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: true
  /update-replay-gain-value:
    post:
      summary: Updates the replay gain values for media items
      parameters:
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: true
        - name: data
          description: A json encoded array of media ID and gain pairs
          required: true
  /update-cue-values-by-silan:
    post:
      summary: Updates the silan cue values for media items
      parameters:
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: true
        - name: data
          description: A json encoded array of media ID and cue pairs
          required: true
  /get-usability-hint:
    get:
      summary: Returns the usability hint tool-tip for a UI item
      parameters:
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: true
        - name: userPath
          in: path
          description: The URL path to the UI item
          required: true
  /poll-celery:
    post:
      summary: Polls celery for tasks
      parameters:
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: true
  /recalculate-schedule:
    post:
      summary: Recalculates the schedule to remove gaps and update timing
      parameters:
        - name: api_key
          in: path
          description: The API key to use for authentication
          required: true