Общее
Этот раздел API посвящён запросу данных о звуках, которые пользователь может микшировать в отдельном разделе приложения
- вызов /sounds/categories — позволяет получить список актуальных категорий звуков и их полное наполнение (с путями к файлам)
- вызов /sounds/get — получает детальную информацию по конкретному звуку
- вызов /sounds/check — быстрая проверка доступности контента для пользователя (проверка наличия доступа или подписки к платному контенту)
/categories
Описание: отправляет список категорий звуков и их идентификаторов
Полный путь к методу: https://www.s1eep.app/api/sounds/categories
Полный путь к методу: https://www.s1eep.app/api/sounds/categories
Тип запроса: POST
Требования безопасности: API-ключ
Дополнительные ожидаемые параметры:
- hash — сохранённый клиентом хеш с прошлого раза, в случае совпадения с актуальным (поле sound_categories_hash) будет пустой ответ, необязательно
Дополнительные возвращаемые параметры (в случае отсутствия или несовпадения переданного hash'а):
- sound_categories — массив данных о категориях и их наполнении, каждый элемент является словарём со следующими полями
- id — идентификатор тегов
- name — описание тега
- sort — порядковый номер категории в списке
- sounds_count — количество звуков в этой категории
- sounds — массив словарей с информацией о звуках, состоит из следующих ключей:
- id — идентификатор звука
- name — название звука
- paid — признак платности звука (требуется ли активная подписка для доступа)
- sound_category_id — ID категории, к которой принадлежит звук
- length_secs — длина звука в секундах
- image_url — адрес изображения, сопровождающего звук
- sound_hash — хеш звука для сравнение с информацией о звуке, сохранённой в локальном кеше
- sounds — массив информации о аудиофайлах, составляющих звук
- id — идентификатор аудиофайла
- sound_url — адрес аудиофайла
- sound_secs — длина аудиофайла в секундах
- sound_category_hash — хэш категории звуков (зависит от её наполнения и удаления звуков)
- deleted_sound_categories_ids — массив идентификаторов удалённых категорий звуков
- deleted_sound_ids — массив идентификаторов удалённых звуков
- sound_categories_hash — хэш всего контента, чтобы при совпадении с ранее полученным ответом (если он был) не пересохранять данные
Пример ответа в случае не совпадения хеша:
{ "_code": 200, "_msg": "OK", "_need_payment": false, "_data": { "sound_categories": [ { "id": 5, "name": "ASMR", "sort": 0, "sounds_count": 6, "sounds": [ { "id": 33, "name": "Pencil", "paid": false, "sort": 0, "sound_category_id": 5, "length_secs": 50, "image_url": "https://test.s1eep.app/sound_images/2020/01/1579415415i_s_003.png", "sound_hash": "1410313b6568fc84dbfc32939e687592", "sounds": [ { "id": 187, "sound_url": "https://test.s1eep.app/sounds/2020/01/1579415415writing with a pencil .mp3", "sound_secs": 50 } ] }, { "id": 34, "name": "Vinyl Crackle", "paid": false, "sort": 1, "sound_category_id": 5, "length_secs": 12, "image_url": "https://test.s1eep.app/sound_images/2020/01/1579415446i_s_008.png", "sound_hash": "9dc237cef591ad08579c370b1781fd10", "sounds": [ { "id": 188, "sound_url": "https://test.s1eep.app/sounds/2020/01/1579415446vinyl crackle.mp3", "sound_secs": 12 } ] }, { "id": 35, "name": "Fur Stroking", "paid": true, "sort": 2, "sound_category_id": 5, "length_secs": 66, "image_url": "https://test.s1eep.app/sound_images/2020/01/1579415494i_s_012.png", "sound_hash": "d4abfa56c08e5981d649aba8b58a01d1", "sounds": [ { "id": 189, "sound_url": "https://test.s1eep.app/sounds/2020/01/1579415494fur stroking .mp3", "sound_secs": 66 } ] } ], "sound_category_hash": "3ddccdfe546be391d19a92b53093c6d2" }, { "id": 6, "name": "Colored Noises", "sort": 1, "sounds_count": 6, "sounds": [ { "id": 20, "name": "White Noise", "paid": false, "sort": null, "sound_category_id": 6, "length_secs": 10, "image_url": "https://test.s1eep.app/sound_images/2020/01/1579412721i_s_002.png", "sound_hash": "a40f9693e6d136788e5c75ce450b73d7", "sounds": [ { "id": 169, "sound_url": "https://test.s1eep.app/sounds/2020/01/1579412722white noise.mp3", "sound_secs": 10 } ] }, { "id": 22, "name": "Pink Noise", "paid": false, "sort": null, "sound_category_id": 6, "length_secs": 10, "image_url": "https://test.s1eep.app/sound_images/2020/01/1579414774i_s_009.png", "sound_hash": "17d4dad68c75e6b324b9d52ae1010513", "sounds": [ { "id": 176, "sound_url": "https://test.s1eep.app/sounds/2020/01/1579414774pink noise.mp3", "sound_secs": 10 } ] }, { "id": 23, "name": "Green Noise", "paid": false, "sort": null, "sound_category_id": 6, "length_secs": 10, "image_url": "https://test.s1eep.app/sound_images/2020/01/1579414806i_s_006.png", "sound_hash": "8a9614a8744ad662266eade30517fc53", "sounds": [ { "id": 177, "sound_url": "https://test.s1eep.app/sounds/2020/01/1579414806green noise.mp3", "sound_secs": 10 } ] }, { "id": 24, "name": "Delta Waves", "paid": false, "sort": null, "sound_category_id": 6, "length_secs": 10, "image_url": "https://test.s1eep.app/sound_images/2020/01/1579414839i_s_004.png", "sound_hash": "d2957380d5566e1eb14f5caff8da2c00", "sounds": [ { "id": 178, "sound_url": "https://test.s1eep.app/sounds/2020/01/1579414839delta waves.mp3", "sound_secs": 10 } ] }, { "id": 25, "name": "Brown Noise", "paid": false, "sort": null, "sound_category_id": 6, "length_secs": 10, "image_url": "https://test.s1eep.app/sound_images/2020/01/1579415007i_s_012.png", "sound_hash": "4fcbb01536ea153d0bd43d80cffe1f84", "sounds": [ { "id": 179, "sound_url": "https://test.s1eep.app/sounds/2020/01/1579414882brown noise.mp3", "sound_secs": 10 } ] } ], "sound_category_hash": "7e0d8012f1a41832340af271f8a11a65" }, { "id": 7, "name": "Nature Sounds", "sort": 2, "sounds_count": 7, "sounds": [ { "id": 36, "name": "Whales", "paid": false, "sort": null, "sound_category_id": 7, "length_secs": 80, "image_url": "https://test.s1eep.app/sound_images/2020/01/1579415642i_s_008.png", "sound_hash": "7b640ca068217bc60a29bf7573c4280f", "sounds": [ { "id": 190, "sound_url": "https://test.s1eep.app/sounds/2020/01/1579415642whales.mp3", "sound_secs": 80 } ] }, { "id": 37, "name": "Spring Birds", "paid": false, "sort": null, "sound_category_id": 7, "length_secs": 60, "image_url": "https://test.s1eep.app/sound_images/2020/01/1579415670i_s_013.png", "sound_hash": "140babb83247a97b8bb6b9f4c41fca96", "sounds": [ { "id": 191, "sound_url": "https://test.s1eep.app/sounds/2020/01/1579415670spring birds.mp3", "sound_secs": 60 } ] }, { "id": 38, "name": "Space Voices", "paid": false, "sort": null, "sound_category_id": 7, "length_secs": 80, "image_url": "https://test.s1eep.app/sound_images/2020/01/1579415698i_s_007.png", "sound_hash": "b93fec4d09493772ed40b1045edaf353", "sounds": [ { "id": 192, "sound_url": "https://test.s1eep.app/sounds/2020/01/1579415698space voices.mp3", "sound_secs": 80 } ] }, { "id": 39, "name": "Night Bird", "paid": false, "sort": null, "sound_category_id": 7, "length_secs": 120, "image_url": "https://test.s1eep.app/sound_images/2020/01/1579415731i_s_002.png", "sound_hash": "b9f81cc0d235da0783b115a526f3f140", "sounds": [ { "id": 193, "sound_url": "https://test.s1eep.app/sounds/2020/01/1579415731night bird.mp3", "sound_secs": 120 } ] }, { "id": 40, "name": "Mysterious Owls", "paid": false, "sort": null, "sound_category_id": 7, "length_secs": 120, "image_url": "https://test.s1eep.app/sound_images/2020/01/1579415763i_s_009.png", "sound_hash": "e5ac753fd81d1c6dd8abd1c9d66f5c22", "sounds": [ { "id": 194, "sound_url": "https://test.s1eep.app/sounds/2020/01/1579415763mysterious owls.mp3", "sound_secs": 120 } ] }, { "id": 41, "name": "Crickets", "paid": false, "sort": null, "sound_category_id": 7, "length_secs": null, "image_url": "https://test.s1eep.app/sound_images/2020/01/1579415793i_s_011.png", "sound_hash": "962286e49aa2afe6d036612809faa8a2", "sounds": [ { "id": 198, "sound_url": "https://test.s1eep.app/sounds/2020/01/1579480020https___test.s1eep.app_sounds_2020_01_1578485594121335__cityrocker__air-traffic-3.mp3", "sound_secs": 42 } ] } ], "sound_category_hash": "8c70ab74f8d9bb8600bf2208b017fa31" }, { "id": 8, "name": "Mechanical Sounds", "sort": 3, "sounds_count": 8, "sounds": [ { "id": 26, "name": "Submarine", "paid": false, "sort": null, "sound_category_id": 8, "length_secs": 30, "image_url": "https://test.s1eep.app/sound_images/2020/01/1579415131i_s_006.png", "sound_hash": "6dc62ed2ea58fa33339a094d6327bdf0", "sounds": [ { "id": 180, "sound_url": "https://test.s1eep.app/sounds/2020/01/1579415131submarine.mp3", "sound_secs": 30 } ] }, { "id": 27, "name": "Spaceship", "paid": false, "sort": null, "sound_category_id": 8, "length_secs": 32, "image_url": "https://test.s1eep.app/sound_images/2020/01/1579415159i_s_003.png", "sound_hash": "df1603622cc0e4add5d6c77f0e0e2c40", "sounds": [ { "id": 181, "sound_url": "https://test.s1eep.app/sounds/2020/01/1579415159spaceship.mp3", "sound_secs": 32 } ] }, { "id": 28, "name": "Space Sonar", "paid": false, "sort": null, "sound_category_id": 8, "length_secs": 28, "image_url": "https://test.s1eep.app/sound_images/2020/01/1579415210i_s_008.png", "sound_hash": "1d72a50902ccb07b33683bf1a12372f1", "sounds": [ { "id": 182, "sound_url": "https://test.s1eep.app/sounds/2020/01/1579415210space sonar.mp3", "sound_secs": 28 } ] }, { "id": 29, "name": "Keyboard Typing", "paid": false, "sort": null, "sound_category_id": 8, "length_secs": 32, "image_url": "https://test.s1eep.app/sound_images/2020/01/1579415244i_s_003.png", "sound_hash": "2124e1eb8a737b15d8d9bd7e255e7023", "sounds": [ { "id": 183, "sound_url": "https://test.s1eep.app/sounds/2020/01/1579415244keyboard typing.mp3", "sound_secs": 32 } ] }, { "id": 30, "name": "Hairdryer", "paid": false, "sort": null, "sound_category_id": 8, "length_secs": 22, "image_url": "https://test.s1eep.app/sound_images/2020/01/1579415278i_s_007.png", "sound_hash": "4f539b93c20762433550b6c7bba61681", "sounds": [ { "id": 184, "sound_url": "https://test.s1eep.app/sounds/2020/01/1579415278hairdryer.mp3", "sound_secs": 22 } ] }, { "id": 31, "name": "Drone Engine", "paid": false, "sort": null, "sound_category_id": 8, "length_secs": 28, "image_url": "https://test.s1eep.app/sound_images/2020/01/1579415307i_s_008.png", "sound_hash": "83ba31dca62ade96f1cfbd686492ffbd", "sounds": [ { "id": 185, "sound_url": "https://test.s1eep.app/sounds/2020/01/1579415307drone engine.mp3", "sound_secs": 28 } ] }, { "id": 32, "name": "Dishwasher", "paid": false, "sort": null, "sound_category_id": 8, "length_secs": 32, "image_url": "https://test.s1eep.app/sound_images/2020/01/1579415341i_s_002.png", "sound_hash": "aaa641ad4a024e8d24cc30b593069189", "sounds": [ { "id": 186, "sound_url": "https://test.s1eep.app/sounds/2020/01/1579415341dishwasher.mp3", "sound_secs": 32 } ] } ], "sound_category_hash": "e72a41b6410d2beb807987722a179740" }, { "id": 9, "name": "Relax Melodies", "sort": 4, "sounds_count": 1, "sounds": [], "sound_category_hash": "df057541ddb07d45b2b473a39bdf448a" }, { "id": 1, "name": "Air", "sort": 5, "sounds_count": 7, "sounds": [ { "id": 5, "name": "Duster", "paid": false, "sort": null, "sound_category_id": 1, "length_secs": 15, "image_url": "https://test.s1eep.app/sound_images/2020/01/1578486099Subtract2.png", "sound_hash": "3130f30452081c836aacabb2ea11e9cb", "sounds": [ { "id": 144, "sound_url": "https://test.s1eep.app/sounds/2020/01/1578486099232920__bmusic92__duster.mp3", "sound_secs": 15 } ] }, { "id": 6, "name": "Whiff", "paid": false, "sort": null, "sound_category_id": 1, "length_secs": 4, "image_url": "https://test.s1eep.app/sound_images/2020/01/1578486193Subtract2.png", "sound_hash": "9d909c780b7f612c3a7f752985b1f95f", "sounds": [ { "id": 145, "sound_url": "https://test.s1eep.app/sounds/2020/01/1578486193182693__kingsrow__whiff.mp3", "sound_secs": 4 } ] }, { "id": 4, "name": "Windstorm", "paid": false, "sort": 0, "sound_category_id": 1, "length_secs": 60, "image_url": "https://test.s1eep.app/sound_images/2020/01/1578485708Subtract2.png", "sound_hash": "90e2b12a747acc3e0b6962ce0e4558c2", "sounds": [ { "id": 143, "sound_url": "https://test.s1eep.app/sounds/2020/01/157848570879934__nickleus__ams-windstorm-20090917.mp3", "sound_secs": 60 } ] }, { "id": 3, "name": "Air Traffic", "paid": false, "sort": 1, "sound_category_id": 1, "length_secs": 42, "image_url": "https://test.s1eep.app/sound_images/2020/01/1578485594Subtract2.png", "sound_hash": "99d29673591ee0f957e8f78d64ca5848", "sounds": [ { "id": 142, "sound_url": "https://test.s1eep.app/sounds/2020/01/1578485594121335__cityrocker__air-traffic-3.mp3", "sound_secs": 42 } ] }, { "id": 1, "name": "Cold & wet", "paid": false, "sort": 3, "sound_category_id": 1, "length_secs": 2, "image_url": "https://test.s1eep.app/sound_images/2020/01/1578485370Subtract.png", "sound_hash": "ea00a5627af6d4b86651043801056a7f", "sounds": [ { "id": 140, "sound_url": "https://test.s1eep.app/sounds/2020/01/1578485119379470__vandale__wind3.mp3", "sound_secs": 2 } ] } ], "sound_category_hash": "1ac7844a472837dfabf008c4a8536908" } ], "deleted_sound_categories_ids": [ 2, 4 ], "deleted_sound_ids": [ 2, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21 ], "sound_categories_hash": "715400a43694a0fc1e5c0e14a0c28b44" } }
Пример ответа в случае совпадения хеша:
{ "_code": 200, "_msg": "OK", "_need_payment": false, "_data": "{}" }
/get
Описание: предоставляет информацию о конкретном звуке
Полный путь к методу: https://www.s1eep.app/api/sounds/get
Тип запроса: POST
Требования безопасности: API-ключ + пользовательский токен (опционально)
Дополнительные ожидаемые параметры:
- _user_token — пользовательский токен при наличии, чтобы получить доступ к платному контенту, необязательно
- sound_id — идентификатор звука
- hash — сохранённый клиентом хеш с прошлого раза, в случае совпадения с актуальным (поле meditation_hash в ответе) будет пустой ответ, необязательно
Дополнительные возвращаемые параметры (в случае отсутствия или несовпадения переданного hash'а):
- sound — словарь данных о запрошенном звуке
- id — идентификатор звука, который нужно использовать при запросе детальных данных о нём
- name — название звука
- paid — флаг true/false, индикатор платного контента
- sort — порядковый номер контента в списке
- sound_category_id — идентификатор категории звука
- length_secs — длина звука в секундах
- image_url — полный URL для картинки, которая представляет звук
- sounds — массив словарей с детальной информацией о звуковых файлах, состоящих из следующих ключей:
- id — идентификатор звука
- sound_url — полный URL к файлу со звуком
- sound_secs — длина звука в секундах
- sound_hash — хэш данных о звуке, чтобы при совпадении с ранее полученным ответом (если он был) не перезагружать данные
Пример ответа в случае несовпадения хеша:
{ "_code": 200, "_msg": "OK", "_need_payment": false, "_data": { "sound": { "id": 11, "name": "Water", "paid": false, "sort": 0, "sound_category_id": 2, "image_url": "https://www.s1eep.app/sound_images/2020/01/1578487365SSS.png", "sounds": [ { "id": 150, "sound_url": "https://www.s1eep.app/sounds/2020/01/1578487365165669__dn-kp__dn-kp-water-01.mp3", "sound_secs": 13 }, { "id": 151, "sound_url": "https://www.s1eep.app/sounds/2020/01/1578538127367689__funwithsound__water-pour-into-sink.mp3", "sound_secs": 6 } ] }, "sound_hash": "970b77f5bba4051835312cd9b153b670" } }
Пример ответа в случае совпадения хеша:
{ "_code": 200, "_msg": "OK", "_need_payment": false, "_data": "{}" }
/check
Описание: быстрая проверка доступности контента для пользователя (проверка наличия доступа или подписки к платному контенту)
Полный путь к методу: https://www.s1eep.app/api/sounds/check
Тип запроса: POST
Требования безопасности: API-ключ + пользовательский токен (опционально)
Дополнительные ожидаемые параметры:
- _user_token — пользовательский токен при наличии, чтобы проверить доступ к платному контенту для конкретного пользователя приложения, необязательно
- sound_id — идентификатор медитации
Дополнительные возвращаемые параметры:
- нет
Пример ответа в случае возможности доступа:
{ "_code": 200, "_msg": "OK", "_need_payment": false, "_data": "{}" }
Пример ответа в случае невозможности доступа:
{ "_code": 403, "_msg": "Active subscription required", "_need_payment": true, "_data": "{}" }