API
API предоставляет доступ к основным возможностям Passwork и позволяет интегрировать Passwork в свою инфраструктуру или разработать собственный клиент.
Общие положения- Данные отправляются используя HTTP POST запросы
- Методы API находятся по адресе https://passwork.me/api2/
- Данные возвращаются в формате JSON
- Рекомендуется использовать защищенное SSL соединение
{ 'response' : { ... }, // ответ 'errorCode' : '...', // код ошибки 'errorMessage' : '...', // текст ошибки }
В случае ошибки response — false.
Далее будут приводится примеры поля response.
Авторизация
/api2/openSession
Создание сессии. Возвращает код сессии, который надо передавать в каждом запросе. Сессия автоматически истекает каждые несколько минут.
Параметры:
email
E-mail (логин) пользователя
password
Пароль авторизации пользователя
Успешная авторизация
{ 'code' : '...', // код сессии 'hash' : '...' // md5-хеш секретного слова (мастер пароля) }
Поле сode потребуется указывать в каждом последующем запросе к API.
Поле hash требуется для того, чтобы клиент смог определить корректность секретного слова.
Ошибки:
response = false
Возвращается в случае неверного логина или пароля.
errorCode = banВ случае бана, если бы совершено несколько неудачных попыток авторизации.
Получение данных
/api2/getData
Получает все пароли пользователя
Параметры:
session
Код сессии
Данные
{ 'user' : '...', // id пользователя 'groups' : [{ // массив сейфов 'id' : '...', // id сейфа 'name' : '...', // название сейфа 'passwordCrypted' : '...', // зашифрованный пароль сейфа 'folders' :[{ // массив папок сейфа 'id' : '...', // id папки 'name' : '...', // название папки 'passwords' : [{ // массив паролей 'id' : '...', // id пароля 'categoryId' : '...', // id папки 'groupId' : '...', // id сейфа, 'name' : '...', // название пароля 'login' : '...', // логин пароля 'url', : '...', 'description' : '...', 'cryptedPassword' : '...', // зашифрованный пароль }] }] }], 'passwords' : [{ // массив паролей 'id' : '...', // id пароля 'categoryId' : '...', // id папки 'groupId' : '...', // id сейфа, 'name' : '...', // название пароля 'login' : '...', // логин пароля 'url', : '...', 'description' : '...', 'cryptedPassword' : '...', // зашифрованный пароль }] }] }
Ошибки:
{ 'response' : false, 'errorCode' : 'expired', 'errorMessage' : 'Session expired' }
Сессия истекла. Требуется открытие новой сессии через метод openSession.
Изменение и добавление данных
Эти API функции находятся в стадии тестирования и скоро будут опубликованы.Пример получения данных
- Открыть сессию используя openSession
- Загрузить данные используя getData
- Запросить у пользователя секретное слово
- Используя секретное слово расшифровать пароль сейфа groups[X].passwordCrypted
- Используя пароль сейфа расшифровать данные groups[X].folders[Y].passwords[Z].cryptedPassword