mirror of
				https://github.com/KevinMidboe/zoff.git
				synced 2025-10-29 18:00:23 +00:00 
			
		
		
		
	Added separate markdown files for events and rest
This commit is contained in:
		
							
								
								
									
										199
									
								
								server/EVENTS.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										199
									
								
								server/EVENTS.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,199 @@
 | 
				
			|||||||
 | 
					## Events
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### To server
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					//  Tells the server the song is over
 | 
				
			||||||
 | 
					'end', {
 | 
				
			||||||
 | 
					    id: video_id,
 | 
				
			||||||
 | 
					    channel: channel_name,
 | 
				
			||||||
 | 
					    pass: channel_pass
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Asks server where in the song it should be
 | 
				
			||||||
 | 
					'pos', {
 | 
				
			||||||
 | 
					    channel: channel_name,
 | 
				
			||||||
 | 
					    pass: channel_pass
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Tells the server the client wants the list
 | 
				
			||||||
 | 
					'list', {
 | 
				
			||||||
 | 
					    channel: channel_name,
 | 
				
			||||||
 | 
					    pass: channel_pass,
 | 
				
			||||||
 | 
					    version: system_version (can be checked in VERSION.js)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Sends info about a song the client wants to add
 | 
				
			||||||
 | 
					'add', {
 | 
				
			||||||
 | 
					    id: VIDEO_ID,
 | 
				
			||||||
 | 
					    title: VIDEO_TITLE,
 | 
				
			||||||
 | 
					    adminpass: AES-CBC-Pkcs7 with Base64 IV(PASSWORD),
 | 
				
			||||||
 | 
					    duration: VIDEO_DURATION,
 | 
				
			||||||
 | 
					    list: channel_name,
 | 
				
			||||||
 | 
					    playlist: true_if_importing_playlist,
 | 
				
			||||||
 | 
					    num: current_number_of_sending_songs,
 | 
				
			||||||
 | 
					    total: total_number_of_sending_songs,
 | 
				
			||||||
 | 
					    pass: channel_pass
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Tells the server to disconnect the user from the current channel, is used for remote controlling on the host side
 | 
				
			||||||
 | 
					'change_channel', {
 | 
				
			||||||
 | 
					    channel: channel_name
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Sends chat text to all chat
 | 
				
			||||||
 | 
					'all,chat', {
 | 
				
			||||||
 | 
					    channel: channel_name,
 | 
				
			||||||
 | 
					    data: input
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Sends chat text to channelchat
 | 
				
			||||||
 | 
					'chat',{
 | 
				
			||||||
 | 
					    channel: channel_name,
 | 
				
			||||||
 | 
					    data: input,
 | 
				
			||||||
 | 
					    pass: channel_pass
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Sends info about song the user wants to vote on. If VOTE_TYPE is del, its deleting the song, if its pos, its just voting
 | 
				
			||||||
 | 
					'vote', {
 | 
				
			||||||
 | 
					    channel: CHANNEL_NAME,
 | 
				
			||||||
 | 
					    id: VIDEO_ID,
 | 
				
			||||||
 | 
					    type: VOTE_TYPE,
 | 
				
			||||||
 | 
					    adminpass: AES-CBC-Pkcs7 with Base64 IV(PASSWORD)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Sends shuffle to the server (Only works every 5 seconds per list)
 | 
				
			||||||
 | 
					'shuffle', {
 | 
				
			||||||
 | 
					    adminpass: AES-CBC-Pkcs7 with Base64 IV(PASSWORD),
 | 
				
			||||||
 | 
					    channel: CHANNELNAME,
 | 
				
			||||||
 | 
					    pass: USER_PASSWORD
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Sends skip message to server
 | 
				
			||||||
 | 
					'skip', {
 | 
				
			||||||
 | 
					    pass: AES-CBC-Pkcs7 with Base64 IV(PASSWORD),
 | 
				
			||||||
 | 
					    id:video_id,
 | 
				
			||||||
 | 
					    channel: chan,
 | 
				
			||||||
 | 
					    userpass: channel_pass
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Sends password for instant log in to server
 | 
				
			||||||
 | 
					'password', {
 | 
				
			||||||
 | 
					    password: PASSWORD,
 | 
				
			||||||
 | 
					    channel: CHANNEL_NAME,
 | 
				
			||||||
 | 
					    oldpass: old_pass_if_changing_password
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Sends message to the host channel for play
 | 
				
			||||||
 | 
					'id', {
 | 
				
			||||||
 | 
					    id: CHANNEL_ID,
 | 
				
			||||||
 | 
					    type: "play",
 | 
				
			||||||
 | 
					    value: "mock"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Sends message to the host channel for pause
 | 
				
			||||||
 | 
					'id', {
 | 
				
			||||||
 | 
					    id: CHANNEL_ID,
 | 
				
			||||||
 | 
					    type: "pause",
 | 
				
			||||||
 | 
					    value: "mock"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Sends message to the host channel for skip
 | 
				
			||||||
 | 
					'id', {
 | 
				
			||||||
 | 
					    id: CHANNEL_ID,
 | 
				
			||||||
 | 
					    type: "skip",
 | 
				
			||||||
 | 
					    value: "mock"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Sends message to the host channel to change volume
 | 
				
			||||||
 | 
					'id', {
 | 
				
			||||||
 | 
					    id: CHANNEL_ID,
 | 
				
			||||||
 | 
					    type: "volume",
 | 
				
			||||||
 | 
					    value: VALUE
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Sends message to the host channel to change channel
 | 
				
			||||||
 | 
					'id', {
 | 
				
			||||||
 | 
					    id: CHANNEL_ID,
 | 
				
			||||||
 | 
					    type: "channel",
 | 
				
			||||||
 | 
					    value: NEW_CHANNEL_NAME
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Sends a video that triggered an error
 | 
				
			||||||
 | 
					'error_video', {
 | 
				
			||||||
 | 
					    channel: CHANNE_NAME,
 | 
				
			||||||
 | 
					    id: VIDEO_ID,
 | 
				
			||||||
 | 
					    title: VIDEO_TITLE
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### From server
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					// Receives a string from server for what type of toast to be triggered
 | 
				
			||||||
 | 
					'toast', STRING  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Receives a boolean if the password was correct
 | 
				
			||||||
 | 
					'pw', BOOLEAN   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Receives configuration array from server
 | 
				
			||||||
 | 
					'conf', [ARRAY]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Receives chat message from allchat
 | 
				
			||||||
 | 
					'chat.all', {
 | 
				
			||||||
 | 
					    from: name,
 | 
				
			||||||
 | 
					    msg: message,
 | 
				
			||||||
 | 
					    channel: channel,
 | 
				
			||||||
 | 
					    icon: icon_src
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Receives chat-history for all and for current channel
 | 
				
			||||||
 | 
					'chat_history', {
 | 
				
			||||||
 | 
					    all: BOOLEAN (if true, it is for all-chat),
 | 
				
			||||||
 | 
					    data: CHAT_HISTORY
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Receives chat message from channelchat
 | 
				
			||||||
 | 
					'chat', {
 | 
				
			||||||
 | 
					    from: name,
 | 
				
			||||||
 | 
					    msg: message,
 | 
				
			||||||
 | 
					    icon: icon_src
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Receives the ID of the current client, used for remote listening
 | 
				
			||||||
 | 
					'id', STRING    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Receives the messages sent on CHANNEL_ID above
 | 
				
			||||||
 | 
					id, {
 | 
				
			||||||
 | 
					    type: STRING,
 | 
				
			||||||
 | 
					    value: VALUE
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Receives updates from channel. type is one of the following: list, added, deleted, vote, song_change, changed_values (see further down for better explanation here)
 | 
				
			||||||
 | 
					'channel', {
 | 
				
			||||||
 | 
					    type: TYPE,
 | 
				
			||||||
 | 
					    value: value,
 | 
				
			||||||
 | 
					    time: time_of_occurence
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Receives message from the server that its ready to send the playlist and info
 | 
				
			||||||
 | 
					'get_list'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Receives array of now playing song. Is triggered on song-change
 | 
				
			||||||
 | 
					'np', {
 | 
				
			||||||
 | 
					    np: NOW_PLAYING,
 | 
				
			||||||
 | 
					    conf: CONFIGURATION,
 | 
				
			||||||
 | 
					    time: SERVER_TIME
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Receives number of viewers on the current channel
 | 
				
			||||||
 | 
					'viewers', VALUE    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Receives a newly updated video, that was checked for errors (song_generated contains .id which is the current id of the video, and a .new_id for the new video to change the video to)
 | 
				
			||||||
 | 
					'channel', {
 | 
				
			||||||
 | 
					    type: "changed_values",
 | 
				
			||||||
 | 
					    value: song_generated
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					'update_required', {
 | 
				
			||||||
 | 
					    description of what is wrong as an object
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
							
								
								
									
										189
									
								
								server/REST.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										189
									
								
								server/REST.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,189 @@
 | 
				
			|||||||
 | 
					## REST
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					All PUT, DELETE and POST endpoints have a 1-second waitlimit for each command per client. You'll get a response with Retry-After header for how long you have to wait. Shuffling in a player has a 5-second waitlimit, but per channel instead of per client.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If you want to skip the wait-times, create a token at <a href="https://zoff.me/api/apply">https://zoff.me/api/apply</a>. Tokens are added to all the POST, PUT, DELETE, requests as ``` token: TOKEN ```.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					All requests return things on this form (results field is added if successful.)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    status: STATUSCODE,
 | 
				
			||||||
 | 
					    error: MESSAGE,
 | 
				
			||||||
 | 
					    success: IF_SUCCESSFULL,
 | 
				
			||||||
 | 
					    results: [RESULTS] (if something went wrong, there is one element in this array. This tells you what is wrong with the request, and what was expected)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Add song
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					POST /api/list/:channel_name/:video_id
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        "title": TITLE,
 | 
				
			||||||
 | 
					        "duration": END_TIME - START_TIME,
 | 
				
			||||||
 | 
					        "end_time": END_TIME,
 | 
				
			||||||
 | 
					        "start_time": START_TIME,
 | 
				
			||||||
 | 
					        "adminpass": PASSWORD, (leave this blank if there is no password/you don't know the password)
 | 
				
			||||||
 | 
					        "userpass": USER_PASSWORD
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns 400 for bad request
 | 
				
			||||||
 | 
					Returns 403 for bad authentication (but will return a song object, with the type == "suggested", and the song will show up in the suggested tab for channel-admins)
 | 
				
			||||||
 | 
					Returns 409 if the song exists
 | 
				
			||||||
 | 
					Returns 429 if you're doing too much of this request, with a Retry-After int value in the header.
 | 
				
			||||||
 | 
					Returns 200 and the added song object if successful
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Delete song
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					DELETE /api/list/:channel_name/:video_id
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        "adminpass": PASSWORD,
 | 
				
			||||||
 | 
					        "userpass": USER_PASSWORD
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns 400 for bad request
 | 
				
			||||||
 | 
					Returns 403 for bad authentication
 | 
				
			||||||
 | 
					Returns 404 if the song doesnt exist or is the currently playing song
 | 
				
			||||||
 | 
					Returns 429 if you're doing too much of this request, with a Retry-After int value in the header.
 | 
				
			||||||
 | 
					Returns 200 if successful
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Vote on song
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					PUT /api/list/:channel_name/:video_id
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        "adminpass": PASSWORD,
 | 
				
			||||||
 | 
					        "userpass": USER_PASSWORD
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns 400 for bad request
 | 
				
			||||||
 | 
					Returns 403 for bad authentication
 | 
				
			||||||
 | 
					Returns 404 if the song doesnt exist
 | 
				
			||||||
 | 
					Returns 409 if you've already voted on that song
 | 
				
			||||||
 | 
					Returns 429 if you're doing too much of this request, with a Retry-After int value in the header.
 | 
				
			||||||
 | 
					Returns 200 and the added song object if successful
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Change channel configurations
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					PUT /api/conf/:channel_name
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        "userpass": USER_PASSWORD,
 | 
				
			||||||
 | 
					        "adminpass": PASSWORD,
 | 
				
			||||||
 | 
					        "vote": BOOLEAN,
 | 
				
			||||||
 | 
					        "addsongs": BOOLEAN,
 | 
				
			||||||
 | 
					        "longsongs": BOOLEAN,
 | 
				
			||||||
 | 
					        "frontpage": BOOLEAN (if you want to set userpassword, this MUST be false for it to work),
 | 
				
			||||||
 | 
					        "allvideos": BOOLEAN,
 | 
				
			||||||
 | 
					        "removeplay": BOOLEAN,
 | 
				
			||||||
 | 
					        "skip": BOOLEAN,
 | 
				
			||||||
 | 
					        "shuffle": BOOLEAN,
 | 
				
			||||||
 | 
					        "userpass_changed": BOOLEAN (this must be true if you want to keep the userpassword you're sending)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns 400 for bad request
 | 
				
			||||||
 | 
					Returns 403 for bad authentication
 | 
				
			||||||
 | 
					Returns 404 if the list doesn't exist
 | 
				
			||||||
 | 
					Returns 429 if you're doing too much of this request, with a Retry-After int value in the header.
 | 
				
			||||||
 | 
					Returns 200 and the newly added configuration if successful
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Get channelsettings
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					GET /api/conf/:channel_name/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns 403 for bad authentication (if you get this, try POST with userpassword attached)
 | 
				
			||||||
 | 
					Returns 404 if the channel doesn't exist
 | 
				
			||||||
 | 
					Returns 200 and the settings-object
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Get channelsettings (protected)
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					POST /api/conf/:channel_name/
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        "userpass": USERPASS
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns 400 for bad request
 | 
				
			||||||
 | 
					Returns 403 for bad authentication
 | 
				
			||||||
 | 
					Returns 404 if the channel doesn't exist
 | 
				
			||||||
 | 
					Returns 200 and the settings-object
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Get song in channel
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					GET /api/list/:channel_name/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns 403 for bad authentication (if you get this, the channel is protected, try getting the full channel with POST, and search through the object)
 | 
				
			||||||
 | 
					Returns 404 if the song doesn't exist
 | 
				
			||||||
 | 
					Returns 200 and the song
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Get song in channel (protected)
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					// Important fetch_song is present, or else the request will try to add a song to the channel
 | 
				
			||||||
 | 
					POST /api/list/:channel_name/
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        "fetch_song": ANYTHING_HERE,
 | 
				
			||||||
 | 
					        "userpass": USERPASS
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns 400 for bad request
 | 
				
			||||||
 | 
					Returns 403 for bad authentication
 | 
				
			||||||
 | 
					Returns 404 if the song doesn't exist
 | 
				
			||||||
 | 
					Returns 200 and the song
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Get channelsettings
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					GET /api/conf/:channel_name/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns 403 for bad authentication (if you get this, try POST with userpassword attached)
 | 
				
			||||||
 | 
					Returns 404 if the channel doesn't exist
 | 
				
			||||||
 | 
					Returns 200 and the objects in the channel
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Get channelsettings (protected)
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					POST /api/conf/:channel_name/
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        "userpass": USERPASS
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns 400 for bad request
 | 
				
			||||||
 | 
					Returns 403 for bad authentication
 | 
				
			||||||
 | 
					Returns 404 if the channel doesn't exist
 | 
				
			||||||
 | 
					Returns 200 and the objects in the channel
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Get now playing song
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					GET /api/list/:channel_name/__np__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns 400 for bad request
 | 
				
			||||||
 | 
					Returns 403 for bad authentication (if you get this, try POST with userpassword attached)
 | 
				
			||||||
 | 
					Returns 404 if the channel doesn't exist
 | 
				
			||||||
 | 
					Returns 200 and the now playing object
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Get now playing song (protected)
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					POST /api/list/:channel_name/__np__
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        "userpass": USERPASS
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns 400 for bad request
 | 
				
			||||||
 | 
					Returns 403 for bad authentication (if you get this, try POST with userpassword attached)
 | 
				
			||||||
 | 
					Returns 404 if the channel doesn't exist
 | 
				
			||||||
 | 
					Returns 200 and the now playing object
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Get all lists
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					GET /api/frontpages
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns 200 and the frontpage-lists
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
		Reference in New Issue
	
	Block a user