Общее
Этот раздел API посвящён запросу данных об историях, т.е. экранах, на которых пользователь включает аудиозапись рассказа
- вызов /stories/list — позволяет получить перечень актуальных историй
- вызов /stories/all — позволяет получить перечень и наполнение актуальных историй
- вызов /stories/get — получает конкретную конфигурацию истории
- вызов /stories/check — быстрая проверка доступности контента для пользователя (проверка наличия доступа или подписки к платному контенту)
/list
Описание: предоставляет информацию про все доступные истории
Полный путь к методу: https://www.s1eep.app/api/stories/list
Полный путь к методу: https://www.s1eep.app/api/stories/list
Тип запроса: POST
Требования безопасности: API-ключ
Дополнительные ожидаемые параметры:
- hash — сохранённый клиентом хеш с прошлого раза, в случае совпадения с актуальным (поле stories_hash) будет пустой ответ, необязательно
Дополнительные возвращаемые параметры (в случае отсутствия или несовпадения переданного hash'а):
- stories — массив данных об историях, каждый элемент является словарём со следующими полями
- id — идентификатор истории, который нужно использовать при запросе о данных конкретной истории
- name — имя истории для отображения в списке
- paid — флаг true/false, индикатор платного контента
- sort — порядковый номер контента в списке
- reader — имя озвучивающего историю
- length_secs — длина истории в секундах
- image_story_url — полный URL для картинки, которая представляет историю
- image_reader_url — полный URL для фотографии озвучивающего историю
- story_hash — хэш конкретной истории, чтобы при совпадении с ранее полученным ответом (если он был) не пересохранять контент
- deleted_stories — массив с идентификаторами удалённых историй для синхронизации кеша
- stories_hash — хэш массива stories, чтобы при совпадении с ранее полученным ответом (если он был) не перерисовывать экран
Пример ответа в случае несовпадения кэша:
{
"_code": 200,
"_msg": "OK",
"_need_payment": false,
"_data": {
"stories": [
{
"id": 15,
"name": "Fallen Leaves",
"paid": false,
"sort": 0,
"reader": "Henry David Thoreau",
"length_secs": 720,
"image_story_url": "https://www.s1eep.app/stories/2019/11/1574760178Card_02@jpg.jpg",
"image_reader_url": null,
"story_hash": "c4e7ea30226f2a973b93879eb3a05f32"
},
{
"id": 11,
"name": "The Bird of Popular Song",
"paid": true,
"sort": 1,
"reader": "Hans Christian Andersen",
"length_secs": 480,
"image_story_url": "https://www.s1eep.app/stories/2019/11/1574760168Card_01@jpg.jpg",
"image_reader_url": null,
"story_hash": "32b61e16597746c6a98137afb1cc86d1"
},
{
"id": 16,
"name": "A Dream of Songs Unsung",
"paid": true,
"sort": 2,
"reader": "Julia Caroline Dorr",
"length_secs": 660,
"image_story_url": "https://www.s1eep.app/stories/2019/11/1574760189Card_03@jpg.jpg",
"image_reader_url": null,
"story_hash": "db935a64c808e282c566a33132c9bbd6"
},
{
"id": 17,
"name": "Little Brother",
"paid": true,
"sort": 3,
"reader": "Madeline Z. Doty",
"length_secs": 900,
"image_story_url": "https://www.s1eep.app/stories/2019/11/1574760197Card_04@jpg.jpg",
"image_reader_url": null,
"story_hash": "376384e2a0b972a5f7d66034a8409312"
},
{
"id": 19,
"name": "Candilli",
"paid": true,
"sort": 5,
"reader": "James Elroy Flecker",
"length_secs": 300,
"image_story_url": "https://www.s1eep.app/stories/2019/11/1574760217Card_06@jpg.jpg",
"image_reader_url": null,
"story_hash": "8111e4978ab773ab80b140327f013a37"
},
{
"id": 20,
"name": "Flowers",
"paid": true,
"sort": 6,
"reader": "James Russell Lowell",
"length_secs": 420,
"image_story_url": "https://www.s1eep.app/stories/2019/11/1574760223Card_07@jpg.jpg",
"image_reader_url": null,
"story_hash": "d5074edfa7b2b89f21fb72d3e511fba5"
},
{
"id": 21,
"name": "The Perdu",
"paid": true,
"sort": 7,
"reader": "Sir Charles G. D. Roberts",
"length_secs": 1920,
"image_story_url": "https://www.s1eep.app/stories/2019/11/1574760231Card_08@jpg.jpg",
"image_reader_url": null,
"story_hash": "61bbcf57619b62367f3b7f0a47790aa6"
},
{
"id": 22,
"name": "The Forest",
"paid": true,
"sort": 8,
"reader": "Georgette Leblanc",
"length_secs": 1620,
"image_story_url": "https://www.s1eep.app/stories/2019/11/1574760240Card_09@jpg.jpg",
"image_reader_url": null,
"story_hash": "a3d57007173193a894e751ce19fe2dc0"
},
{
"id": 23,
"name": "The Tinder-Box",
"paid": true,
"sort": 9,
"reader": "Hans Christian Andersen",
"length_secs": 960,
"image_story_url": "https://www.s1eep.app/stories/2019/11/1574760249Card_10@jpg.jpg",
"image_reader_url": null,
"story_hash": "f5fde157b09c312e1e760ee68b802c37"
}
],
"deleted_stories": [
18,
24
],
"stories_hash": "e32d25219cd914406b6c2a3715738bc6"
}
}Пример ответа в случае совпадения хеша:
{
"_code": 200,
"_msg": "OK",
"_need_payment": false,
"_data": "{}"
}/all
Описание: предоставляет полную информацию про все доступные истории (фактически является сочетанием /list + /get)
Полный путь к методу: https://www.s1eep.app/api/stories/all
Полный путь к методу: https://www.s1eep.app/api/stories/all
Тип запроса: POST
Требования безопасности: API-ключ
Дополнительные ожидаемые параметры:
- hash — сохранённый клиентом хеш с прошлого раза, в случае совпадения с актуальным (поле stories_hash) будет пустой ответ, необязательно
Дополнительные возвращаемые параметры (в случае отсутствия или несовпадения переданного hash'а):
- stories — массив данных об историях, каждый элемент является словарём со следующими полями
- id — идентификатор истории, который нужно использовать при запросе о данных конкретной истории
- name — имя истории для отображения в списке
- paid — флаг true/false, индикатор платного контента
- sort — порядковый номер контента в списке
- reader — имя озвучивающего историю
- length_secs — длина истории в секундах
- image_story_url — полный URL для картинки, которая представляет историю
- image_reader_url — полный URL для фотографии озвучивающего историю
- story_hash — хэш конкретной истории, чтобы при совпадении с ранее полученным ответом (если он был) не пересохранять контент
- ambient_sound — словарь о звуке окружающей среды, состоящий из следующих ключей:
- id — идентификатор звука
- sound_url — полный URL к файлу со звуком
- sound_secs — длина звука в секундах
- reading_sound — словарь о дорожке с чтением, состоящий из следующих ключей:
- id — идентификатор звука
- sound_url — полный URL к файлу со звуком
- sound_secs — длина звука в секундах
- deleted_stories — массив с идентификаторами удалённых историй для синхронизации кеша
- stories_hash — хэш массива stories, чтобы при совпадении с ранее полученным ответом (если он был) не перерисовывать экран
Пример ответа в случае несовпадения кэша:
{
"_code": 200,
"_msg": "OK",
"_need_payment": false,
"_data": {
"stories": [
{
"id": 15,
"name": "Fallen Leaves",
"paid": false,
"sort": 0,
"reader": "Henry David Thoreau",
"length_secs": 720,
"image_story_url": "https://www.s1eep.app/stories/2019/11/1574760178Card_02@jpg.jpg",
"image_reader_url": null,
"story_hash": "c4e7ea30226f2a973b93879eb3a05f32",
"ambient_sound": null,
"reading_sound": {
"id": 84,
"sound_url": "https://www.s1eep.app/readings/2019/11/1574501730Henry David Thoreau - Fallen Leaves - Peter Yearsley - Nonfiction, Philosophy.mp3",
"sound_secs": 729
}
},
{
"id": 11,
"name": "The Bird of Popular Song",
"paid": true,
"sort": 1,
"reader": "Hans Christian Andersen",
"length_secs": 480,
"image_story_url": "https://www.s1eep.app/stories/2019/11/1574760168Card_01@jpg.jpg",
"image_reader_url": null,
"story_hash": "32b61e16597746c6a98137afb1cc86d1",
"ambient_sound": null,
"reading_sound": {
"id": 79,
"sound_url": "https://www.s1eep.app/readings/2019/11/1574410033Hans Christian Andersen - The Bird of Popular Song - Trisha Rose (thestorygirl) - Myths, Legends & Fairy Tales.mp3",
"sound_secs": 501
}
},
{
"id": 16,
"name": "A Dream of Songs Unsung",
"paid": true,
"sort": 2,
"reader": "Julia Caroline Dorr",
"length_secs": 660,
"image_story_url": "https://www.s1eep.app/stories/2019/11/1574760189Card_03@jpg.jpg",
"image_reader_url": null,
"story_hash": "db935a64c808e282c566a33132c9bbd6",
"ambient_sound": null,
"reading_sound": {
"id": 85,
"sound_url": "https://www.s1eep.app/readings/2019/11/1574501752Julia Caroline Dorr - A Dream of Songs Unsung - Sarah Sellari - Poetry.mp3",
"sound_secs": 635
}
},
{
"id": 17,
"name": "Little Brother",
"paid": true,
"sort": 3,
"reader": "Madeline Z. Doty",
"length_secs": 900,
"image_story_url": "https://www.s1eep.app/stories/2019/11/1574760197Card_04@jpg.jpg",
"image_reader_url": null,
"story_hash": "376384e2a0b972a5f7d66034a8409312",
"ambient_sound": null,
"reading_sound": {
"id": 86,
"sound_url": "https://www.s1eep.app/readings/2019/11/1574501990Madeline Z. Doty - Little Brother - Arie - Fiction, Anthologies.mp3",
"sound_secs": 918
}
},
{
"id": 19,
"name": "Candilli",
"paid": true,
"sort": 5,
"reader": "James Elroy Flecker",
"length_secs": 300,
"image_story_url": "https://www.s1eep.app/stories/2019/11/1574760217Card_06@jpg.jpg",
"image_reader_url": null,
"story_hash": "8111e4978ab773ab80b140327f013a37",
"ambient_sound": null,
"reading_sound": {
"id": 88,
"sound_url": "https://www.s1eep.app/readings/2019/11/1574502048James Elroy Flecker - Candilli - Ben Lindsey-Clark - Essays & Short Works, Literary Criticism.mp3",
"sound_secs": 325
}
},
{
"id": 20,
"name": "Flowers",
"paid": true,
"sort": 6,
"reader": "James Russell Lowell",
"length_secs": 420,
"image_story_url": "https://www.s1eep.app/stories/2019/11/1574760223Card_07@jpg.jpg",
"image_reader_url": null,
"story_hash": "d5074edfa7b2b89f21fb72d3e511fba5",
"ambient_sound": null,
"reading_sound": {
"id": 89,
"sound_url": "https://www.s1eep.app/readings/2019/11/1574502072James Russell Lowell - Flowers - Sarah Sellari - Poetry.mp3",
"sound_secs": 390
}
},
{
"id": 21,
"name": "The Perdu",
"paid": true,
"sort": 7,
"reader": "Sir Charles G. D. Roberts",
"length_secs": 1920,
"image_story_url": "https://www.s1eep.app/stories/2019/11/1574760231Card_08@jpg.jpg",
"image_reader_url": null,
"story_hash": "61bbcf57619b62367f3b7f0a47790aa6",
"ambient_sound": null,
"reading_sound": {
"id": 90,
"sound_url": "https://www.s1eep.app/readings/2019/11/1574502298Sir Charles G. D. Roberts - The Perdu.mp3",
"sound_secs": 1928
}
},
{
"id": 22,
"name": "The Forest",
"paid": true,
"sort": 8,
"reader": "Georgette Leblanc",
"length_secs": 1620,
"image_story_url": "https://www.s1eep.app/stories/2019/11/1574760240Card_09@jpg.jpg",
"image_reader_url": null,
"story_hash": "a3d57007173193a894e751ce19fe2dc0",
"ambient_sound": null,
"reading_sound": {
"id": 91,
"sound_url": "https://www.s1eep.app/readings/2019/11/1574502334Georgette Leblanc - The Forest - MaryAnn - Children's Fiction.mp3",
"sound_secs": 1603
}
},
{
"id": 23,
"name": "The Tinder-Box",
"paid": true,
"sort": 9,
"reader": "Hans Christian Andersen",
"length_secs": 960,
"image_story_url": "https://www.s1eep.app/stories/2019/11/1574760249Card_10@jpg.jpg",
"image_reader_url": null,
"story_hash": "f5fde157b09c312e1e760ee68b802c37",
"ambient_sound": null,
"reading_sound": {
"id": 92,
"sound_url": "https://www.s1eep.app/readings/2019/11/1574502506Hans Christian Andersen - The Tinder-Box - doonaboon - Children's Fiction, Myths, Legends & Fairy Tales, General Fiction.mp3",
"sound_secs": 980
}
}
],
"deleted_stories": [
18,
24
],
"stories_hash": "e32d25219cd914406b6c2a3715738bc6"
}
}Пример ответа в случае совпадения хеша:
{
"_code": 200,
"_msg": "OK",
"_need_payment": false,
"_data": "{}"
}/get
Описание: предоставляет информацию о конкретной истории
Полный путь к методу: https://www.s1eep.app/api/stories/get
Тип запроса: POST
Требования безопасности: API-ключ + пользовательский токен (опционально)
Дополнительные ожидаемые параметры:
- _user_token — пользовательский токен при наличии, чтобы получить доступ к платному контенту, необязательно
- story_id — идентификатор истории
- hash — сохранённый клиентом хеш с прошлого раза, в случае совпадения с актуальным (поле stories_hash) будет пустой ответ, необязательно
Дополнительные возвращаемые параметры (в случае отсутствия или несовпадения переданного hash'а):
- story — словарь данных о запрошенной истории
- id — идентификатор истории (совпадает с запрошенным story_id)
- name — имя истории
- paid — флаг true/false, индикатор платного контента
- sort — порядковый номер контента в списке
- reader — имя озвучивающего историю
- image_story_url — полный URL для картинки, которая представляет историю
- image_reader_url — полный URL для фотографии озвучивающего историю
- ambient_sound — словарь о звуке окружающей среды, состоящий из следующих ключей:
- id — идентификатор звука
- sound_url — полный URL к файлу со звуком
- sound_secs — длина звука в секундах
- reading_sound — словарь о дорожке с чтением, состоящий из следующих ключей:
- id — идентификатор звука
- sound_url — полный URL к файлу со звуком
- sound_secs — длина звука в секундах
- story_hash — хэш данных об истории, чтобы при совпадении с ранее полученным ответом (если он был) не перезагружать данные
Пример ответа в случае несовпадения кэша:
{
"_code": 200,
"_msg": "OK",
"_need_payment": false,
"_data": {
"story": {
"id": 15,
"name": "Fallen Leaves",
"paid": false,
"sort": 0,
"reader": "Henry David Thoreau",
"image_story_url": "https://www.s1eep.app/stories/2019/11/1574760178Card_02@jpg.jpg",
"image_reader_url": null,
"ambient_sound": null,
"reading_sound": {
"id": 84,
"sound_url": "https://www.s1eep.app/readings/2019/11/1574501730Henry David Thoreau - Fallen Leaves - Peter Yearsley - Nonfiction, Philosophy.mp3",
"sound_secs": 729
}
},
"story_hash": "c4e7ea30226f2a973b93879eb3a05f32"
}
}Пример ответа в случае совпадения хеша:
{
"_code": 200,
"_msg": "OK",
"_need_payment": false,
"_data": "{}"
}/check
Описание: быстрая проверка доступности контента для пользователя (проверка наличия доступа или подписки к платному контенту)
Полный путь к методу: https://www.s1eep.app/api/stories/check
Тип запроса: POST
Требования безопасности: API-ключ + пользовательский токен (опционально)
Дополнительные ожидаемые параметры:
- _user_token — пользовательский токен при наличии, чтобы проверить доступ к платному контенту для конкретного пользователя приложения, необязательно
- story_id — идентификатор истории
Дополнительные возвращаемые параметры:
- нет
Пример ответа в случае возможности доступа:
{
"_code": 200,
"_msg": "OK",
"_need_payment": false,
"_data": "{}"
}Пример ответа в случае невозможности доступа:
{
"_code": 403,
"_msg": "Active subscription required",
"_need_payment": true,
"_data": "{}"
}