Roomink

Snipe API - это приложение, которое служит бэк-эндом для редакционной админки. Ibis - соответственно, фронт-энд для той же админки.

Roomink API - условное название для API, которое будет использоваться публичными фронт-эндами сайтов.

В правой части страницы можно почитать примеры кода на ruby и shell.

Авторизация

Авторизация заключается в получении токена доступа, который затем используется при любых обращениях к API. Процесс авторизации сделан по образу и подобию OAuth2, кое-где отличаясь в сторону упрощения.

Авторизация Ibis в Snipe API

Запрос к API:

require 'snipe/api_client'
api = Snipe::APIClient.authorize(login: 'snipe', password: '12345678')
$ http POST snipe.dev/access_token login=snipe password=12345678

Структура ответа:

{
  "access_token": "0dcd08fe8018e19b674a099738d5ed25",
  "refresh_token": "16afab433d1196cc037ff2513a8dcc15",
  "user_id": 123,
  "expires_at": "2014-04-16 13:28:19 +0400"
}

Ibis авторизует себя и пользователя, передавая логин и пароль ИЛИ email и пароль пользователя.

HTTP запрос

POST http://snipe.dev/access_token

Параметры

Параметр Описание Примечание
login Логин пользователя Необходим при отсутствии email
email E-mail пользователя Необходим при отсутствии login
password Пароль пользователя Необходим

В ответ API возвращает токен доступа, который в дальнейшем передается с каждым запросом к API в заголовке:

X-Access-Token: 0dcd08fe8018e19b674a099738d5ed25

Авторизация фронт-энда в Roomink API

Запрос к API:

require 'snipe/api_client'
api = Snipe::APIClient.authorize(
  app_id:     12345,
  app_secret: '40838e1c2a344453a6c6'
)
$ http POST roomink.dev/access_token app_id=12345 app_secret=40838e1c2a344453a6c6

Структура ответа:

{
  "access_token": "0dcd08fe8018e19b674a099738d5ed25",
  "refresh_token": "16afab433d1196cc037ff2513a8dcc15",
  "expires_at": "2014-04-16 13:28:19 +0400"
}

При запуске фронт-энд регистрируется в системе, получая app_id и app_secret; для получения токена необходимо передать эти данные на точку авторизации.

HTTP запрос

POST http://roomink.dev/access_token

Параметры

Параметр Описание Примечание
app_id Id приложения Необходим
app_secret Секретный ключ приложения Необходим

В ответ также приходит токен доступа, используемый для авторизации дальнейших запросов.

X-Access-Token: 0dcd08fe8018e19b674a099738d5ed25

Обновление токена

Запрос к API:

api.refresh_token!
$ http POST snipe.dev/refresh_token refresh_token=16afab433d1196cc037ff2513a8dcc15

Структура ответа:

{
  "access_token": "c8e0bd630a2dc4eb9dff820c16bd60ab",
  "refresh_token": "974424bbc159a7a788d32e368625bb18",
  "expires_at": "2014-04-18 13:28:19 +0400"
}

Срок действия любого токена доступа ограничен; конец этого срока приходит вместе с токеном в поле expires_at. По истечении этого срока API выдает ошибку о невалидном токене; в этом случае нужно получить новый токен, используя полученный ранее refresh_token (также приходит вместе с токеном).

HTTP запрос

POST http://snipe.dev/refresh_token

или

POST http://roomink.dev/refresh_token

Параметры

Параметр Описание
refresh_token Ранее полученный refresh_token