{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"368e377a-c03f-4b45-b405-0ddb3d7b9eb3","name":"ProfSalon","description":"# Введение\nAPI программы ПрофСалон позволяет интегрироваться со сторонними сервисами и пользоваться такими функциями программы ПрофСалон, как онлайн-запись клиентов в салон, передача лидов из сторонних сервисов и личный кабинет клиентов. \n\nЕсли вы не являетесь пользователем программы ПрофСалон, узнайте больше на сайте https://profsalon.org/. \n\nЕсли у вас возникли вопросы или затруднения при использовании API, пишите на general@profsalon.org с пометкой \"Вопрос по API\". \n\n# Формат входных данных\nПринимаются как данные в формате raw в виде JSON-строки, так и form-data или x-www-form-urlencoded.\nВ документации не использован raw, потому что тогда переменные тяжелее описать.\nЕсли какая-то опциональная переменная не используется, необходимо исключить её из запроса.\n\n# Формат ответа\nВсе ответы сервера содержат целочисленный код ответа <b>code</b>, который равен либо <b>0</b>, индицируя, что запрос прошел успешно, в таком случае тело ответа будет содержаться в <b>result</b>, либо код ошибки из списка, в таком случае текстовое описание ошибки будет содержаться в <b>message</b>. \n\n# Коды ошибок\nhttps://profsalon.org/api_error_codes\n\n# Авторизация\nВ новой версии используется Bearer Token, для получения вашего токена необходимо обратиться по адресу general@profsalon.org.\n\n# Идентификатор запроса\nК любому запросу можно добавить параметр <b>request_id</b>, он будет возвращен в неизменном виде.\n\n# Коды салонов\n<b>Если вы работаете с API от какого-то конкретного салона (то есть вы ведете разработку для конкретного салона или сети салонов), можете пропустить этот абзац.</b>\n\nПри начале работы с приложением пользователь должен ввести код салона, который он хочет видеть в своем приложении. \nЭто действие можно делать неоднократно, добавляя несколько кодов салонов. \nЗа одним кодом может скрываться либо один единичный салон, либо сеть салонов. \n\nЕсли код прошел проверку через метод checkCode, далее его (или, если кодов несколько - то все имеющиеся коды) необходимо передавать в каждом запросе. \nПередаются коды при каждом запросе через GET-параметр <b>codes</b>, который содержит строку со всеми кодами, которые активировал пользователь. <pre>Пример: ...&codes=1234,9876,1122</pre> Если этого не делать, то например при запросе списка салонов сервер вернет пустой ответ, т.к. не знает, какие салоны подключал пользователь. \n\nЕсли же вы ведете разработку для конкретного салона или сети салонов, делать этого не нужно, т.к. в публичном ключе, который вы получили, уже зашит список салонов, к которым должен быть доступ у ваших пользователей. \n\nТакже обратите внимание - например есть сеть из 3 салонов, у каждого из них будет свой код (например 10, 11 и 12) + будет один общий код на сеть, например 13. \nПри передаче любого из этих 4 кодов сервер будет возвращать информацию о всех 3 салонах сети, то есть при запросе списка салонов (/api/salons_list) нет никакой разницы, какой из этих кодов будет передан - доступ будет ко всем салонам сети. \nНо разница будет при вызове метода /api/checkCode - при передаче кода салона 11 сервер вернет например <pre>{\"network\":false,\"only_one_city\":true,\"city\":\"Москва\"}</pre> А если передать код 14, сервер вернет например <pre>{\"network\":true,\"only_one_city\":true,\"city\":\"Москва\"}</pre> Благодаря этому можно переадресовывать пользователя сразу на нужный экран, при вводе кода 11 - на страницу салона, при вводе кода 14 - на экран выбора салона. \nЭто добавляет гибкости и позволяет сетям размещать на сайте один код, а в самих салонах - другой.\n\n# Ограничения\nПри использовании функций авторизации есть ограничение по количеству попыток.\nОдноразовый код действителен 10 минут с момента отправки смс.\nДля авторизации через смс-код - не более 1 попытки входа в 10 секунд.\nДля авторизации через email и пароль - не более 1 попытки входа в 5 секунд.\n","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"6060420","team":667657,"collectionId":"368e377a-c03f-4b45-b405-0ddb3d7b9eb3","publishedId":"Rzfgo9Zv","public":true,"publicUrl":"https://documenter-api.postman.tech/view/6060420/Rzfgo9Zv","privateUrl":"https://go.postman.co/documentation/6060420-368e377a-c03f-4b45-b405-0ddb3d7b9eb3","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"EF5B25"},"documentationLayout":"classic-double-column","version":"8.10.1","publishDate":"2018-12-06T11:38:41.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{},"logos":{}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/27b7e1892c8df4254d544c9d0cd67bcf62c80452780c569d8871fbd113b2f86e","favicon":""},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://documenter.gw.postman.com/view/metadata/Rzfgo9Zv"}