Add an api function to list a users vods Document the existing REST APImerge-requests/13/head
parent
1a9b7be318
commit
bd40c30114
@ -0,0 +1,185 @@ |
|||||||
|
## Using Satyr's Rest API |
||||||
|
|
||||||
|
### /api/instance/info |
||||||
|
|
||||||
|
Generic enformation about the instance. |
||||||
|
|
||||||
|
Method: GET |
||||||
|
|
||||||
|
Authentication: no |
||||||
|
|
||||||
|
Parameters: none |
||||||
|
|
||||||
|
Response: Returns a JSON object containing the name, domain, version, email, and whether registration is open. Email will be null if not specified. |
||||||
|
|
||||||
|
Example: `{name: "Example Instance", domain: "example.com", registration: false, version: 0.7, email: null}` |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### /api/instance/config |
||||||
|
|
||||||
|
Configuration of the instance relating to media |
||||||
|
|
||||||
|
Method: GET |
||||||
|
|
||||||
|
Authentication: no |
||||||
|
|
||||||
|
Parameters: none |
||||||
|
|
||||||
|
Response: JSON object containing the port and ping_timeout for RTMP, public and private play endpoints, and whether adaptive livestreaming and VOD recording are enabled. |
||||||
|
|
||||||
|
Example: |
||||||
|
``` |
||||||
|
{ |
||||||
|
rtmp: { |
||||||
|
port: 1935, |
||||||
|
ping_timeout: 60 |
||||||
|
}, |
||||||
|
media: { |
||||||
|
vods: false, |
||||||
|
publicEndpoint: 'live', |
||||||
|
privateEndpoint: 'stream', |
||||||
|
adaptive: true |
||||||
|
} |
||||||
|
} |
||||||
|
``` |
||||||
|
Public and private endpoints work like this, from the above example: |
||||||
|
stream to: rtmp://example.com/stream |
||||||
|
play from: rtmp://example.com/live/username or https://example.com/live/username/index.mpd |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### /api/users/live/ |
||||||
|
|
||||||
|
Returns the usernames and stream titles of 10 users who are currently streaming |
||||||
|
|
||||||
|
Method: GET |
||||||
|
|
||||||
|
Authentication: no |
||||||
|
|
||||||
|
Parameters: none |
||||||
|
|
||||||
|
Response: Returns an array of objects containing the username and title of each stream. Returns an empty array if no one is streaming. |
||||||
|
|
||||||
|
Example: `[{username:"foo", title:"bar"}]` |
||||||
|
|
||||||
|
|
||||||
|
### /api/users/live/:num |
||||||
|
|
||||||
|
Same as above, with number indicated the number of users to list. Maximum of 50. |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### /api/register |
||||||
|
|
||||||
|
Register a new user. |
||||||
|
|
||||||
|
Method: POST |
||||||
|
|
||||||
|
Authentication: no |
||||||
|
|
||||||
|
Parameters: Username, password, confirm |
||||||
|
|
||||||
|
Response: If successful, returns a json object with the users stream key. Otherwise returns `{error: "error reason"}` |
||||||
|
|
||||||
|
Examples: |
||||||
|
`{stream_key: "asdfghjkltyuiop12345"}` |
||||||
|
`{error: "registration disabled"}` |
||||||
|
|
||||||
|
|
||||||
|
### /api/login |
||||||
|
|
||||||
|
Obtain a signed json web token for authentication |
||||||
|
|
||||||
|
Method: POST |
||||||
|
|
||||||
|
Authentication: no |
||||||
|
|
||||||
|
Parameters: Username and password OR a valid JWT cookie expiring in less than 24 hours |
||||||
|
|
||||||
|
Response: If succesful, will return `{success: ""}` or `{success: "already verified"}` if the JWT provided is too early to be renewed. If unsuccesful, will return `{error: "invalid password"}` or `{error: "Username or Password Incorrect"}` depending on the authentication method. Note that if a JWT is available, the parameters will be ignored. |
||||||
|
|
||||||
|
Notes: I've already listed nearly every response. My final note is that the JWT is set as the cookie 'Authorization', not returned in the response. |
||||||
|
|
||||||
|
|
||||||
|
### /api/user/update |
||||||
|
|
||||||
|
Update the current user's information |
||||||
|
|
||||||
|
Method: POST |
||||||
|
|
||||||
|
Authentication: yes |
||||||
|
|
||||||
|
Parameters: title, bio, rec |
||||||
|
Rec is a boolean (whether to record VODs), others are strings. Parameters that are not included in the request will not be updated. |
||||||
|
|
||||||
|
Response: Returns `{error: "error code"}` or `{success: ""}` |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### /api/user/update/chat |
||||||
|
|
||||||
|
Update the chatrooms on other platforms to integrate with the user's stream chat |
||||||
|
|
||||||
|
Method: POST |
||||||
|
|
||||||
|
Authentication: yes |
||||||
|
|
||||||
|
Parameters: discord, xmpp, twitch irc |
||||||
|
All strings corresponding to a channel name to mirror to. XMPP is currently unused. Parameters not included in the request will not be updated. |
||||||
|
|
||||||
|
Response: Returns `{error: "error code"}` or `{success: ""}` |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## /api/user/vods/delete |
||||||
|
|
||||||
|
Delete the specified vods of the current user |
||||||
|
|
||||||
|
Method: POST |
||||||
|
|
||||||
|
Authentication: yes |
||||||
|
|
||||||
|
Paramters: A string array of the names of vods to be deleted. |
||||||
|
|
||||||
|
Response: Returns `{error: "error code"}` or `{success: ""}` |
||||||
|
|
||||||
|
## /api/user/password |
||||||
|
|
||||||
|
Change the current user's password |
||||||
|
|
||||||
|
Method: POST |
||||||
|
|
||||||
|
Authentication: yes |
||||||
|
|
||||||
|
Parameters: The user's current password, the new password, AND a valid JWT cookie. |
||||||
|
|
||||||
|
Response: Returns `{error: "error code"}` or `{success: ""}` |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## /api/user/streamkey |
||||||
|
|
||||||
|
Change the current user's stream key. This will not affect the stream if the user is currently live. |
||||||
|
|
||||||
|
Method: POST |
||||||
|
|
||||||
|
Authentication: yes |
||||||
|
|
||||||
|
Parameters: A valid JWT cookie. No other parameters. |
||||||
|
|
||||||
|
Response: Returns `{error: "error code"}` or `{success: "new_stream_key"}` |
||||||
|
|
||||||
|
## /api/:user/vods/list |
||||||
|
|
||||||
|
Get a list of the named users VODs |
||||||
|
|
||||||
|
Method: GET |
||||||
|
|
||||||
|
Authentication: no |
||||||
|
|
||||||
|
Parameters: none |
||||||
|
|
||||||
|
Response: Returns an array of VODs with the format `[{"name":"yote.mp4"},{"name":"yeet.mp4"}]` |
||||||
|
|
||||||
|
Notes: VODs are always available at http://domain.com/publicEndpoint/username/filename.mp4 |
Reference in new issue