=== API === One of the advantages of Tipboard is flexibility in feeding tiles with data. We achieve that by providing a simple, REST API - that way, your feeding scripts may be written in any language (Python, Ruby, Bash, Perl, PHP - you name it). The only limitation is the format of input data accepted by a given tile type (see :ref:`tiles_library` for the details). To experiment with resources specified below you can use tools like `Advanced REST Client `_ (Chrome extension), or `cURL `_, if you prefer working from command line. For Python programmers, there's an excellent `Requests `_ library, which we strongly recommend. .. _api_key: API key ------- To send anything to your tiles, first you have to get your API key. This unique key is generated for you automatically during Tipboard's installation and may be read in the ``~/.tipboard/settings-local.py`` file - it is a sequence of characters starting with ``API_KEY``, e.g.:: API_KEY = 'e2c3275d0e1a4bc0da360dd225d74a43' If you can't see any such string, just add the key manually (it doesn't have to be as long and hard to memorize as the one above, though). .. note:: Every change in ``settings-local.py`` file requires restart of the application. Available resources ------------------- Current API version: **v0.1** .. note:: In 99% of cases, probably only ``push`` and ``tileconfig`` will be of interest to you (and maybe ``tiledata`` too). .. http:post:: /api/(api_version)/(api_key)/push Feeds tiles with data. Input data should be provided in the format that complies with the one used in a desired tile. **Note:** a tile to which data will be sent is defined by the key included in the data sent rather than by `tile_id` as in cases below. :param api_version: version of API to be used :param api_key: your API key **Example request**: .. sourcecode:: http POST /api/v0.1/my_key/push Host: localhost:7272 POST data: tile=text key=id_1 data={"text": "Hello world!"} **Example response**: .. sourcecode:: http HTTP/1.1 200 OK Content-Type: text/html; charset=UTF-8 Tile's data pushed successfully. .. http:post:: /api/(api_version)/(api_key)/tileconfig/(tile_id) Configures tile specified by `tile_id`. The configuration should comply with the specification of a given tile type. :param api_version: version of API to be used :param api_key: your API key :param tile_id: unique tile's ID from your ``layout_config.yaml`` file **Example request**: .. sourcecode:: http GET /api/v0.1/my_key/tileconfig/id_1 Host: localhost:7272 POST data: value={"font_color": "#00FF00"} **Example response**: .. sourcecode:: http HTTP/1.1 200 OK Content-Type: text/html; charset=UTF-8 Tile's config updated. .. http:delete:: /api/(api_version)/(api_key)/tileconfig/(tile_id) Resets configuration of the tile specified by `tile_id`. :param api_version: version of API to be used :param api_key: your API key :param tile_id: unique tile's ID from your ``layout_config.yaml`` file **Example request**: .. sourcecode:: http DELETE /api/v0.1/my_key/tileconfig/id_1 Host: localhost:7272 **Example response**: .. sourcecode:: http HTTP/1.1 200 OK Content-Type: text/html; charset=UTF-8 Tile's config deleted. .. http:get:: /api/(api_version)/(api_key)/tiledata/(tile_id) Retrieves data belonging to the tile specified by `tile_id`. May be useful in cases when you need to re-fetch some parts of your data (e.g. when updating your team's stats) or just for diagnostics. :param api_version: version of API to be used :param api_key: your API key :param tile_id: unique tile's ID from your ``layout_config.yaml`` file **Example request**: .. sourcecode:: http GET /api/v0.1/my_key/tiledata/id_1 Host: localhost:7272 **Example response**: .. sourcecode:: http HTTP/1.1 200 OK Content-Type: application/json; charset=UTF-8 { "tile_template": "text", "meta": { "font_color": "#ff9618", "font_size": "45px" }, "data": { "text": "Lorem ipsum." }, "id": "id_1" } .. http:delete:: /api/(api_version)/(api_key)/tiledata/(tile_id) Removes everything belonging to the tile given by `tile_id` from Redis. :param api_version: version of API to be used :param api_key: your API key :param tile_id: unique tile's ID from your ``layout_config.yaml`` file **Example request**: .. sourcecode:: http DELETE /api/v0.1/my_key/tiledata/id_1 Host: localhost:7272 **Example response**: .. sourcecode:: http HTTP/1.1 200 OK Content-Type: text/html; charset=UTF-8 Tile's data deleted. .. http:get:: /api/(api_version)/(api_key)/info Provides information on project and user configuration. This resource has been created for debugging purposes. :param api_version: version of API to be used :param api_key: your API key **Example request**: .. sourcecode:: http GET /api/v0.1/my_key/info Host: localhost:7272 **Example response**: .. sourcecode:: http HTTP/1.1 200 OK Content-Type: application/json; charset=UTF-8 { "tipboard_version": "1.3.0", "project_layout_config": "/home/pylabs/.tipboard/layout_config.yaml", "redis_db": { "host": "localhost", "db": 4, "port": 6379 }, "project_name": "pylabs" }