Screener API

 

Authentication

 
The Screener API supports token-based authentication in two ways:

HTTP Basic Auth

  • Username: the API token
  • Password: 'x'

Query String

  • Pass the API token as auth_token, e.g. ?auth_token=xxxxxxxxxxxxxxxxxxxx

 

Manifest Specification

 

Structure

Each Manifest contains:

  • a name
  • one or more content sources
    • describes the playback content and other settings (specified as a hash)
  • a schedule
    • describes which content source should be playing at any given time (specified as a JSON string)
    • keys for days of the week are mon tue wed thu fri sat sun
    • blackout is a special content source to put the screen in blackout mode
    • e.g.
        {
            "default": {
                "mon": {
                    "0000": "blackout",
                    "0800": "milk",
                    "1900": "blackout"
                },
                "tue": {
                    "0000": "blackout",
                    "0800": "dark",
                    "1900": "blackout"
                },
                ...
                "sat": {
                    "0000": "blackout",
                },
                "sun": {
                    "0000": "blackout",
                }
            }
        }
    

 

Content Source Attributes

Name Description
name required Name of the content.
source required URI of the content.
source_type required Indicates the type of content. Valid values are online or git.
start required A relative URL for the start page. The value can be a blank string, but the attribute itself must be present.
timeout required Period of user interactivity before the start page is reloaded, measured in seconds.
orientation Used to specify content playback orientation. Valid values are portrait or landscape.
username Username for the git repository when the source_type is git.
password Password for the git repository when the source_type is git.
color A hex value to represent the content source. E.g. #ff0000

Note: For Git content sources which require authentication via SSH, the private key is currently bundled with the Android-Agent APK.

 

Example (Ruby)

{
    "name" => "Chocolates",
    "content_sources_attributes" => {
      "milk" => {
        "source" => "http://git.retrocandy.test/chocolates/milk.git",
        "source_type" => "git",
        "start" => "index.html",
        "timeout" => 20,
        "orientation" => "portrait",
        "username" => "xxxxxxxxxx",
        "password" => "xxxxxxxxxx",
      },
      "dark" => {
        "source" => "http://git.retrocandy.test/chocolates/dark.git",
        "source_type" => "git",
        "start" => "index.html",
        "timeout" => 20,
        "orientation" => "portrait",
        "username" => "xxxxxxxxxx",
        "password" => "xxxxxxxxxx",
      }
    },
    "schedule" => "{\"default\":{\"mon\":{\"0000\":\"blackout\",\"0800\":\"main\",\"1900\":\"blackout\"} ... }}"
}

 

Screen Filter Search

 

How to specify search filters:

Valid conditions for all data types: equals, does_not_equal, in, not_in, is_null, is_not_null.

Valid conditions for strings: contains, does_not_contain, starts_with, does_not_start_with, ends_with, does_not_end_with.

Valid conditions for numbers, dates, and times: greater_than, greater_than_or_equal_to, less_than, less_than_or_equal_to.

Valid conditions for booleans: is_true, is_false.

Valid conditions for non-booleans: is_present, is_blank.

Each condition should be expressed as a key-value pair:

e.g. filters[0][nickname][]=contains&filters[0][nickname][]=chocolate
e.g. filters[0][created_at][]=equals&filters[0][created_at][]=2012-03-29+14%3A10

 

Time Zones

Accounts and Signage Networks can specify a time zone so time values (e.g. check-in times) can be displayed correctly.

A Signage Network will try to use its own time zone, providing one is specified. Otherwise it will use the Account time zone, before falling back to Etc/UTC.

Valid time zones:

Pacific/Midway
Pacific/Pago_Pago
Pacific/Honolulu
America/Juneau
America/Los_Angeles
America/Tijuana
America/Denver
America/Phoenix
America/Chihuahua
America/Mazatlan
America/Chicago
America/Regina
America/Mexico_City
America/Monterrey
America/Guatemala
America/New_York
America/Indiana/Indianapolis
America/Bogota
America/Lima
America/Halifax
America/Caracas
America/La_Paz
America/Santiago
America/St_Johns
America/Sao_Paulo
America/Argentina/Buenos_Aires
America/Guyana
America/Godthab
Atlantic/South_Georgia
Atlantic/Azores
Atlantic/Cape_Verde
Europe/Dublin
Europe/London
Europe/Lisbon
Africa/Casablanca
Africa/Monrovia
Etc/UTC
Europe/Belgrade
Europe/Bratislava
Europe/Budapest
Europe/Ljubljana
Europe/Prague
Europe/Sarajevo
Europe/Skopje
Europe/Warsaw
Europe/Zagreb
Europe/Brussels
Europe/Copenhagen
Europe/Madrid
Europe/Paris
Europe/Amsterdam
Europe/Berlin
Europe/Rome
Europe/Stockholm
Europe/Vienna
Africa/Algiers
Europe/Bucharest
Africa/Cairo
Europe/Helsinki
Europe/Kiev
Europe/Riga
Europe/Sofia
Europe/Tallinn
Europe/Vilnius
Europe/Athens
Europe/Istanbul
Europe/Minsk
Asia/Jerusalem
Africa/Harare
Africa/Johannesburg
Europe/Moscow
Asia/Kuwait
Asia/Riyadh
Africa/Nairobi
Asia/Baghdad
Asia/Tehran
Asia/Muscat
Asia/Baku
Asia/Tbilisi
Asia/Yerevan
Asia/Kabul
Asia/Yekaterinburg
Asia/Karachi
Asia/Tashkent
Asia/Kolkata
Asia/Kathmandu
Asia/Dhaka
Asia/Colombo
Asia/Almaty
Asia/Novosibirsk
Asia/Rangoon
Asia/Bangkok
Asia/Jakarta
Asia/Krasnoyarsk
Asia/Shanghai
Asia/Chongqing
Asia/Hong_Kong
Asia/Urumqi
Asia/Kuala_Lumpur
Asia/Singapore
Asia/Taipei
Australia/Perth
Asia/Irkutsk
Asia/Ulaanbaatar
Asia/Seoul
Asia/Tokyo
Asia/Yakutsk
Australia/Darwin
Australia/Adelaide
Australia/Melbourne
Australia/Sydney
Australia/Brisbane
Australia/Hobart
Asia/Vladivostok
Pacific/Guam
Pacific/Port_Moresby
Asia/Magadan
Pacific/Noumea
Pacific/Fiji
Asia/Kamchatka
Pacific/Majuro
Pacific/Auckland
Pacific/Tongatapu
Pacific/Fakaofo
Pacific/Apia

Webhooks

 

Screener can make a POST request to a specified URL upon certain events.

  • When a device is registered: screen:registration

  • When a device is de-registered: screen:deregistration

By default, the request body is JSON representation of the Screen.