Общее
Этот раздел API посвящён запросу данных о медитациях, т.е. экранах, на которых пользователь «миксует» зачитываемый рассказ и звук окружающей среды
- вызов /meditations/list — позволяет получить перечень актуальных медитаций
- вызов /meditations/all — позволяет получить перечень и наполнение актуальных медитаций
- вызов /meditations/tags — позволяет получить список актуальных тегов медитаций
- вызов /meditations/get — получает конкретную конфигурацию медитаций, ссылки на изображения, файлы для микширования звуков, их названия и т.д.
- вызов /meditations/check — быстрая проверка доступности контента для пользователя (проверка наличия доступа или подписки к платному контенту)
/list
Описание: предоставляет информацию про все доступные медитации
Полный путь к методу: https://www.s1eep.app/api/meditations/list
Полный путь к методу: https://www.s1eep.app/api/meditations/list
Тип запроса: POST
Требования безопасности: API-ключ
Дополнительные ожидаемые параметры:
- hash — сохранённый клиентом хеш с прошлого раза, в случае совпадения с актуальным (поле meditations_hash) будет пустой ответ, необязательно
Дополнительные возвращаемые параметры (в случае отсутствия или несовпадения переданного hash'а):
- meditations — массив данных о медитациях, каждый элемент является словарём со следующими полями
- id — идентификатор медитации, который нужно использовать при запросе о данных конкретной медитации
- name — имя медитации для отображения в списке
- tags — массив идентификаторов тегов медитации
- paid — флаг true/false, индикатор платного контента
- sort — порядковый номер контента в списке
- reader — имя озвучивающего медитацию
- image_meditation_url — полный URL для картинки, которая представляет медитацию
- image_reader_url — полный URL для фотографии озвучивающего медитацию
- meditation_hash — хэш конкретной медитации, чтобы при совпадении с ранее полученным ответом (если он был) не пересохранять контент
- deleted_meditations — массив идентификаторов удалённых медитаций для синхронизации кеша
- meditations_hash — хэш массива meditations, чтобы при совпадении с ранее полученным ответом (если он был) не перерисовывать экран
Пример ответа в случае несовпадения хеша:
{ "_code": 200, "_msg": "OK", "_need_payment": false, "_data": { "meditations": [ { "id": 6, "name": "Bedtime", "paid": false, "sort": 0, "tags": [ 9, 10 ], "reader": "Loula Taylor", "length_secs": 600, "image_meditation_url": "https://www.s1eep.app/meditations/2020/01/1578937060card12.jpg", "image_reader_url": "https://www.s1eep.app/readers/2019/11/1573830430reader.png", "meditation_hash": "7251c692fb5dda7d180352154bf08faf" }, { "id": 10, "name": "Reconnect with your Spiritual Self", "paid": true, "sort": 1, "tags": [ 11, 9, 12 ], "reader": "Emma Devonshire", "length_secs": 1260, "image_meditation_url": "https://www.s1eep.app/stories/2019/11/1574921684Card_14@jpg.jpg", "image_reader_url": "https://www.s1eep.app/readers/2019/11/1573830461reader3.png", "meditation_hash": "cc21a57974084103087e16ddbe757834" }, { "id": 11, "name": "Soothing Train Ride", "paid": true, "sort": 2, "tags": [ 10, 9, 11, 14 ], "reader": "Ben Whittingham", "length_secs": 1440, "image_meditation_url": "https://www.s1eep.app/stories/2019/11/1574921636Card_15@jpg.jpg", "image_reader_url": "https://www.s1eep.app/readers/2019/11/1573830466reader4.png", "meditation_hash": "464093cf8b2f6a69dbf34c2df9820736" }, { "id": 12, "name": "Astral Projection Practice", "paid": true, "sort": 3, "tags": [ 9, 11 ], "reader": "Loula Taylor", "length_secs": 2400, "image_meditation_url": "https://www.s1eep.app/stories/2019/11/1574921608Card_16@jpg.jpg", "image_reader_url": "https://www.s1eep.app/readers/2019/11/1573830430reader.png", "meditation_hash": "b63c057bf2b6a84f9bc80c98b43e9896" }, { "id": 13, "name": "Sleepy River Visualization", "paid": true, "sort": 4, "tags": [ 13, 9, 14 ], "reader": "Emma Devonshire", "length_secs": 1140, "image_meditation_url": "https://www.s1eep.app/stories/2019/11/1574921590Card_17@jpg.jpg", "image_reader_url": "https://www.s1eep.app/readers/2019/11/1573830461reader3.png", "meditation_hash": "11d4835c11989926b6802df026cc24ed" }, { "id": 14, "name": "Lucid Dreaming Experience", "paid": true, "sort": 5, "tags": [ 9, 10, 11, 14 ], "reader": "Ruth Wayne", "length_secs": 840, "image_meditation_url": "https://www.s1eep.app/stories/2019/11/1574921574Card_18@jpg.jpg", "image_reader_url": "https://www.s1eep.app/readers/2019/11/1573830442reader2.png", "meditation_hash": "4e50a3018c7f7ed2c62598b4d94c6f55" }, { "id": 15, "name": "Get to Sleep in Five Minutes", "paid": true, "sort": 6, "tags": [ 9, 10, 11, 14 ], "reader": "Loula Taylor", "length_secs": 360, "image_meditation_url": "https://www.s1eep.app/stories/2019/11/1574921544Card_19@jpg.jpg", "image_reader_url": "https://www.s1eep.app/readers/2019/11/1573830430reader.png", "meditation_hash": "cecb599f8fa4a0f19300a3cf63f5dc00" }, { "id": 16, "name": "Sleepy Ocean Visualization", "paid": true, "sort": 7, "tags": [ 13, 9, 14 ], "reader": "Loula Taylor", "length_secs": 1320, "image_meditation_url": "https://www.s1eep.app/stories/2019/11/1574921775Card_20@jpg.jpg", "image_reader_url": "https://www.s1eep.app/readers/2019/11/1573830430reader.png", "meditation_hash": "cdfe2fa767c06bde58a10d088cf0e9f1" }, { "id": 8, "name": "Unfazed by the Storm of Anxiety", "paid": true, "sort": 8, "tags": [ 9, 11, 14 ], "reader": "Emma Devonshire", "length_secs": 1200, "image_meditation_url": "https://www.s1eep.app/stories/2019/11/1574760296Card_11@jpg.jpg", "image_reader_url": "https://www.s1eep.app/readers/2019/11/1573830461reader3.png", "meditation_hash": "456a3b6639180bad844bed3c7e1a8004" }, { "id": 7, "name": "Deep Sleep", "paid": true, "sort": 9, "tags": [ 9, 10, 13 ], "reader": "Ruth Wayne", "length_secs": 1320, "image_meditation_url": "https://www.s1eep.app/stories/2019/11/1574760314Card_13@jpg.jpg", "image_reader_url": "https://www.s1eep.app/readers/2019/11/1573830442reader2.png", "meditation_hash": "0493bbc398918a8f836c7ca06d96813d" } ], "deleted_meditations": [ 21 ], "meditations_hash": "493afb281ea9714c4d1c002ccbaf4136" } }
Пример ответа в случае совпадения хеша:
{ "_code": 200, "_msg": "OK", "_need_payment": false, "_data": "{}" }
/all
Описание: предоставляет полную информацию про все доступные медитации (фактически является сочетанием /list + /get)
Полный путь к методу: https://www.s1eep.app/api/meditations/all
Полный путь к методу: https://www.s1eep.app/api/meditations/all
Тип запроса: POST
Требования безопасности: API-ключ
Дополнительные ожидаемые параметры:
- hash — сохранённый клиентом хеш с прошлого раза, в случае совпадения с актуальным (поле meditations_hash) будет пустой ответ, необязательно
Дополнительные возвращаемые параметры (в случае отсутствия или несовпадения переданного hash'а):
- meditations — массив данных о медитациях, каждый элемент является словарём со следующими полями
- id — идентификатор медитации, который нужно использовать при запросе о данных конкретной медитации
- name — имя медитации для отображения в списке
- tags — массив идентификаторов тегов медитации
- paid — флаг true/false, индикатор платного контента
- sort — порядковый номер контента в списке
- reader — имя озвучивающего медитацию
- image_meditation_url — полный URL для картинки, которая представляет медитацию
- image_reader_url — полный URL для фотографии озвучивающего медитацию
- meditation_hash — хэш конкретной медитации, чтобы при совпадении с ранее полученным ответом (если он был) не пересохранять контент
- ambient_sound — словарь о звуке окружающей среды, состоящий из следующих ключей:
- id — идентификатор звука
- sound_url — полный URL к файлу со звуком
- sound_secs — длина звука в секундах
- reading_sound — словарь о дорожке с чтением, состоящий из следующих ключей:
- id — идентификатор звука
- sound_url — полный URL к файлу со звуком
- sound_secs — длина звука в секундах
- deleted_meditations — массив идентификаторов удалённых медитаций для синхронизации кеша
- meditations_hash — хэш массива meditations, чтобы при совпадении с ранее полученным ответом (если он был) не перерисовывать экран
Пример ответа в случае несовпадения хеша:
{ "_code": 200, "_msg": "OK", "_need_payment": false, "_data": { "meditations": [ { "id": 6, "name": "Bedtime", "paid": false, "sort": 0, "tags": [ 9, 10 ], "reader": "Loula Taylor", "length_secs": 600, "image_meditation_url": "http://test.s1eep.app/stories/2019/11/1574760305Card_12@jpg.jpg", "image_reader_url": "http://test.s1eep.app/readers/2019/11/1573830430reader.png", "meditation_hash": "c265704aba377ebcb5ca291202a61755", "ambient_sound": null, "reading_sound": { "id": 70, "sound_url": "http://test.s1eep.app/readings/2019/11/1573827121429 Bedtime.mp3", "sound_secs": 607 } }, { "id": 10, "name": "Reconnect with your Spiritual Self", "paid": true, "sort": 1, "tags": [ 11, 9, 12 ], "reader": "Emma Devonshire", "length_secs": 1260, "image_meditation_url": "http://test.s1eep.app/stories/2019/11/1574921684Card_14@jpg.jpg", "image_reader_url": "http://test.s1eep.app/readers/2019/11/1573830461reader3.png", "meditation_hash": "db2ac32dd9e3710c25f1fd853547768d", "ambient_sound": null, "reading_sound": { "id": 95, "sound_url": "http://test.s1eep.app/readings/2019/11/1574899951480 Spiritual.mp3", "sound_secs": 1235 } }, { "id": 11, "name": "Soothing Train Ride", "paid": true, "sort": 2, "tags": [ 10, 9, 11, 14 ], "reader": "Ben Whittingham", "length_secs": 1440, "image_meditation_url": "http://test.s1eep.app/stories/2019/11/1574921636Card_15@jpg.jpg", "image_reader_url": "http://test.s1eep.app/readers/2019/11/1573830466reader4.png", "meditation_hash": "2069c8c1720caefe19d1e85c800cf5b4", "ambient_sound": null, "reading_sound": { "id": 96, "sound_url": "http://test.s1eep.app/readings/2019/11/1574900017030 Deep Sleep - Soothing Train Ride - 25 Min.mp3", "sound_secs": 1458 } }, { "id": 12, "name": "Astral Projection Practice", "paid": true, "sort": 3, "tags": [ 9, 11 ], "reader": "Loula Taylor", "length_secs": 2400, "image_meditation_url": "http://test.s1eep.app/stories/2019/11/1574921608Card_16@jpg.jpg", "image_reader_url": "http://test.s1eep.app/readers/2019/11/1573830430reader.png", "meditation_hash": "e1319e3540290a07d090594f98253255", "ambient_sound": null, "reading_sound": { "id": 97, "sound_url": "http://test.s1eep.app/readings/2019/11/1574900065192 Astral Projection Practice - 40 Min.mp3", "sound_secs": 2403 } }, { "id": 13, "name": "Sleepy River Visualization", "paid": true, "sort": 4, "tags": [ 13, 9, 14 ], "reader": "Emma Devonshire", "length_secs": 1140, "image_meditation_url": "http://test.s1eep.app/stories/2019/11/1574921590Card_17@jpg.jpg", "image_reader_url": "http://test.s1eep.app/readers/2019/11/1573830461reader3.png", "meditation_hash": "e23dab2bab23e5ccdedb5e1612080f5d", "ambient_sound": null, "reading_sound": { "id": 98, "sound_url": "http://test.s1eep.app/readings/2019/11/1574900138203 Sleepy River Visualization - 20 Min.mp3", "sound_secs": 1167 } }, { "id": 14, "name": "Lucid Dreaming Experience", "paid": true, "sort": 5, "tags": [ 9, 10, 11, 14 ], "reader": "Ruth Wayne", "length_secs": 840, "image_meditation_url": "http://test.s1eep.app/stories/2019/11/1574921574Card_18@jpg.jpg", "image_reader_url": "http://test.s1eep.app/readers/2019/11/1573830442reader2.png", "meditation_hash": "c83a4d2fa29904afa176ca4a969cf6e7", "ambient_sound": null, "reading_sound": { "id": 99, "sound_url": "http://test.s1eep.app/readings/2019/11/1574900183314 Lucid Dreaming Experience - 13 Min.mp3", "sound_secs": 831 } }, { "id": 15, "name": "Get to Sleep in Five Minutes", "paid": true, "sort": 6, "tags": [ 9, 10, 11, 14 ], "reader": "Loula Taylor", "length_secs": 360, "image_meditation_url": "http://test.s1eep.app/stories/2019/11/1574921544Card_19@jpg.jpg", "image_reader_url": "http://test.s1eep.app/readers/2019/11/1573830430reader.png", "meditation_hash": "9a15ab0d42da391d9af3521162a662df", "ambient_sound": null, "reading_sound": { "id": 100, "sound_url": "http://test.s1eep.app/readings/2019/11/1574900211312 Get to Sleep in Five Minutes - 5 Min.mp3", "sound_secs": 330 } }, { "id": 16, "name": "Sleepy Ocean Visualization", "paid": true, "sort": 7, "tags": [ 13, 9, 14 ], "reader": "Loula Taylor", "length_secs": 1320, "image_meditation_url": "http://test.s1eep.app/stories/2019/11/1574921775Card_20@jpg.jpg", "image_reader_url": "http://test.s1eep.app/readers/2019/11/1573830430reader.png", "meditation_hash": "e0ab045c97d9ce23dae547bea85cd332", "ambient_sound": null, "reading_sound": { "id": 101, "sound_url": "http://test.s1eep.app/readings/2019/11/1574900239226 Sleepy Ocean Visualization -20 Min.mp3", "sound_secs": 1343 } }, { "id": 8, "name": "Unfazed by the Storm of Anxiety", "paid": true, "sort": 8, "tags": [ 9, 11, 14 ], "reader": "Emma Devonshire", "length_secs": 1200, "image_meditation_url": "http://test.s1eep.app/stories/2019/11/1574760296Card_11@jpg.jpg", "image_reader_url": "http://test.s1eep.app/readers/2019/11/1573830461reader3.png", "meditation_hash": "2b5171c209b787e70a7e7c33bdb176e5", "ambient_sound": null, "reading_sound": { "id": 72, "sound_url": "http://test.s1eep.app/readings/2019/11/1573827335315 Unfazed by the Storm of Anxiety - 20 Min.mp3", "sound_secs": 1201 } }, { "id": 7, "name": "Deep Sleep", "paid": true, "sort": 9, "tags": [ 9, 10, 13 ], "reader": "Ruth Wayne", "length_secs": 1320, "image_meditation_url": "http://test.s1eep.app/stories/2019/11/1574760314Card_13@jpg.jpg", "image_reader_url": "http://test.s1eep.app/readers/2019/11/1573830442reader2.png", "meditation_hash": "9e78b1d7d2768a2b6614868887109bb0", "ambient_sound": null, "reading_sound": { "id": 71, "sound_url": "http://test.s1eep.app/readings/2019/11/1573827226366 Deep Sleep - 20 Min.mp3", "sound_secs": 1340 } } ], "deleted_meditations": [], "meditations_hash": "4086995d5c28dab7e47f82111524c01c" } }
Пример ответа в случае совпадения хеша:
{ "_code": 200, "_msg": "OK", "_need_payment": false, "_data": "{}" }
/tags
Описание: отправляет список тегов и их идентификаторов
Полный путь к методу: https://www.s1eep.app/api/mediations/tags
Полный путь к методу: https://www.s1eep.app/api/mediations/tags
Тип запроса: POST
Требования безопасности: API-ключ
Дополнительные ожидаемые параметры:
- hash — сохранённый клиентом хеш с прошлого раза, в случае совпадения с актуальным (поле tags_hash) будет пустой ответ, необязательно
Дополнительные возвращаемые параметры (в случае отсутствия или несовпадения переданного hash'а):
- tags — массив данных о тегах, каждый элемент является словарём со следующими полями
- id — идентификатор тегов
- name — описание тега
- sort — порядковый номер контента в списке
- meditations_count — количество медитаций под этим тегом
- tags_hash — хэш массива tags, чтобы при совпадении с ранее полученным ответом (если он был) не пересохранять данные
Пример ответа в случае не совпадения хеша:
{ "_code": 200, "_msg": "OK", "_need_payment": false, "_data": { "tags": [ { "id": 9, "name": "All", "sort": 0, "meditations_count": 10 }, { "id": 11, "name": "Spiritual", "sort": 1, "meditations_count": 6 }, { "id": 10, "name": "Sleep Basics", "sort": 2, "meditations_count": 5 }, { "id": 12, "name": "Self-Care", "sort": 3, "meditations_count": 1 }, { "id": 13, "name": "Deep Sleep", "sort": 4, "meditations_count": 3 }, { "id": 14, "name": "Anxiety", "sort": 5, "meditations_count": 6 } ], "tags_hash": "3ec8ca3479bb06a3c5a47f235ee2b042" } }
Пример ответа в случае совпадения хеша:
{ "_code": 200, "_msg": "OK", "_need_payment": false, "_data": "{}" }
/get
Описание: предоставляет информацию о конкретной медитации
Полный путь к методу: https://www.s1eep.app/api/meditations/get
Тип запроса: POST
Требования безопасности: API-ключ + пользовательский токен (опционально)
Дополнительные ожидаемые параметры:
- _user_token — пользовательский токен при наличии, чтобы получить доступ к платному контенту, необязательно
- meditation_id — идентификатор медитации
- hash — сохранённый клиентом хеш с прошлого раза, в случае совпадения с актуальным (поле meditation_hash в ответе) будет пустой ответ, необязательно
Дополнительные возвращаемые параметры (в случае отсутствия или несовпадения переданного hash'а):
- meditation — словарь данных о запрошенной медитации
- id — идентификатор медитации (совпадает с запрошенным meditation_id)
- name — имя медитации
- paid — флаг true/false, индикатор платного контента
- sort — порядковый номер контента в списке
- tags — массив идентификаторов тегов медитации
- reader — имя озвучивающего медитацию
- image_meditation_url — полный URL для картинки, которая представляет медитацию
- image_reader_url — полный URL для фотографии озвучивающего медитацию
- ambient_sound — словарь о звуке окружающей среды, состоящий из следующих ключей:
- id — идентификатор звука
- sound_url — полный URL к файлу со звуком
- sound_secs — длина звука в секундах
- reading_sound — словарь о дорожке с чтением, состоящий из следующих ключей:
- id — идентификатор звука
- sound_url — полный URL к файлу со звуком
- sound_secs — длина звука в секундах
- meditation_hash — хэш данных о медитации, чтобы при совпадении с ранее полученным ответом (если он был) не перезагружать данные
Пример ответа в случае несовпадения хеша:
{ "_code": 200, "_msg": "OK", "_need_payment": false, "_data": { "meditation": { "id": 6, "name": "Bedtime", "paid": false, "sort": 0, "tags": [ 9, 10 ], "reader": "Loula Taylor", "image_meditation_url": "http://test.s1eep.app/stories/2019/11/1574760305Card_12@jpg.jpg", "image_reader_url": "http://test.s1eep.app/readers/2019/11/1573830430reader.png", "ambient_sound": null, "reading_sound": { "id": 70, "sound_url": "http://test.s1eep.app/readings/2019/11/1573827121429 Bedtime.mp3", "sound_secs": 607 } }, "meditation_hash": "c265704aba377ebcb5ca291202a61755" } }
Пример ответа в случае совпадения хеша:
{ "_code": 200, "_msg": "OK", "_need_payment": false, "_data": "{}" }
/check
Описание: быстрая проверка доступности контента для пользователя (проверка наличия доступа или подписки к платному контенту)
Полный путь к методу: https://www.s1eep.app/api/meditations/check
Тип запроса: POST
Требования безопасности: API-ключ + пользовательский токен (опционально)
Дополнительные ожидаемые параметры:
- _user_token — пользовательский токен при наличии, чтобы проверить доступ к платному контенту для конкретного пользователя приложения, необязательно
- meditation_id — идентификатор медитации
Дополнительные возвращаемые параметры:
- нет
Пример ответа в случае возможности доступа:
{ "_code": 200, "_msg": "OK", "_need_payment": false, "_data": "{}" }
Пример ответа в случае невозможности доступа:
{ "_code": 403, "_msg": "Active subscription required", "_need_payment": true, "_data": "{}" }