AzuraCast/web/static/api/openapi.yml

4147 lines
116 KiB
YAML

openapi: 3.0.0
info:
title: AzuraCast
description: 'AzuraCast is a standalone, turnkey web radio management tool. Radio stations hosted by AzuraCast expose a public API for viewing now playing data, making requests and more.'
license:
name: 'Apache 2.0'
url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
version: 0.14.1
servers:
-
url: 'https://demo.azuracast.com/api'
description: 'AzuraCast Public Demo Server'
paths:
/admin/custom_fields:
get:
tags:
- 'Administration: Custom Fields'
description: 'List all current custom fields in the system.'
operationId: getCustomFields
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CustomField'
'403':
description: 'Access denied'
security:
-
api_key: []
post:
tags:
- 'Administration: Custom Fields'
description: 'Create a new custom field.'
operationId: addCustomField
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CustomField'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/CustomField'
'403':
description: 'Access denied'
security:
-
api_key: []
'/admin/custom_field/{id}':
get:
tags:
- 'Administration: Custom Fields'
description: 'Retrieve details for a single custom field.'
operationId: getCustomField
parameters:
-
name: id
in: path
description: ID
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/CustomField'
'403':
description: 'Access denied'
security:
-
api_key: []
put:
tags:
- 'Administration: Custom Fields'
description: 'Update details of a single custom field.'
operationId: editCustomField
parameters:
-
name: id
in: path
description: ID
required: true
schema:
type: integer
format: int64
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CustomField'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Status'
'403':
description: 'Access denied'
security:
-
api_key: []
delete:
tags:
- 'Administration: Custom Fields'
description: 'Delete a single custom field.'
operationId: deleteCustomField
parameters:
-
name: id
in: path
description: ID
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Status'
'403':
description: 'Access denied'
security:
-
api_key: []
/admin/permissions:
get:
tags:
- 'Administration: Roles'
description: 'Return a list of all available permissions.'
operationId: getPermissions
responses:
'200':
description: Success
'403':
description: 'Access denied'
security:
-
api_key: []
/internal/relays:
get:
tags:
- 'Administration: Relays'
description: 'Returns all necessary information to relay all ''relayable'' stations.'
operationId: internalGetRelayDetails
parameters: []
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Api_Admin_Relay'
/admin/roles:
get:
tags:
- 'Administration: Roles'
description: 'List all current roles in the system.'
operationId: getRoles
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Role'
'403':
description: 'Access denied'
security:
-
api_key: []
post:
tags:
- 'Administration: Roles'
description: 'Create a new role.'
operationId: addRole
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Role'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Role'
'403':
description: 'Access denied'
security:
-
api_key: []
'/admin/role/{id}':
get:
tags:
- 'Administration: Roles'
description: 'Retrieve details for a single current role.'
operationId: getRole
parameters:
-
name: id
in: path
description: 'Role ID'
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Role'
'403':
description: 'Access denied'
security:
-
api_key: []
put:
tags:
- 'Administration: Roles'
description: 'Update details of a single role.'
operationId: editRole
parameters:
-
name: id
in: path
description: 'Role ID'
required: true
schema:
type: integer
format: int64
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Role'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Status'
'403':
description: 'Access denied'
security:
-
api_key: []
delete:
tags:
- 'Administration: Roles'
description: 'Delete a single role.'
operationId: deleteRole
parameters:
-
name: id
in: path
description: 'Role ID'
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Status'
'403':
description: 'Access denied'
security:
-
api_key: []
/admin/settings:
get:
tags:
- 'Administration: Settings'
description: 'List the current values of all editable system settings.'
operationId: getSettings
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Settings'
'403':
description: 'Access denied'
security:
-
api_key: []
put:
tags:
- 'Administration: Settings'
description: 'Update settings to modify any settings provided.'
operationId: editSettings
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Settings'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Status'
'403':
description: 'Access denied'
security:
-
api_key: []
/admin/stations:
get:
tags:
- 'Administration: Stations'
description: 'List all current stations in the system.'
operationId: adminGetStations
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Station'
'403':
description: 'Access denied'
security:
-
api_key: []
post:
tags:
- 'Administration: Stations'
description: 'Create a new station.'
operationId: adminAddStation
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Station'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Station'
'403':
description: 'Access denied'
security:
-
api_key: []
'/admin/station/{id}':
get:
tags:
- 'Administration: Stations'
description: 'Retrieve details for a single station.'
operationId: adminGetStation
parameters:
-
name: id
in: path
description: ID
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Station'
'403':
description: 'Access denied'
security:
-
api_key: []
put:
tags:
- 'Administration: Stations'
description: 'Update details of a single station.'
operationId: adminEditStation
parameters:
-
name: id
in: path
description: ID
required: true
schema:
type: integer
format: int64
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Station'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Status'
'403':
description: 'Access denied'
security:
-
api_key: []
delete:
tags:
- 'Administration: Stations'
description: 'Delete a single station.'
operationId: adminDeleteStation
parameters:
-
name: id
in: path
description: ID
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Status'
'403':
description: 'Access denied'
security:
-
api_key: []
/admin/storage_locations:
get:
tags:
- 'Administration: Storage Locations'
description: 'List all current storage locations in the system.'
operationId: getStorageLocations
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Api_Admin_StorageLocation'
'403':
description: 'Access denied'
security:
-
api_key: []
post:
tags:
- 'Administration: Storage Locations'
description: 'Create a new storage location.'
operationId: addStorageLocation
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Admin_StorageLocation'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Admin_StorageLocation'
'403':
description: 'Access denied'
security:
-
api_key: []
'/admin/storage_location/{id}':
get:
tags:
- 'Administration: Storage Locations'
description: 'Retrieve details for a single storage location.'
operationId: getStorageLocation
parameters:
-
name: id
in: path
description: 'User ID'
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Admin_StorageLocation'
'403':
description: 'Access denied'
security:
-
api_key: []
put:
tags:
- 'Administration: Storage Locations'
description: 'Update details of a single storage location.'
operationId: editStorageLocation
parameters:
-
name: id
in: path
description: 'Storage Location ID'
required: true
schema:
type: integer
format: int64
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Admin_StorageLocation'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Status'
'403':
description: 'Access denied'
security:
-
api_key: []
delete:
tags:
- 'Administration: Storage Locations'
description: 'Delete a single storage location.'
operationId: deleteStorageLocation
parameters:
-
name: id
in: path
description: 'Storage Location ID'
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Status'
'403':
description: 'Access denied'
security:
-
api_key: []
/admin/users:
get:
tags:
- 'Administration: Users'
description: 'List all current users in the system.'
operationId: getUsers
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/User'
'403':
description: 'Access denied'
security:
-
api_key: []
post:
tags:
- 'Administration: Users'
description: 'Create a new user.'
operationId: addUser
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/User'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/User'
'403':
description: 'Access denied'
security:
-
api_key: []
'/admin/user/{id}':
get:
tags:
- 'Administration: Users'
description: 'Retrieve details for a single current user.'
operationId: getUser
parameters:
-
name: id
in: path
description: 'User ID'
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/User'
'403':
description: 'Access denied'
security:
-
api_key: []
put:
tags:
- 'Administration: Users'
description: 'Update details of a single user.'
operationId: editUser
parameters:
-
name: id
in: path
description: 'User ID'
required: true
schema:
type: integer
format: int64
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/User'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Status'
'403':
description: 'Access denied'
security:
-
api_key: []
delete:
tags:
- 'Administration: Users'
description: 'Delete a single user.'
operationId: deleteUser
parameters:
-
name: id
in: path
description: 'User ID'
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Status'
'403':
description: 'Access denied'
security:
-
api_key: []
/status:
get:
tags:
- Miscellaneous
description: 'Returns an affirmative response if the API is active.'
operationId: bc32a129ca3e8ad2060b71bdd90da78d
parameters: []
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_SystemStatus'
/time:
get:
tags:
- Miscellaneous
description: 'Returns the time (with formatting) in GMT and the user''s local time zone, if logged in.'
operationId: 3092a8238a915a0b6b324f2a90942a94
parameters: []
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Time'
/nowplaying:
get:
tags:
- 'Now Playing'
description: 'Returns a full summary of all stations'' current state.'
operationId: 2ac086b9720325236f99cd3c185cc5c8
parameters: []
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Api_NowPlaying'
'/nowplaying/{station_id}':
get:
tags:
- 'Now Playing'
description: 'Returns a full summary of the specified station''s current state.'
operationId: 4ffcbe7b5873aecdb0872e3b312c6791
parameters:
-
$ref: '#/components/parameters/station_id_required'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_NowPlaying'
'404':
description: 'Station not found'
'/station/{station_id}/art/{media_id}':
get:
tags:
- 'Stations: Media'
description: 'Returns the album art for a song, or a generic image.'
operationId: 1b9853f0af3c8fbe4d3af9af0e6d1a45
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: media_id
in: path
description: 'The station media unique ID'
required: true
schema:
type: string
responses:
'200':
description: 'The requested album artwork'
'404':
description: 'Image not found; generic filler image.'
'/station/{station_id}/files':
get:
tags:
- 'Stations: Media'
description: 'List all current uploaded files.'
operationId: getFiles
parameters:
-
$ref: '#/components/parameters/station_id_required'
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/StationMedia'
'403':
description: 'Access denied'
security:
-
api_key: []
post:
tags:
- 'Stations: Media'
description: 'Upload a new file.'
operationId: addFile
parameters:
-
$ref: '#/components/parameters/station_id_required'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Api_UploadFile'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/StationMedia'
'403':
description: 'Access denied'
security:
-
api_key: []
'/station/{station_id}/file/{id}':
get:
tags:
- 'Stations: Media'
description: 'Retrieve details for a single file.'
operationId: getFile
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: id
in: path
description: 'Media ID'
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/StationMedia'
'403':
description: 'Access denied'
security:
-
api_key: []
put:
tags:
- 'Stations: Media'
description: 'Update details of a single file.'
operationId: editFile
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: id
in: path
description: 'Media ID'
required: true
schema:
type: integer
format: int64
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/StationMedia'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Status'
'403':
description: 'Access denied'
security:
-
api_key: []
delete:
tags:
- 'Stations: Media'
description: 'Delete a single file.'
operationId: deleteFile
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: id
in: path
description: 'Media ID'
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Status'
'403':
description: 'Access denied'
security:
-
api_key: []
'/station/{station_id}/history':
get:
tags:
- 'Stations: History'
description: 'Return song playback history items for a given station.'
operationId: getStationHistory
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: start
in: query
description: 'The start date for records, in YYYY-MM-DD format.'
required: false
schema:
type: string
-
name: end
in: query
description: 'The end date for records, in YYYY-MM-DD format.'
required: false
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Api_DetailedSongHistory'
'404':
description: 'Station not found'
'403':
description: 'Access denied'
security:
-
api_key: []
/stations:
get:
tags:
- 'Stations: General'
description: 'Returns a list of stations.'
operationId: getStations
parameters: []
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Api_NowPlaying_Station'
'/station/{station_id}':
get:
tags:
- 'Stations: General'
description: 'Return information about a single station.'
operationId: getStation
parameters:
-
$ref: '#/components/parameters/station_id_required'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_NowPlaying_Station'
'404':
description: 'Station not found'
'/station/{station_id}/listeners':
get:
tags:
- 'Stations: Listeners'
description: 'Return detailed information about current listeners.'
operationId: getStationListeners
parameters:
-
$ref: '#/components/parameters/station_id_required'
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Api_Listener'
'404':
description: 'Station not found'
'403':
description: 'Access denied'
security:
-
api_key: []
'/station/{station_id}/mounts':
get:
tags:
- 'Stations: Mount Points'
description: 'List all current mount points.'
operationId: getStationMounts
parameters:
-
$ref: '#/components/parameters/station_id_required'
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/StationMount'
'403':
description: 'Access denied'
security:
-
api_key: []
post:
tags:
- 'Stations: Mount Points'
description: 'Create a new mount point.'
operationId: addMount
parameters:
-
$ref: '#/components/parameters/station_id_required'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/StationMount'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/StationMount'
'403':
description: 'Access denied'
security:
-
api_key: []
'/station/{station_id}/mount/{id}':
get:
tags:
- 'Stations: Mount Points'
description: 'Retrieve details for a single mount point.'
operationId: getMount
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: id
in: path
description: 'Streamer ID'
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/StationMount'
'403':
description: 'Access denied'
security:
-
api_key: []
put:
tags:
- 'Stations: Mount Points'
description: 'Update details of a single mount point.'
operationId: editMount
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: id
in: path
description: 'Streamer ID'
required: true
schema:
type: integer
format: int64
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/StationMount'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Status'
'403':
description: 'Access denied'
security:
-
api_key: []
delete:
tags:
- 'Stations: Mount Points'
description: 'Delete a single mount point.'
operationId: deleteMount
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: id
in: path
description: 'StationMount ID'
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Status'
'403':
description: 'Access denied'
security:
-
api_key: []
'/station/{station_id}/playlists':
get:
tags:
- 'Stations: Playlists'
description: 'List all current playlists.'
operationId: getPlaylists
parameters:
-
$ref: '#/components/parameters/station_id_required'
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/StationPlaylist'
'403':
description: 'Access denied'
security:
-
api_key: []
post:
tags:
- 'Stations: Playlists'
description: 'Create a new playlist.'
operationId: addPlaylist
parameters:
-
$ref: '#/components/parameters/station_id_required'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/StationPlaylist'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/StationPlaylist'
'403':
description: 'Access denied'
security:
-
api_key: []
'/station/{station_id}/playlist/{id}':
get:
tags:
- 'Stations: Playlists'
description: 'Retrieve details for a single playlist.'
operationId: getPlaylist
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: id
in: path
description: 'Playlist ID'
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/StationPlaylist'
'403':
description: 'Access denied'
security:
-
api_key: []
put:
tags:
- 'Stations: Playlists'
description: 'Update details of a single playlist.'
operationId: editPlaylist
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: id
in: path
description: 'Playlist ID'
required: true
schema:
type: integer
format: int64
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/StationPlaylist'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Status'
'403':
description: 'Access denied'
security:
-
api_key: []
delete:
tags:
- 'Stations: Playlists'
description: 'Delete a single playlist relay.'
operationId: deletePlaylist
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: id
in: path
description: 'Playlist ID'
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Status'
'403':
description: 'Access denied'
security:
-
api_key: []
'/station/{station_id}/podcast/{podcast_id}/episodes':
get:
tags:
- 'Stations: Podcasts'
description: 'List all current episodes for a given podcast ID.'
operationId: getEpisodes
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: podcast_id
in: path
description: 'Podcast ID'
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Api_PodcastEpisode'
'403':
description: 'Access denied'
security:
-
api_key: []
post:
tags:
- 'Stations: Podcasts'
description: 'Create a new podcast episode.'
operationId: addEpisode
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: podcast_id
in: path
description: 'Podcast ID'
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Api_PodcastEpisode'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_PodcastEpisode'
'403':
description: 'Access denied'
security:
-
api_key: []
'/station/{station_id}/podcast/{podcast_id}/episode/{id}':
get:
tags:
- 'Stations: Podcasts'
description: 'Retrieve details for a single podcast episode.'
operationId: getEpisode
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: podcast_id
in: path
description: 'Podcast ID'
required: true
schema:
type: string
-
name: id
in: path
description: 'Podcast Episode ID'
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_PodcastEpisode'
'403':
description: 'Access denied'
security:
-
api_key: []
put:
tags:
- 'Stations: Podcasts'
description: 'Update details of a single podcast episode.'
operationId: editEpisode
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: podcast_id
in: path
description: 'Podcast ID'
required: true
schema:
type: string
-
name: id
in: path
description: 'Podcast Episode ID'
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Api_PodcastEpisode'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Status'
'403':
description: 'Access denied'
security:
-
api_key: []
delete:
tags:
- 'Stations: Podcasts'
description: 'Delete a single podcast episode.'
operationId: deleteEpisode
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: podcast_id
in: path
description: 'Podcast ID'
required: true
schema:
type: string
-
name: id
in: path
description: 'Podcast Episode ID'
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Status'
'403':
description: 'Access denied'
security:
-
api_key: []
'/station/{station_id}/podcasts':
get:
tags:
- 'Stations: Podcasts'
description: 'List all current podcasts.'
operationId: getPodcasts
parameters:
-
$ref: '#/components/parameters/station_id_required'
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Api_Podcast'
'403':
description: 'Access denied'
security:
-
api_key: []
post:
tags:
- 'Stations: Podcasts'
description: 'Create a new podcast.'
operationId: addPodcast
parameters:
-
$ref: '#/components/parameters/station_id_required'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Podcast'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Podcast'
'403':
description: 'Access denied'
security:
-
api_key: []
'/station/{station_id}/podcast/{id}':
get:
tags:
- 'Stations: Podcasts'
description: 'Retrieve details for a single podcast.'
operationId: getPodcast
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: id
in: path
description: 'Podcast ID'
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Podcast'
'403':
description: 'Access denied'
security:
-
api_key: []
put:
tags:
- 'Stations: Podcasts'
description: 'Update details of a single podcast.'
operationId: editPodcast
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: id
in: path
description: 'Podcast ID'
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Podcast'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Status'
'403':
description: 'Access denied'
security:
-
api_key: []
delete:
tags:
- 'Stations: Podcasts'
description: 'Delete a single podcast.'
operationId: deletePodcast
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: id
in: path
description: 'Podcast ID'
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Status'
'403':
description: 'Access denied'
security:
-
api_key: []
'/station/{station_id}/queue':
get:
tags:
- 'Stations: Queue'
description: 'Return information about the upcoming song playback queue.'
operationId: getQueue
parameters:
-
$ref: '#/components/parameters/station_id_required'
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Api_StationQueueDetailed'
'404':
description: 'Station not found'
'403':
description: 'Access denied'
security:
-
api_key: []
'/station/{station_id}/queue/{id}':
get:
tags:
- 'Stations: Queue'
description: 'Retrieve details of a single queued item.'
operationId: getQueueItem
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: id
in: path
description: 'Queue Item ID'
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_StationQueueDetailed'
'404':
description: 'Station or Queue ID not found'
'403':
description: 'Access denied'
security:
-
api_key: []
delete:
tags:
- 'Stations: Queue'
description: 'Delete a single queued item.'
operationId: deleteQueueItem
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: id
in: path
description: 'Queue Item ID'
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Status'
'404':
description: 'Station or Queue ID not found'
'403':
description: 'Access denied'
security:
-
api_key: []
'/station/{station_id}/remotes':
get:
tags:
- 'Stations: Remote Relays'
description: 'List all current remote relays.'
operationId: getRelays
parameters:
-
$ref: '#/components/parameters/station_id_required'
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Api_StationRemote'
'403':
description: 'Access denied'
security:
-
api_key: []
post:
tags:
- 'Stations: Remote Relays'
description: 'Create a new remote relay.'
operationId: addRelay
parameters:
-
$ref: '#/components/parameters/station_id_required'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Api_StationRemote'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_StationRemote'
'403':
description: 'Access denied'
security:
-
api_key: []
'/station/{station_id}/remote/{id}':
get:
tags:
- 'Stations: Remote Relays'
description: 'Retrieve details for a single remote relay.'
operationId: getRelay
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: id
in: path
description: 'Remote Relay ID'
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_StationRemote'
'403':
description: 'Access denied'
security:
-
api_key: []
put:
tags:
- 'Stations: Remote Relays'
description: 'Update details of a single remote relay.'
operationId: editRelay
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: id
in: path
description: 'Remote Relay ID'
required: true
schema:
type: integer
format: int64
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Api_StationRemote'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Status'
'403':
description: 'Access denied'
security:
-
api_key: []
delete:
tags:
- 'Stations: Remote Relays'
description: 'Delete a single remote relay.'
operationId: deleteRelay
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: id
in: path
description: 'Remote Relay ID'
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Status'
'403':
description: 'Access denied'
security:
-
api_key: []
'/station/{station_id}/requests':
get:
tags:
- 'Stations: Song Requests'
description: 'Return a list of requestable songs.'
operationId: getRequestableSongs
parameters:
-
$ref: '#/components/parameters/station_id_required'
responses:
'200':
description: Success
'404':
description: 'Station not found'
'403':
description: 'Station does not support requests'
'/station/{station_id}/request/{request_id}':
post:
tags:
- 'Stations: Song Requests'
description: 'Submit a song request.'
operationId: submitSongRequest
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: request_id
in: path
description: 'The requestable song ID'
required: true
schema:
type: string
responses:
'200':
description: Success
'404':
description: 'Station not found'
'403':
description: 'Station does not support requests'
'/station/{station_id}/schedule':
get:
tags:
- 'Stations: Schedules'
description: 'Return upcoming and currently ongoing schedule entries.'
operationId: getSchedule
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: now
in: query
description: 'The date/time to compare schedule items to. Defaults to the current date and time.'
required: false
schema:
type: string
-
name: rows
in: query
description: 'The number of upcoming/ongoing schedule entries to return. Defaults to 5.'
required: false
schema:
type: integer
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Api_StationSchedule'
'404':
description: 'Station not found'
'403':
description: 'Access denied'
'/station/{station_id}/status':
get:
tags:
- 'Stations: Service Control'
description: 'Retrieve the current status of all serivces associated with the radio broadcast.'
operationId: getServiceStatus
parameters:
-
$ref: '#/components/parameters/station_id_required'
responses:
'200':
description: Success
'403':
description: 'Access Forbidden'
security:
-
api_key: []
'/station/{station_id}/restart':
post:
tags:
- 'Stations: Service Control'
description: 'Restart all services associated with the radio broadcast.'
operationId: restartServices
parameters:
-
$ref: '#/components/parameters/station_id_required'
responses:
'200':
description: Success
'403':
description: 'Access Forbidden'
security:
-
api_key: []
'/station/{station_id}/frontend/{action}':
post:
tags:
- 'Stations: Service Control'
description: 'Perform service control actions on the radio frontend (Icecast, SHOUTcast, etc.)'
operationId: doFrontendServiceAction
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: action
in: path
description: 'The action to perform (start, stop, restart)'
required: false
schema:
type: string
default: restart
responses:
'200':
description: Success
'403':
description: 'Access Forbidden'
security:
-
api_key: []
'/station/{station_id}/backend/{action}':
post:
tags:
- 'Stations: Service Control'
description: 'Perform service control actions on the radio backend (Liquidsoap)'
operationId: doBackendServiceAction
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: action
in: path
description: 'The action to perform (for all: start, stop, restart; for Liquidsoap only: skip, disconnect)'
required: false
schema:
type: string
default: restart
responses:
'200':
description: Success
'403':
description: 'Access Forbidden'
security:
-
api_key: []
'/station/{station_id}/sftp-users':
get:
tags:
- 'Stations: SFTP Users'
description: 'List all current SFTP users.'
operationId: getSftpUsers
parameters:
-
$ref: '#/components/parameters/station_id_required'
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/SftpUser'
'403':
description: 'Access denied'
security:
-
api_key: []
post:
tags:
- 'Stations: SFTP Users'
description: 'Create a new SFTP user.'
operationId: addSftpUser
parameters:
-
$ref: '#/components/parameters/station_id_required'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SftpUser'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/SftpUser'
'403':
description: 'Access denied'
security:
-
api_key: []
'/station/{station_id}/sftp-user/{id}':
get:
tags:
- 'Stations: SFTP Users'
description: 'Retrieve details for a single SFTP user.'
operationId: getSftpUser
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: id
in: path
description: 'SFTP User ID'
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/SftpUser'
'403':
description: 'Access denied'
security:
-
api_key: []
put:
tags:
- 'Stations: SFTP Users'
description: 'Update details of a single SFTP user.'
operationId: editSftpUser
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: id
in: path
description: 'Remote Relay ID'
required: true
schema:
type: integer
format: int64
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SftpUser'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Status'
'403':
description: 'Access denied'
security:
-
api_key: []
delete:
tags:
- 'Stations: SFTP Users'
description: 'Delete a single remote relay.'
operationId: deleteSftpUser
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: id
in: path
description: 'Remote Relay ID'
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Status'
'403':
description: 'Access denied'
security:
-
api_key: []
'/station/{station_id}/streamers':
get:
tags:
- 'Stations: Streamers/DJs'
description: 'List all current Streamer/DJ accounts for the specified station.'
operationId: getStreamers
parameters:
-
$ref: '#/components/parameters/station_id_required'
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/StationStreamer'
'403':
description: 'Access denied'
security:
-
api_key: []
post:
tags:
- 'Stations: Streamers/DJs'
description: 'Create a new Streamer/DJ account.'
operationId: addStreamer
parameters:
-
$ref: '#/components/parameters/station_id_required'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/StationStreamer'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/StationStreamer'
'403':
description: 'Access denied'
security:
-
api_key: []
'/station/{station_id}/streamer/{id}':
get:
tags:
- 'Stations: Streamers/DJs'
description: 'Retrieve details for a single Streamer/DJ account.'
operationId: getStreamer
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: id
in: path
description: 'Streamer ID'
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/StationStreamer'
'403':
description: 'Access denied'
security:
-
api_key: []
put:
tags:
- 'Stations: Streamers/DJs'
description: 'Update details of a single Streamer/DJ account.'
operationId: editStreamer
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: id
in: path
description: 'Streamer ID'
required: true
schema:
type: integer
format: int64
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/StationStreamer'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Status'
'403':
description: 'Access denied'
security:
-
api_key: []
delete:
tags:
- 'Stations: Streamers/DJs'
description: 'Delete a single Streamer/DJ account.'
operationId: deleteStreamer
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: id
in: path
description: 'StationStreamer ID'
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Status'
'403':
description: 'Access denied'
security:
-
api_key: []
'/station/{station_id}/webhooks':
get:
tags:
- 'Stations: Web Hooks'
description: 'List all current web hooks.'
operationId: getWebhooks
parameters:
-
$ref: '#/components/parameters/station_id_required'
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/StationWebhook'
'403':
description: 'Access denied'
security:
-
api_key: []
post:
tags:
- 'Stations: Web Hooks'
description: 'Create a new web hook.'
operationId: addWebhook
parameters:
-
$ref: '#/components/parameters/station_id_required'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/StationWebhook'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/StationWebhook'
'403':
description: 'Access denied'
security:
-
api_key: []
'/station/{station_id}/webhook/{id}':
get:
tags:
- 'Stations: Web Hooks'
description: 'Retrieve details for a single web hook.'
operationId: getWebhook
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: id
in: path
description: 'Web Hook ID'
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/StationWebhook'
'403':
description: 'Access denied'
security:
-
api_key: []
put:
tags:
- 'Stations: Web Hooks'
description: 'Update details of a single web hook.'
operationId: editWebhook
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: id
in: path
description: 'Web Hook ID'
required: true
schema:
type: integer
format: int64
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/StationWebhook'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Status'
'403':
description: 'Access denied'
security:
-
api_key: []
delete:
tags:
- 'Stations: Web Hooks'
description: 'Delete a single web hook relay.'
operationId: deleteWebhook
parameters:
-
$ref: '#/components/parameters/station_id_required'
-
name: id
in: path
description: 'Web Hook ID'
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Api_Status'
'403':
description: 'Access denied'
security:
-
api_key: []
components:
schemas:
Api_Admin_Relay:
properties:
id:
description: 'Station ID'
type: integer
example: 1
name:
description: 'Station name'
type: string
example: 'AzuraTest Radio'
nullable: true
shortcode:
description: 'Station "short code", used for URL and folder paths'
type: string
example: azuratest_radio
nullable: true
description:
description: 'Station description'
type: string
example: 'An AzuraCast station!'
nullable: true
url:
description: 'Station homepage URL'
type: string
example: 'https://www.azuracast.com/'
nullable: true
genre:
description: 'The genre of the station'
type: string
example: Variety
nullable: true
type:
description: 'Which broadcasting software (frontend) the station uses'
type: string
example: shoutcast2
nullable: true
port:
description: 'The port used by this station to serve its broadcasts.'
type: integer
example: 8000
nullable: true
relay_pw:
description: 'The relay password for the frontend (if applicable).'
type: string
example: p4ssw0rd
admin_pw:
description: 'The administrator password for the frontend (if applicable).'
type: string
example: p4ssw0rd
mounts:
type: array
items: { }
type: object
Api_Admin_StorageLocation:
properties:
id:
type: integer
example: 1
type:
description: 'The type of storage location.'
type: string
example: station_media
adapter:
description: 'The storage adapter to use for this location.'
type: string
example: local
path:
description: 'The local path, if the local adapter is used, or path prefix for S3/remote adapters.'
type: string
example: /var/azuracast/stations/azuratest_radio/media
nullable: true
s3CredentialKey:
description: 'The credential key for S3 adapters.'
type: string
example: your-key-here
nullable: true
s3CredentialSecret:
description: 'The credential secret for S3 adapters.'
type: string
example: your-secret-here
nullable: true
s3Region:
description: 'The region for S3 adapters.'
type: string
example: your-region
nullable: true
s3Version:
description: 'The API version for S3 adapters.'
type: string
example: latest
nullable: true
s3Bucket:
description: 'The S3 bucket name for S3 adapters.'
type: string
example: your-bucket-name
nullable: true
s3Endpoint:
description: 'The optional custom S3 endpoint S3 adapters.'
type: string
example: 'https://your-region.digitaloceanspaces.com'
nullable: true
storageQuota:
type: string
example: '50 GB'
nullable: true
storageQuotaBytes:
type: string
example: '120000'
nullable: true
storageUsed:
type: string
example: '1 GB'
nullable: true
storageUsedBytes:
type: string
example: '60000'
nullable: true
storageAvailable:
type: string
example: '1 GB'
nullable: true
storageAvailableBytes:
type: string
example: '120000'
nullable: true
storageUsedPercent:
type: integer
example: '75'
nullable: true
isFull:
type: boolean
example: 'true'
uri:
description: 'The URI associated with the storage location.'
type: string
example: /var/azuracast/www
stations:
description: 'The stations using this storage location, if any.'
type: array
items:
type: string
example: 'AzuraTest Radio'
nullable: true
type: object
Api_DetailedSongHistory:
type: object
allOf:
-
properties:
listeners_start:
description: 'Number of listeners when the song playback started.'
type: integer
example: 94
listeners_end:
description: 'Number of listeners when song playback ended.'
type: integer
example: 105
delta_total:
description: 'The sum total change of listeners between the song''s start and ending.'
type: integer
example: 11
-
$ref: '#/components/schemas/Api_NowPlaying_SongHistory'
Api_Error:
properties:
code:
description: 'The numeric code of the error.'
type: integer
example: 500
type:
description: 'The programmatic class of error.'
type: string
example: NotLoggedInException
message:
description: 'The text description of the error.'
type: string
example: 'Error description.'
formatted_message:
description: 'The HTML-formatted text description of the error.'
type: string
example: '<b>Error description.</b><br>Detailed error text.'
nullable: true
extra_data:
description: 'Stack traces and other supplemental data.'
type: array
items: { }
success:
description: 'Used for API calls that expect an \Entity\Api\Status type response.'
type: boolean
example: false
type: object
Api_Listener:
properties:
ip:
description: 'The listener''s IP address'
type: string
example: 127.0.0.1
user_agent:
description: "The listener's HTTP User-Agent\n\nphpcs:disable Generic.Files.LineLength"
type: string
example: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.86 Safari/537.36'
hash:
description: 'A unique identifier for this instance of this listener on this user agent (used for unique calculations).'
type: string
example: ''
client:
description: 'The listener''s client details (extracted from user-agent)'
type: string
example: ''
is_mobile:
description: 'Whether the user-agent is likely a mobile browser.'
type: boolean
example: true
mount_is_local:
description: 'Whether the user is connected to a local mount point or a remote one.'
type: boolean
example: false
mount_name:
description: 'The display name of the mount point.'
type: string
example: /radio.mp3
connected_on:
description: 'UNIX timestamp that the user first connected.'
type: integer
example: 1609480800
connected_until:
description: 'UNIX timestamp that the user disconnected (or the latest timestamp if they are still connected).'
type: integer
example: 1609480800
connected_time:
description: 'Number of seconds that the user has been connected.'
type: integer
example: 30
location:
description: 'Location metadata, if available'
type: array
items: { }
type: object
Api_NewRecord:
type: object
allOf:
-
properties:
links:
type: array
items:
type: string
example: 'http://localhost/api/record/1'
-
$ref: '#/components/schemas/Api_Status'
Api_NowPlaying_CurrentSong:
type: object
allOf:
-
properties:
elapsed:
description: 'Elapsed time of the song''s playback since it started.'
type: integer
example: 25
remaining:
description: 'Remaining time in the song, in seconds.'
type: integer
example: 155
-
$ref: '#/components/schemas/Api_NowPlaying_SongHistory'
Api_NowPlaying_Listeners:
properties:
total:
description: 'Total non-unique current listeners'
type: integer
example: 20
unique:
description: 'Total unique current listeners'
type: integer
example: 15
current:
description: 'Total non-unique current listeners (Legacy field, may be retired in the future.)'
type: integer
example: 20
type: object
Api_NowPlaying_Live:
properties:
is_live:
description: 'Whether the stream is known to currently have a live DJ.'
type: boolean
example: false
streamer_name:
description: 'The current active streamer/DJ, if one is available.'
type: string
example: 'DJ Jazzy Jeff'
broadcast_start:
description: 'The start timestamp of the current broadcast, if one is available.'
type: integer
example: '1591548318'
nullable: true
type: object
Api_NowPlaying:
properties:
station:
$ref: '#/components/schemas/Api_NowPlaying_Station'
listeners:
$ref: '#/components/schemas/Api_NowPlaying_Listeners'
live:
$ref: '#/components/schemas/Api_NowPlaying_Live'
now_playing:
$ref: '#/components/schemas/Api_NowPlaying_CurrentSong'
playing_next:
$ref: '#/components/schemas/Api_NowPlaying_StationQueue'
song_history:
type: array
items:
$ref: '#/components/schemas/Api_NowPlaying_SongHistory'
is_online:
description: 'Whether the stream is currently online.'
type: boolean
example: true
cache:
description: 'Debugging information about where the now playing data comes from.'
type: string
enum:
- hit
- database
- station
nullable: true
type: object
Api_NowPlaying_SongHistory:
properties:
sh_id:
description: 'Song history unique identifier'
type: integer
played_at:
description: 'UNIX timestamp when playback started.'
type: integer
example: 1609480800
duration:
description: 'Duration of the song in seconds'
type: integer
example: 180
playlist:
description: 'Indicates the playlist that the song was played from, if available, or empty string if not.'
type: string
example: 'Top 100'
nullable: true
streamer:
description: 'Indicates the current streamer that was connected, if available, or empty string if not.'
type: string
example: 'Test DJ'
nullable: true
is_request:
description: 'Indicates whether the song is a listener request.'
type: boolean
song:
$ref: '#/components/schemas/Api_Song'
type: object
Api_NowPlaying_Station:
properties:
id:
description: 'Station ID'
type: integer
example: 1
name:
description: 'Station name'
type: string
example: 'AzuraTest Radio'
shortcode:
description: 'Station "short code", used for URL and folder paths'
type: string
example: azuratest_radio
description:
description: 'Station description'
type: string
example: 'An AzuraCast station!'
frontend:
description: 'Which broadcasting software (frontend) the station uses'
type: string
example: shoutcast2
backend:
description: 'Which AutoDJ software (backend) the station uses'
type: string
example: liquidsoap
listen_url:
description: 'The full URL to listen to the default mount of the station'
example: 'http://localhost:8000/radio.mp3'
url:
description: 'The public URL of the station.'
type: string
example: 'https://example.com/'
nullable: true
public_player_url:
description: 'The public player URL for the station.'
example: 'https://example.com/public/example_station'
playlist_pls_url:
description: 'The playlist download URL in PLS format.'
example: 'https://example.com/public/example_station/playlist.pls'
playlist_m3u_url:
description: 'The playlist download URL in M3U format.'
example: 'https://example.com/public/example_station/playlist.m3u'
is_public:
description: 'If the station is public (i.e. should be shown in listings of all stations)'
type: boolean
example: true
mounts:
type: array
items:
$ref: '#/components/schemas/Api_NowPlaying_StationMount'
remotes:
type: array
items:
$ref: '#/components/schemas/Api_NowPlaying_StationRemote'
type: object
Api_NowPlaying_StationMount:
type: object
allOf:
-
properties:
path:
description: 'The relative path that corresponds to this mount point'
type: string
example: /radio.mp3
is_default:
description: 'If the mount is the default mount for the parent station'
type: boolean
example: true
-
$ref: '#/components/schemas/Api_NowPlaying_StationRemote'
Api_NowPlaying_StationQueue:
properties:
cued_at:
description: 'UNIX timestamp when the AutoDJ is expected to queue the song for playback.'
type: integer
example: 1609480800
played_at:
description: 'UNIX timestamp when playback is expected to start.'
type: integer
example: 1609480800
duration:
description: 'Duration of the song in seconds'
type: integer
example: 180
playlist:
description: 'Indicates the playlist that the song was played from, if available, or empty string if not.'
type: string
example: 'Top 100'
nullable: true
is_request:
description: 'Indicates whether the song is a listener request.'
type: boolean
song:
$ref: '#/components/schemas/Api_Song'
type: object
Api_NowPlaying_StationRemote:
properties:
id:
description: 'Mount/Remote ID number.'
type: integer
example: 1
name:
description: 'Mount point name/URL'
type: string
example: /radio.mp3
url:
description: 'Full listening URL specific to this mount'
example: 'http://localhost:8000/radio.mp3'
bitrate:
description: 'Bitrate (kbps) of the broadcasted audio (if known)'
type: integer
example: 128
nullable: true
format:
description: 'Audio encoding format of broadcasted audio (if known)'
type: string
example: mp3
nullable: true
listeners:
$ref: '#/components/schemas/Api_NowPlaying_Listeners'
type: object
Api_Podcast:
type: object
allOf:
-
properties:
id:
type: string
nullable: true
storage_location_id:
type: integer
nullable: true
title:
type: string
nullable: true
link:
type: string
nullable: true
description:
type: string
nullable: true
language:
type: string
nullable: true
author:
type: string
nullable: true
email:
type: string
nullable: true
has_custom_art:
type: boolean
art:
type: string
nullable: true
art_updated_at:
type: integer
categories:
type: array
items:
type: string
episodes:
type: array
items:
type: string
-
$ref: '#/components/schemas/HasLinks'
Api_PodcastEpisode:
type: object
allOf:
-
properties:
id:
type: string
nullable: true
title:
type: string
nullable: true
description:
type: string
nullable: true
explicit:
type: boolean
publish_at:
type: integer
nullable: true
has_media:
type: boolean
media:
$ref: '#/components/schemas/Api_PodcastMedia'
has_custom_art:
type: boolean
art:
type: string
nullable: true
art_updated_at:
type: integer
-
$ref: '#/components/schemas/HasLinks'
Api_PodcastMedia:
properties:
id:
type: string
nullable: true
original_name:
type: string
nullable: true
length:
type: number
format: float
length_text:
type: string
nullable: true
path:
type: string
nullable: true
type: object
Api_Song:
properties:
id:
description: 'The song''s 32-character unique identifier hash'
type: string
example: 9f33bbc912c19603e51be8e0987d076b
text:
description: 'The song title, usually "Artist - Title"'
type: string
example: 'Chet Porter - Aluko River'
artist:
description: 'The song artist.'
type: string
example: 'Chet Porter'
title:
description: 'The song title.'
type: string
example: 'Aluko River'
album:
description: 'The song album.'
type: string
example: 'Moving Castle'
genre:
description: 'The song genre.'
type: string
example: Rock
lyrics:
description: 'Lyrics to the song.'
type: string
example: ''
art:
description: 'URL to the album artwork (if available).'
example: 'https://picsum.photos/1200/1200'
custom_fields:
type: array
items:
type: string
example: custom_field_value
type: object
Api_StationOnDemand:
properties:
track_id:
description: 'Track ID unique identifier'
type: string
example: 1
download_url:
description: 'URL to download/play track.'
type: string
example: /api/station/1/ondemand/download/1
media:
$ref: '#/components/schemas/Api_Song'
playlist:
type: string
type: object
Api_StationPlaylistQueue:
properties:
spm_id:
description: 'ID of the StationPlaylistMedia record associating this track with the playlist'
type: integer
example: 1
nullable: true
media_id:
description: 'ID of the StationPlaylistMedia record associating this track with the playlist'
type: integer
example: 1
song_id:
description: 'The song''s 32-character unique identifier hash'
type: string
example: 9f33bbc912c19603e51be8e0987d076b
artist:
description: 'The song artist.'
type: string
example: 'Chet Porter'
title:
description: 'The song title.'
type: string
example: 'Aluko River'
type: object
Api_StationQueueDetailed:
type: object
allOf:
-
properties:
sent_to_autodj:
description: 'Indicates whether the song has been sent to the AutoDJ.'
type: boolean
is_played:
description: 'Indicates whether the song has already been marked as played.'
type: boolean
autodj_custom_uri:
description: 'Custom AutoDJ playback URI, if it exists.'
type: string
example: ''
nullable: true
-
$ref: '#/components/schemas/Api_NowPlaying_StationQueue'
-
$ref: '#/components/schemas/HasLinks'
Api_StationRemote:
type: object
allOf:
-
properties:
id:
type: integer
nullable: true
display_name:
type: string
example: '128kbps MP3'
nullable: true
is_visible_on_public_pages:
type: boolean
example: true
type:
type: string
example: icecast
is_editable:
type: boolean
example: 'true'
enable_autodj:
type: boolean
example: false
autodj_format:
type: string
example: mp3
nullable: true
autodj_bitrate:
type: integer
example: 128
nullable: true
custom_listen_url:
type: string
example: 'https://custom-listen-url.example.com/stream.mp3'
nullable: true
url:
type: string
example: 'https://custom-url.example.com'
mount:
type: string
example: /stream.mp3
nullable: true
admin_password:
type: string
example: password
nullable: true
source_port:
type: integer
example: 8000
nullable: true
source_mount:
type: string
example: /
nullable: true
source_username:
type: string
example: source
nullable: true
source_password:
type: string
example: password
nullable: true
is_public:
type: boolean
example: false
listeners_unique:
description: 'The most recent number of unique listeners.'
type: integer
example: 10
listeners_total:
description: 'The most recent number of total (non-unique) listeners.'
type: integer
example: 12
-
$ref: '#/components/schemas/HasLinks'
Api_StationRequest:
properties:
request_id:
description: 'Requestable ID unique identifier'
type: string
example: 1
request_url:
description: 'URL to directly submit request'
type: string
example: /api/station/1/request/1
song:
$ref: '#/components/schemas/Api_Song'
type: object
Api_StationSchedule:
properties:
id:
description: 'Unique identifier for this schedule entry.'
type: integer
example: 1
type:
description: 'The type of this schedule entry.'
type: string
enum:
- playlist
- streamer
example: playlist
name:
description: 'Either the playlist or streamer''s display name.'
type: string
example: 'Example Schedule Entry'
title:
description: 'The full name of the type and name combined.'
type: string
example: 'Playlist: Example Schedule Entry'
start_timestamp:
description: 'The start time of the schedule entry, in UNIX format.'
type: integer
example: 1609480800
start:
description: 'The start time of the schedule entry, in ISO 8601 format.'
type: string
example: '020-02-19T03:00:00-06:00'
end_timestamp:
description: 'The end time of the schedule entry, in UNIX format.'
type: integer
example: 1609480800
end:
description: 'The start time of the schedule entry, in ISO 8601 format.'
type: string
example: '020-02-19T05:00:00-06:00'
is_now:
description: 'Whether the event is currently ongoing.'
type: boolean
example: true
type: object
Api_StationServiceStatus:
properties:
backend_running:
type: boolean
example: true
frontend_running:
type: boolean
example: true
station_has_started:
type: boolean
example: true
station_needs_restart:
type: boolean
example: true
type: object
Api_Status:
properties:
success:
type: boolean
example: true
message:
type: string
example: 'Changes saved successfully.'
formatted_message:
type: string
example: '<b>Changes saved successfully.</b>'
type: object
Api_SystemStatus:
properties:
online:
description: 'Whether the service is online or not (should always be true)'
type: boolean
example: true
timestamp:
description: 'The current UNIX timestamp'
type: integer
example: 1609480800
type: object
Api_Time:
properties:
timestamp:
description: 'The current UNIX timestamp'
type: integer
example: 1497652397
utc_datetime:
type: string
example: '2017-06-16 10:33:17'
utc_date:
type: string
example: 'June 16, 2017'
utc_time:
type: string
example: '10:33pm'
utc_json:
type: string
example: '2012-12-25T16:30:00.000000Z'
type: object
HasLinks:
properties:
links:
type: array
items:
type: string
example: 'http://localhost/api/stations/1/queue/1'
type: object
Api_UploadFile:
properties:
path:
description: 'The destination path of the uploaded file.'
type: string
example: relative/path/to/file.mp3
file:
description: 'The base64-encoded contents of the file to upload.'
type: string
example: ''
type: object
CustomField:
type: object
allOf:
-
properties:
name:
type: string
short_name:
description: 'The programmatic name for the field. Can be auto-generated from the full name.'
type: string
auto_assign:
description: 'An ID3v2 field to automatically assign to this value, if it exists in the media file.'
type: string
nullable: true
-
$ref: '#/components/schemas/HasAutoIncrementId'
Relay:
type: object
allOf:
-
properties:
base_url:
type: string
example: 'https://custom-url.example.com'
name:
type: string
example: Relay
nullable: true
is_visible_on_public_pages:
type: boolean
example: true
created_at:
type: integer
example: 1609480800
updated_at:
type: integer
example: 1609480800
-
$ref: '#/components/schemas/HasAutoIncrementId'
Role:
type: object
allOf:
-
properties:
name:
type: string
example: 'Super Administrator'
permissions:
type: array
items: { }
-
$ref: '#/components/schemas/HasAutoIncrementId'
Settings:
properties:
app_unique_identifier:
type: string
base_url:
description: 'Site Base URL'
type: string
example: 'https://your.azuracast.site'
nullable: true
instance_name:
description: 'AzuraCast Instance Name'
type: string
example: 'My AzuraCast Instance'
nullable: true
prefer_browser_url:
description: 'Prefer Browser URL (If Available)'
type: boolean
example: 'false'
use_radio_proxy:
description: 'Use Web Proxy for Radio'
type: boolean
example: 'false'
history_keep_days:
description: 'Days of Playback History to Keep'
type: integer
always_use_ssl:
description: 'Always Use HTTPS'
type: boolean
example: 'false'
api_access_control:
description: 'API ''Access-Control-Allow-Origin'' header'
type: string
example: '*'
nullable: true
enable_websockets:
description: 'Whether to use Websockets for Now Playing data updates.'
type: boolean
example: 'false'
analytics:
description: 'Listener Analytics Collection'
type: string
nullable: true
check_for_updates:
description: 'Check for Updates and Announcements'
type: boolean
example: 'true'
update_results:
description: 'Results of the latest update check.'
type: array
items: { }
example: ''
nullable: true
update_last_run:
description: 'The UNIX timestamp when updates were last checked.'
type: integer
example: 1609480800
public_theme:
description: 'Base Theme for Public Pages'
type: string
example: light
nullable: true
hide_album_art:
description: 'Hide Album Art on Public Pages'
type: boolean
example: 'false'
homepage_redirect_url:
description: 'Homepage Redirect URL'
type: string
example: 'https://example.com/'
nullable: true
default_album_art_url:
description: 'Default Album Art URL'
type: string
example: 'https://example.com/image.jpg'
nullable: true
use_external_album_art_when_processing_media:
description: 'Attempt to fetch album art from external sources when processing media.'
type: boolean
example: 'false'
use_external_album_art_in_apis:
description: 'Attempt to fetch album art from external sources in API requests.'
type: boolean
example: 'false'
last_fm_api_key:
description: 'An API key to connect to Last.fm services, if provided.'
type: string
example: SAMPLE-API-KEY
nullable: true
hide_product_name:
description: 'Hide AzuraCast Branding on Public Pages'
type: boolean
example: 'false'
public_custom_css:
description: 'Custom CSS for Public Pages'
type: string
example: ''
nullable: true
public_custom_js:
description: 'Custom JS for Public Pages'
type: string
example: ''
nullable: true
internal_custom_css:
description: 'Custom CSS for Internal Pages'
type: string
example: ''
nullable: true
backup_enabled:
description: 'Whether backup is enabled.'
type: boolean
example: 'false'
backup_time_code:
description: 'The timecode (i.e. 400 for 4:00AM) when automated backups should run.'
type: string
example: 400
nullable: true
backup_exclude_media:
description: 'Whether to exclude media in automated backups.'
type: boolean
example: 'false'
backup_keep_copies:
description: 'Number of backups to keep, or infinite if zero/null.'
type: integer
example: 2
backup_storage_location:
description: 'The storage location ID for automated backups.'
type: integer
example: 1
nullable: true
backup_last_run:
description: 'The UNIX timestamp when automated backup was last run.'
type: integer
example: 1609480800
backup_last_output:
description: 'The output of the latest automated backup task.'
type: string
example: ''
nullable: true
setup_complete_time:
description: 'The UNIX timestamp when setup was last completed.'
type: integer
example: 1609480800
nowplaying:
description: 'The current cached now playing data.'
type: array
items: { }
example: ''
nullable: true
sync_nowplaying_last_run:
description: 'The UNIX timestamp when the now playing sync task was last run.'
type: integer
example: 1609480800
sync_short_last_run:
description: 'The UNIX timestamp when the 60-second ''short'' sync task was last run.'
type: integer
example: 1609480800
sync_medium_last_run:
description: 'The UNIX timestamp when the 5-minute ''medium'' sync task was last run.'
type: integer
example: 1609480800
sync_long_last_run:
description: 'The UNIX timestamp when the 1-hour ''long'' sync task was last run.'
type: integer
example: 1609480800
external_ip:
description: 'This installation''s external IP.'
type: string
example: 192.168.1.1
nullable: true
geolite_license_key:
description: 'The license key for the Maxmind Geolite download.'
type: string
example: ''
nullable: true
geolite_last_run:
description: 'The UNIX timestamp when the Maxmind Geolite was last downloaded.'
type: integer
example: 1609480800
enable_advanced_features:
description: 'Whether to enable ''advanced'' functionality in the system that is intended for power users.'
type: boolean
example: false
mail_enabled:
description: 'Enable e-mail delivery across the application.'
type: boolean
example: 'true'
mail_sender_name:
description: 'The name of the sender of system e-mails.'
type: string
example: AzuraCast
nullable: true
mail_sender_email:
description: 'The e-mail address of the sender of system e-mails.'
type: string
example: example@example.com
nullable: true
mail_smtp_host:
description: 'The host to send outbound SMTP mail.'
type: string
example: smtp.example.com
nullable: true
mail_smtp_port:
description: 'The port for sending outbound SMTP mail.'
type: integer
example: 465
mail_smtp_username:
description: 'The username when connecting to SMTP mail.'
type: string
example: username
nullable: true
mail_smtp_password:
description: 'The password when connecting to SMTP mail.'
type: string
example: password
nullable: true
mail_smtp_secure:
description: 'Whether to use a secure (TLS) connection when sending SMTP mail.'
type: boolean
example: 'true'
avatar_service:
description: 'The external avatar service to use when fetching avatars.'
type: string
example: libravatar
nullable: true
avatar_default_url:
description: 'The default avatar URL.'
type: string
example: ''
nullable: true
type: object
SftpUser:
type: object
allOf:
-
properties:
username:
type: string
password:
type: string
publicKeys:
type: string
nullable: true
-
$ref: '#/components/schemas/HasAutoIncrementId'
Station:
type: object
allOf:
-
properties:
name:
description: 'The full display name of the station.'
type: string
example: 'AzuraTest Radio'
short_name:
description: 'The URL-friendly name for the station, typically auto-generated from the full station name.'
type: string
example: azuratest_radio
is_enabled:
description: 'If set to ''false'', prevents the station from broadcasting but leaves it in the database.'
type: boolean
example: true
frontend_type:
description: 'The frontend adapter (icecast,shoutcast,remote,etc)'
type: string
example: icecast
nullable: true
frontend_config:
description: 'An array containing station-specific frontend configuration'
type: array
items: { }
backend_type:
description: 'The backend adapter (liquidsoap,etc)'
type: string
example: liquidsoap
nullable: true
backend_config:
description: 'An array containing station-specific backend configuration'
type: array
items: { }
description:
type: string
example: 'A sample radio station.'
nullable: true
url:
type: string
example: 'https://demo.azuracast.com/'
nullable: true
genre:
type: string
example: Various
nullable: true
radio_base_dir:
type: string
example: /var/azuracast/stations/azuratest_radio
nullable: true
automation_settings:
type: array
items: { }
enable_requests:
description: 'Whether listeners can request songs to play on this station.'
type: boolean
example: true
request_delay:
type: integer
example: 5
nullable: true
request_threshold:
type: integer
example: 15
nullable: true
disconnect_deactivate_streamer:
type: integer
example: 0
nullable: true
enable_streamers:
description: 'Whether streamers are allowed to broadcast to this station at all.'
type: boolean
example: false
is_streamer_live:
description: 'Whether a streamer is currently active on the station.'
type: boolean
example: false
enable_public_page:
description: 'Whether this station is visible as a public page and in a now-playing API response.'
type: boolean
example: true
enable_on_demand:
description: 'Whether this station has a public ''on-demand'' streaming and download page.'
type: boolean
example: true
enable_on_demand_download:
description: 'Whether the ''on-demand'' page offers download capability.'
type: boolean
example: true
api_history_items:
description: 'The number of ''last played'' history items to show for a station in API responses.'
type: integer
example: 5
timezone:
description: 'The time zone that station operations should take place in.'
type: string
example: UTC
nullable: true
default_album_art_url:
description: 'The station-specific default album artwork URL.'
type: string
example: 'https://example.com/image.jpg'
nullable: true
-
$ref: '#/components/schemas/HasAutoIncrementId'
StationMedia:
type: object
allOf:
-
properties:
unique_id:
description: 'A unique identifier associated with this record.'
type: string
example: 69b536afc7ebbf16457b8645
nullable: true
album:
description: 'The name of the media file''s album.'
type: string
example: 'Test Album'
nullable: true
genre:
description: 'The genre of the media file.'
type: string
example: Rock
nullable: true
lyrics:
description: 'Full lyrics of the track, if available.'
type: string
example: '...Never gonna give you up...'
nullable: true
isrc:
description: 'The track ISRC (International Standard Recording Code), used for licensing purposes.'
type: string
example: GBARL0600786
nullable: true
length:
description: 'The song duration in seconds.'
type: number
format: float
example: 240
nullable: true
length_text:
description: 'The formatted song duration (in mm:ss format)'
type: string
example: '4:00'
nullable: true
path:
description: 'The relative path of the media file.'
type: string
example: test.mp3
mtime:
description: 'The UNIX timestamp when the database was last modified.'
type: integer
example: 1609480800
nullable: true
amplify:
description: 'The amount of amplification (in dB) to be applied to the radio source (liq_amplify)'
type: number
format: float
example: -14
nullable: true
fade_overlap:
description: 'The length of time (in seconds) before the next song starts in the fade (liq_start_next)'
type: number
format: float
example: 2
nullable: true
fade_in:
description: 'The length of time (in seconds) to fade in the next track (liq_fade_in)'
type: number
format: float
example: 3
nullable: true
fade_out:
description: 'The length of time (in seconds) to fade out the previous track (liq_fade_out)'
type: number
format: float
example: 3
nullable: true
cue_in:
description: 'The length of time (in seconds) from the start of the track to start playing (liq_cue_in)'
type: number
format: float
example: 30
nullable: true
cue_out:
description: 'The length of time (in seconds) from the CUE-IN of the track to stop playing (liq_cue_out)'
type: number
format: float
example: 30
nullable: true
art_updated_at:
description: 'The latest time (UNIX timestamp) when album art was updated.'
type: integer
example: 1609480800
playlists:
type: array
items: { }
-
$ref: '#/components/schemas/HasAutoIncrementId'
-
$ref: '#/components/schemas/HasSongFields'
StationMount:
type: object
allOf:
-
properties:
name:
type: string
example: /radio.mp3
display_name:
type: string
example: '128kbps MP3'
nullable: true
is_visible_on_public_pages:
type: boolean
example: true
is_default:
type: boolean
example: false
is_public:
type: boolean
example: false
fallback_mount:
type: string
example: /error.mp3
nullable: true
relay_url:
type: string
example: 'https://radio.example.com:8000/radio.mp3'
nullable: true
authhash:
type: string
example: ''
nullable: true
max_listener_duration:
type: integer
example: 43200
enable_autodj:
type: boolean
example: true
autodj_format:
type: string
example: mp3
nullable: true
autodj_bitrate:
type: integer
example: 128
nullable: true
custom_listen_url:
type: string
example: 'https://custom-listen-url.example.com/stream.mp3'
nullable: true
frontend_config:
type: array
items: { }
listeners_unique:
description: 'The most recent number of unique listeners.'
type: integer
example: 10
listeners_total:
description: 'The most recent number of total (non-unique) listeners.'
type: integer
example: 12
-
$ref: '#/components/schemas/HasAutoIncrementId'
StationPlaylist:
type: object
allOf:
-
properties:
name:
type: string
example: 'Test Playlist'
type:
type: string
example: default
source:
type: string
example: songs
order:
type: string
example: shuffle
remote_url:
type: string
example: 'https://remote-url.example.com/stream.mp3'
nullable: true
remote_type:
type: string
example: stream
nullable: true
remote_buffer:
description: 'The total time (in seconds) that Liquidsoap should buffer remote URL streams.'
type: integer
example: 0
is_enabled:
type: boolean
example: true
is_jingle:
description: 'If yes, do not send jingle metadata to AutoDJ or trigger web hooks.'
type: boolean
example: false
play_per_songs:
type: integer
example: 5
play_per_minutes:
type: integer
example: 120
play_per_hour_minute:
type: integer
example: 15
weight:
type: integer
example: 3
include_in_requests:
type: boolean
example: true
include_in_on_demand:
description: 'Whether this playlist''s media is included in ''on demand'' download/streaming if enabled.'
type: boolean
example: true
include_in_automation:
type: boolean
example: false
backend_options:
type: string
example: 'interrupt,loop_once,single_track,merge'
nullable: true
avoid_duplicates:
type: boolean
example: true
schedule_items:
type: array
items: { }
-
$ref: '#/components/schemas/HasAutoIncrementId'
StationSchedule:
type: object
allOf:
-
properties:
start_time:
type: integer
example: 900
end_time:
type: integer
example: 2200
days:
description: 'Array of ISO-8601 days (1 for Monday, 7 for Sunday)'
type: string
example: '0,1,2,3'
nullable: true
loop_once:
type: boolean
example: false
-
$ref: '#/components/schemas/HasAutoIncrementId'
StationStreamer:
description: 'Station streamers (DJ accounts) allowed to broadcast to a station.'
type: object
allOf:
-
properties:
streamer_username:
type: string
example: dj_test
streamer_password:
type: string
example: ''
display_name:
type: string
example: 'Test DJ'
nullable: true
comments:
type: string
example: 'This is a test DJ account.'
nullable: true
is_active:
type: boolean
example: true
enforce_schedule:
type: boolean
example: false
reactivate_at:
type: integer
example: 1609480800
nullable: true
schedule_items:
type: array
items: { }
-
$ref: '#/components/schemas/HasAutoIncrementId'
StationStreamerBroadcast:
description: 'Each individual broadcast associated with a streamer.'
type: object
allOf:
-
$ref: '#/components/schemas/HasAutoIncrementId'
StationWebhook:
type: object
allOf:
-
properties:
name:
description: 'The nickname of the webhook connector.'
type: string
example: 'Twitter Post'
nullable: true
type:
description: 'The type of webhook connector to use.'
type: string
example: twitter
is_enabled:
type: boolean
example: true
triggers:
description: 'List of events that should trigger the webhook notification.'
type: array
items: { }
config:
description: 'Detailed webhook configuration (if applicable)'
type: array
items: { }
metadata:
description: 'Internal details used by the webhook to preserve state.'
type: array
items: { }
-
$ref: '#/components/schemas/HasAutoIncrementId'
HasAutoIncrementId:
properties:
id:
type: integer
nullable: true
type: object
HasSongFields:
properties:
song_id:
type: string
text:
type: string
nullable: true
artist:
type: string
nullable: true
title:
type: string
nullable: true
type: object
HasUniqueId:
properties:
id:
type: string
nullable: true
type: object
User:
type: object
allOf:
-
properties:
email:
type: string
example: demo@azuracast.com
new_password:
type: string
example: ''
nullable: true
name:
type: string
example: 'Demo Account'
nullable: true
locale:
type: string
example: en_US
nullable: true
theme:
type: string
example: dark
nullable: true
two_factor_secret:
type: string
example: A1B2C3D4
nullable: true
created_at:
type: integer
example: 1609480800
updated_at:
type: integer
example: 1609480800
roles:
type: array
items: { }
-
$ref: '#/components/schemas/HasAutoIncrementId'
responses:
todo:
description: 'This API call has no documented response (yet)'
parameters:
station_id_required:
name: station_id_required
in: path
required: true
securitySchemes:
api_key:
type: apiKey
name: X-API-Key
in: header
tags:
-
name: 'Now Playing'
description: 'Endpoints that provide full summaries of the current state of stations.'
-
name: 'Stations: General'
-
name: 'Stations: Song Requests'
-
name: 'Stations: Service Control'
-
name: 'Stations: History'
-
name: 'Stations: Listeners'
-
name: 'Stations: Schedules'
-
name: 'Stations: Media'
-
name: 'Stations: Mount Points'
-
name: 'Stations: Playlists'
-
name: 'Stations: Podcasts'
-
name: 'Stations: Queue'
-
name: 'Stations: Remote Relays'
-
name: 'Stations: SFTP Users'
-
name: 'Stations: Streamers/DJs'
-
name: 'Stations: Web Hooks'
-
name: 'Administration: Custom Fields'
-
name: 'Administration: Users'
-
name: 'Administration: Relays'
-
name: 'Administration: Roles'
-
name: 'Administration: Settings'
-
name: 'Administration: Stations'
-
name: 'Administration: Storage Locations'
-
name: Miscellaneous
externalDocs:
description: 'AzuraCast on GitHub'
url: 'https://github.com/AzuraCast/AzuraCast'