Общее
Этот раздел 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": "{}"
}