Applifto Web API предсталяет собой RESTful интерфейс для получения/обновления данных и управления представлением этих данных на клиенте.
В качестве протокола передачи данных используется HTTPS
(к сожалению мы пока не доросли до таких технологий и используем HTTP
).
В качестве формата представления данных используется JSON
.
Все даты в нулевой временной зоне (GMT) и имеют формат: YYYY-MM-DD HH:MM:SS
(к сожалению мы пока привязаны к MSK).
Все языковые коды в формате ISO 639-1.
Все коды стран и территорий в формате ISO 3166-1 alpha-2.
Шаблон URL:
<baseURL>/<APIVersion>/<path>[?<parameters>]
<baseURL> = https://api.applifto.com
<APIVersion> = v2
Общим подходом при реализации механизма обновления является включение в выдачу только тех полей, которые изменились (к сожалению это пока слабо или вообще не реализовано).
-
app_version
- строка с полной версией приложения (компоненты разделены подчёркиванием).
Пример:app_version=2_1_1_8
-
client_type
- строка идентифицирующая тип клиента (ios, android, web).
Пример:client_type=android
Путь: feeds.json
HTTP-метод: GET
-
update_date
- дата последнего обновления. Опционально. Если параметр не указан, то в выдача формируется с разумной глубиной истории (несколько дней) и не содержит удалённых элементов. Параметр необходим для осуществления дифференциального обновления.
Пример:update_date=YYYY-MM-DD HH:MM:SS
-
device_type
- тип устройства (phone/pad). Опционально. Если параметр не указан, то по умолчанию используется тип phone. Параметр оказывает влияние на тип дашбордов и разметку страниц. -
langs
- список языковых кодов, разделённых запятой. Опционально. Если параметр не указан, то по умолчанию используется ru. Параметр оказывает влияние на попадание в выдачу фидов с различными языковыми кодами.
Код ответа: 200 OK
Тело ответа:
{
"update_date" : <date_string>,
"available_lang_codes" : ...,
"feeds" : [
{
"id" : "feed_identifier",
"sort_id" : <order_number>,
"name" : ...,
"summary" : ...,
"color" : <CSS_color_string>,
"link" : ...,
"icon": <base64_encoded_image>,
"article_update_date" : <feed_articles_last_modification_date_string>,
"major_lang_code" : ...,
"deleted" : <true_or_1>,
...,
"banner_tokens": [
{
"id": "token_identifier",
"link": ...,
"position_id": <position>,
"deleted": <true_or_1>
},
...
],
"page_layouts" : [
{
"id" : "layout_identifier",
"sort_id" : ...,
"type" : ...,
"deleted" : <true_or_1>
},
...
],
"dashboards" : [
{
"id" : "dashboard_id",
"position_id" : ...,
"layout_type" : ...,
"expiration_date" : ...,
"deleted" : <true_or_1>,
"products" : [
{
"id" : "product_id",
"itunes_id" : ...,
"offer_url" : ...,
"deleted" : <true_or_1>
},
...
],
"items" : [
{
"id" : "item_id",
"sort_id" : ...,
"expiration_date" : ...,
"click_number" : ...,
"item_id" : ...,
"deleted" : <true_or_1>
},
...
]
},
...
]
},
...
]
}
Путь: feeds/<feed_id>/articles.json
HTTP-метод: GET
update_date
- дата последнего обновления. Опционально. Если параметр не указан, то выдача формируется с разумной глубиной истории (несколько дней) и не содержит удалённых элементов. Параметр необходим для осуществления дифференциального обновления.
Пример:update_date=YYYY-MM-DD HH:MM:SS
Код ответа: 200 OK
Тело ответа:
{
"update_date" : ...,
"article_tokens" : [
{
"id" : "token_id",
"sort_id" : ...,
"deleted" : <true_or_1>,
"article" : {
"id" : "article_id",
"title" : ...,
"summary" : ...,
"thumb_url" : ...,
"original_feed_id" : ...,
"lang_code" : ...,
"text" : <article_body>,
"author" : ...,
"count_like" : ...,
"count_dislike" : ...,
"published" : ...,
"origin_link" : ...
}
},
...
]
}