Авторизация для клиентской интеграции
Для интеграции на страницу сайта необходимо использовать ApiKey и код из SMS для авторизации:
- ApiKey для каждого сайта свой.
Поэтому для каждого ApiKey необходимо предоставить доменное имя, так как оно будет проверять разрешения для обращений с домена: все доступные URL поддерживают CORS. - SMS код и используется для авторизации.
Код проверяется системой защиты от автоматического доступа. При получении положительного ответа авторизация считается успешной.
Для авторизации:
- Укажите в параметре ApiKey полученный ApiKey
- Отправьте запросы:
- /guest/v1/auth/sendsms — отправка кода гостю в СМС. Повторная отправка будет возможна через время, указанное в ответе
- /guest/v1/auth/checksms — передача кода из СМС, в ответ придет пара токенов. Токен авторизации необходимо использовать во всех запросах в HTTP заголовке Authorization.
Используйте Refresh токен при истечении времени действия токена авторизации, чтобы получить новую пару. - /guest/v1/auth/refresh — обновление токенов по истечении времени действия токена авторизации.
swagger: "2.0"
info:
title: RKeeper guest auth.
version: 1.0.0
host: "api.rkeeper.ru"
schemes:
- https
securityDefinitions:
ApiKeyAuth:
type: apiKey
in: header
name: ApiKey
security:
- ApiKeyAuth: []
basePath: /pub/
consumes:
- application/json
produces:
- application/json
paths:
/guest/v1/auth/sendsms:
post:
tags:
- GuestAuth
summary: отправка кода гостю в СМС
operationId: GuestSendSms
parameters:
- name: body
in: body
required: true
schema:
$ref: '#/definitions/SendSmsRequest'
responses:
200:
description: Success
schema:
$ref: '#/definitions/SmsSendResult'
400:
description: Bad request
$ref: '#/definitions/ErrorMessage'
401:
description: Unauthorized request
$ref: '#/definitions/ErrorMessage'
422:
description: Unprocessable entity. При повторной отправке до истечения времени
$ref: '#/definitions/ErrorMessage'
/guest/v1/auth/checksms:
post:
tags:
- GuestAuth
summary: проверка кода из СМС
operationId: GuestCheckSms
parameters:
- name: body
in: body
required: true
schema:
$ref: '#/definitions/CheckSmsRequest'
responses:
200:
description: Success
schema:
$ref: '#/definitions/AuthResult'
401:
description: Unauthorized request
$ref: '#/definitions/ErrorMessage'
/guest/v1/auth/refresh:
post:
tags:
- GuestAuth
summary: обновление токенов авторизации
operationId: GuestRefreshToken
parameters:
- name: body
in: body
required: true
schema:
$ref: '#/definitions/GuestRefreshRequest'
responses:
200:
description: Success
schema:
$ref: '#/definitions/AuthResult'
401:
description: Unauthorized request
$ref: '#/definitions/ErrorMessage'
definitions:
SendSmsRequest:
required:
- phone
- captchaResponse
type: object
properties:
phone:
type: string
description: Телефон в формате +70000000000
x-nullable: false
captchaResponse:
type: string
description: Ответ системы защиты от автоматического доступа (Captcha)
x-nullable: false
additionalProperties: false
description: Запрос на отправку СМС
SmsSendResult:
required:
- nextAttemptSecondsTtl
type: object
properties:
nextAttemptSecondsTtl:
type: number
description: Время в секундах до следующего запроса
format: int64
additionalProperties: false
description: Результат отправки СМС
CheckSmsRequest:
required:
- phone
- code
type: object
properties:
phone:
type: string
description: Телефон в формате +70000000000
x-nullable: false
code:
type: string
description: код из СМС
x-nullable: false
additionalProperties: false
description: Проверка кода из СМС
GuestRefreshRequest:
required:
- authToken
- refreshToken
- phone
type: object
properties:
authToken:
type: string
description: Токен авторизации, который уже истек
x-nullable: false
refreshToken:
type: string
description: Токен нужный для обновления
x-nullable: false
phone:
type: string
description: Телефон в формате +70000000000
x-nullable: false
additionalProperties: false
description: Обновление токенов гостя
AuthResult:
required:
- token
- refreshToken
- aliveSecondsTtl
type: object
properties:
token:
type: string
description: Токен авторизации, нужно использовать во всех запросах
x-nullable: false
refreshToken:
type: string
description: Токен нужный для обновления
x-nullable: false
aliveSecondsTtl:
type: number
description: Время жизни токена в секундах
format: int64
additionalProperties: false
description: Результат авторизации
ErrorMessage:
required:
- message
type: object
properties:
message:
type: string
description: Текст причины ошибки
x-nullable: false
additionalProperties: false
description: ошибка