Basic API Methods for Managing Advertising Campaigns
Creating an advertiser:
curl 'http://visiobox.cloud/v3/odvertisers/' -H 'Authorization: OAuth <token>' -H 'Content-Type: application/json' --data-binary '{"name":"Test","description":"","logo":null}'
Response:
{
"name":"Test",
"description":"",
"logo":null
}
id will be in the response
Uploading a video
- Uploading the file
curl 'http://visiobox.cloud/v3/content/files' -H 'Accept: application/json, text/javascript, */*; q=0.01' -H 'Authorization: OAuth <token>' -H 'Content-Type: multipart/form-data; boundary=----WebKitFormBoundary8HmpcBj8J6y71Chi' --data-binary $'------WebKitFormBoundary8HmpcBj8J6y71Chi\r\nContent-Disposition: form-data; name="file"; filename="02_01_NY_\u0424\u0440\u0435\u0448\u0438_\u0438_\u043f\u0438\u0432\u043e_16_12_08_1.mp4"\r\nContent-Type: video/mp4\r\n\r\n\r\n------WebKitFormBoundary8HmpcBj8J6y71Chi--\r\n'
File field is file
id will be in the response
- Creating content with the file
curl 'http://visiobox.cloud/v3/content/items/' -H 'Authorization: OAuth <token>' -H 'Content-Type: application/json' --data-binary $'{"name":"02_01_NY_\u0424\u0440\u0435\u0448\u0438_\u0438_\u043f\u0438\u0432\u043e_16_12_08_1.mp4","description":"","type":"video","data":{"orientation":"landscape","default_play_audio":true},"content_file_id":13,"tags":[],"advertiser_id":5}'
Response:
{
"name":"02_01_NY_\u0424\u0440\u0435\u0448\u0438_\u0438_\u043f\u0438\u0432\u043e_16_12_08_1.mp4",
"description":"",
"type":"video",
"data":{
"orientation":"landscape", // "portrait" if content is portrait oriented
"default_play_audio":true
},
"content_file_id":13, // ID of the uploaded file
"tags":[],
"advertiser_id":5 // Advertiser ID
}
- Deleting content from advertiser's library
Content will not be deleted if it is used in active campaigns.
curl 'http://visiobox.cloud/v3/content/items/1' -H 'Authorization: OAuth <token>' -X DELETE
Creating a campaign
curl 'http://visiobox.cloud/v3/od/campaigns/' -H 'Authorization: OAuth <token>' -H 'Content-Type: application/json' --data-binary $'{"type":"normal","name":"\u0422\u0435\u0441\u0442","description":"","advertiser":1,"requirements":{"orientation":"landscape"},"start":"2019-10-16","end":"2019-10-17","start_time":null,"end_time":null,"algorithm":"each_n","layout":null,"programmatic_platforms":[],"interval":60,"max_interval":69,"order":0,"playback_items":[{"data":{"orientation":"landscape"},"content_items":[{"content_item_data":{"play_audio":true},"id":2,"playback_item_data":{}}]}],"players":[{"id":1,"skip_days":[]}],"expand":false}'
Response:
{
"type":"normal", // "pipeline" for loop-in-loop
"name":"\u0422\u0435\u0441\u0442",
"description":"",
"advertiser":1, // Advertiser ID. All videos must belong to this advertiser.
"requirements":{"orientation":"landscape"}, // Or portrait. All videos and devices must match.
"start":"2019-10-16",
"end":"2019-10-17",
"start_time":null,
"end_time":null,
"algorithm":"each_n",
"layout":null,
"programmatic_platforms":[],
"interval":60, // How many seconds between campaign plays
"max_interval":69, // round(interval * 1.15)
"order":0,
"playback_items":[
// One element per each video in campaign
{
"data":{"orientation":"landscape"},
"content_items":[{
"content_item_data":{"play_audio":true},
"id":2, // content item ID (не файла!)
"playback_item_data":{}
}]
}
],
"players":[
// One element per each player
{"id":1,"skip_days":[]}
],
"expand":false
}
Stopping a campaign
curl 'http://visiobox.cloud/v3/od/campaigns/3' -X PATCH -H 'Authorization: OAuth <token>' -H 'Content-Type: application/json' --data-binary '{"terminated":true}'
Deleting a campaign
curl 'http://visiobox.cloud/v3/od/campaigns/3' -X DELETE -H 'Authorization: OAuth <token>'
Requesting a planogram
A planogram request is made before creating a campaign to ensure there is space, or after to understand why it failed.
curl 'http://visiobox.cloud/v3/od/campaign_preview/players/?limit=50&requirements=%7B%22orientation%22%3A%22landscape%22%7D&start=2019-10-16&end=2019-10-16&type=normal&player_type=single&algorithm=each_n&duration=15&interval=60&max_interval=69&allow_unavailable=1&tags_op=or' -H 'Authorization: OAuth <token>'
Response:
{
"objects": [
// For each player
{
// For each day
"calendar": [
{
"share_left": 0.75,
"date": "2019-10-16",
"available": true // Available or not
}
],
"player": {
"id": 2,
// Other fields
}
}
],
"meta": {"total": 2, "limit": 50, "offset": 0}
}
Requesting the list of players
All players:
http://visiobox.cloud/v3/players
Only non-activated:
http://visiobox.cloud/v3/players?activated=0
Only online:
http://visiobox.cloud/v3/players?online=1
Last online before specified time (UTC):
http://visiobox.cloud/v3/players?last_online_at__lt=2019-10-28T13:00:00