3.4 KiB
Possible endpoints
Run the API thru the systemd service, or like:
ffpapi -l 127.0.0.1:8080
For all endpoints an (Bearer) authentication is required.
{id}
represent the channel id, and at default is 1.
Login is
- POST
/auth/login/
JSON Data:{"username": "<USER>", "password": "<PASS>"}
JSON Response:
{
"message": "login correct!",
"status": 200,
"data": {
"id": 1,
"email": "user@example.org",
"username": "user",
"token": "<TOKEN>"
}
}
From here on all request must contain the authorization header:
"Authorization: Bearer <TOKEN>"
User
-
PUT
/api/user/{user id}
JSON Data:{"email": "<EMAIL>", "password": "<PASS>"}
-
POST
/api/user/
JSON Data:
{
"email": "<EMAIL>",
"username": "<USER>",
"password": "<PASS>",
"role_id": 1
}
API Settings
-
GET
/api/settings/{id}
HEADER: Response is in JSON format -
PATCH
/api/settings/{id}
JSON Data:
"id": 1,
"channel_name": "Channel 1",
"preview_url": "http://localhost/live/stream.m3u8",
"config_path": "/etc/ffplayout/ffplayout.yml",
"extra_extensions": ".jpg,.jpeg,.png"
Playout Config
-
GET
/api/playout/config/{id}
Response is in JSON format -
PUT
/api/playout/config/{id}
JSON Data:{ <CONFIG DATA> }
Response is in TEXT format
Text Presets
-
GET
/api/presets/
Response is in JSON format -
PUT
/api/playout/presets/{id}
JSON Data:
{
"name": "<PRESET NAME>",
"text": "<TEXT>",
"x": "<X>",
"y": "<Y>",
"fontsize": 24,
"line_spacing": 4,
"fontcolor": "#ffffff",
"box": 1,
"boxcolor": "#000000",
"boxborderw": 4,
"alpha": "<alpha>"
}
Response is in TEXT format
- POST
/api/playout/presets/
JSON Data:{ <PRESET DATA> }
Response is in TEXT format
Playout Process Control
- POST
/api/control/{id}/text/
¸ JSON Data:
{
"text": "Hello from ffplayout",
"x": "(w-text_w)/2",
"y": "(h-text_h)/2",
"fontsize": "24",
"line_spacing": "4",
"fontcolor": "#ffffff",
"box": "1",
"boxcolor": "#000000",
"boxborderw": "4",
"alpha": "1.0"
}
Response is in TEXT format
-
POST
api/control/{id}/playout/next/
Response is in TEXT format -
POST
api/control/{id}/playout/back/
Response is in TEXT format -
POST
api/control/{id}/playout/reset/
Response is in TEXT format -
GET
/api/control/{id}/media/current/
Response is in JSON format -
GET
/api/control/{id}/media/next/
Response is in JSON format -
GET
/api/control/{id}/media/last/
Response is in JSON format
Playlist Operations
-
GET
/api/playlist/{id}/2022-06-20
Response is in JSON format -
POST
/api/playlist/1/
JSON Data:{ <PLAYLIST DATA> }
Response is in TEXT format -
GET
/api/playlist/{id}/generate/2022-06-20
Response is in JSON format -
DELETE
/api/playlist/{id}/2022-06-20
Response is in TEXT format
File Operations
-
GET
/api/file/{id}/browse/
Response is in JSON format -
POST
/api/file/{id}/move/
JSON Data:{"source": "<SOURCE>", "target": "<TARGET>"}
Response is in JSON format -
DELETE
/api/file/{id}/remove/
JSON Data:{"source": "<SOURCE>"}
Response is in JSON format -
POST
/file/{id}/upload/
Multipart Form:name=<TARGET PATH>, filename=<FILENAME>
Response is in TEXT format