API

API предоставляет доступ к основным возможностям Passwork и позволяет интегрировать Passwork в свою инфраструктуру или разработать собственный клиент.

Общие положения
  1. Данные отправляются используя HTTP POST запросы
  2. Методы API находятся по адресе https://passwork.me/api2/
  3. Данные возвращаются в формате JSON
  4. Рекомендуется использовать защищенное SSL соединение
Библиотеки
  1. Javascript API Connector
  2. .Net API Connector
Ответ сервера

{
    '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 функции находятся в стадии тестирования и скоро будут опубликованы.

Пример получения данных

  1. Открыть сессию используя openSession
  2. Загрузить данные используя getData
  3. Запросить у пользователя секретное слово
  4. Используя секретное слово расшифровать пароль сейфа groups[X].passwordCrypted
  5. Используя пароль сейфа расшифровать данные groups[X].folders[Y].passwords[Z].cryptedPassword