Авторизация и аутентификация

Типы данных

Данные сессии

Тип данных AuthInfo

Название Тип Описание
user string публичный идентификатор пользователя
token string токен сессии
created Date Дата создания сессии
ttl int Время жизни сессии в минутах

Запросы

Сохранение токена обмена

Метод: embedded_storage.save_exchange_token

Запрос отправляется от авторизационного сервера. Детали см. в Инструкции по авторизации.

Параметры запроса

Название Тип Описание
exchangeToken string токен обмена
authInfo AuthInfo данные сессии

Параметры ответа

Название Тип Описание
id string идентификатор записи во встроенной бд

Пример запроса

{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "embedded_storage.save_exchange_token",
    "cred": {
        "user": "test_user",
        "token": "aa3c472ab7b97797e347ec345cda371663e021c8"
    },
    "params": {
        "exchangeToken": "exchtoken123",
        "authInfo": {
            "user": "user456",
            "token": "token43ge2820",
            "ttl": 1440
        }
    }
}

Пример ответа

{
    "jsonrpc": "2.0",
    "result": {
        "id": "100500"
    },
    "id": "1"
}

Возможные типы ошибок

Название Значение Когда происходит

Аутентификация

Метод: embedded_storage.authenticate

Запрос отправляется от клиентского приложения после выполнения обмена токенами. Детали см. в Инструкции по авторизации.

Ограничение — только одно выполнение запроса с одним токеном обмена.

Параметры запроса

Название Тип Описание
exchangeToken string токен обмена
patientProperties PatientInputProperties данные клиента для сопоставления
searchStrategy[^1] string стратегия поиска пациента
medCardId string номер мед. карты

[^1]: возможные значения: "PHONE", "MEDCARD" (см. детали здесь)

Параметры ответа

Название Тип Описание
patient Patient данные пользователя
userSign string подпись пользователя
patientAlreadyMatched boolean был ли пользователь уже сопоставлен с пациентом до вызова этого запроса

Пример запроса

{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "embedded_storage.authenticate",
    "params": {
        "searchStrategy": "PHONE",
        "exchangeToken": "exchtoken123",
        "patientProperties": {
            "name": "Alisa",
            "surname": "Johnson",
            "date": "2010-01-01 00:00:00.000",
            "gender": 2,
            "phone": "2222222222"
        }
    }
}

Пример ответа

{
    "jsonrpc": "2.0",
    "result": {
        "patient": {
            "id": "2",
            "active": false,
            "surname": "Johnson",
            "middleName": null,
            "name": "Alisa",
            "phones": [
                "2222222222"
            ],
            "email": "alisa@mail.com",
            "gender": 2,
            "birthdate": "2010-01-01T00:00:00",
            "deceased": false,
            "maritalStatus": 0,
            "photo": "",
            "familyMembers": [],
            "address": "Address",
            "medcardNumber": "321",
            "insurances": null,
            "history": null
        },
        "userSign": "1VLXG3VyJHzxSbbM4GY0rHy2ZqaUKRE3L6iabOufZ5OSROnD9WOEYx52oM77nUBWhvU7l8mJPYCu5fp486ZatcDhGEx8HVIQwZ6jrFTX1SpKY2pg9YngP9LeAty5GtXU22BwdG1VI4sgq8P8wuWqKTta8ZEwgHqho0otyrRkHnyUGITKw9nh06lgIJdv7igjvlkHfHhQuHPPdt9rxJuzq5oSHmjKC36nseaGwfZCEiczoKeAx0axwR8CkASDGCVE9Fur9flhtNP5LJynyXyM58Zn2YsVzSRhDXWUD4l6YtbJmgMQoP40wu6GbngySTTKDrudlPKfzx2rQ00BDAf6g7KrE04AsNAKFhwgDFYR7QMnUgambUb4F7acoBTbv3J9PmjdnslmdleCBlwSl8qyaMI5WOITuTLc8eaC95Hyapujsals0UpbU1t6qNjuaTBO9aOUKdDBixEErd464qCD4mR58uONEqKf3SLQVx7DriFQr8PngYLJisRG50rAvAvm",
        "patientAlreadyMatched": false
    },
    "id": "1"
}

Возможные типы ошибок

Название Значение Когда происходит
AccessForbidden -33403 токен обмена не найден
PatientNotFound -34002 Внутренняя ошибка (ссылочная целостность внутри таблицы соответствия пользователей нарушена)
PatientNotAuthenticated -34001 пользователь на сопоставлен
SaveAuthInfoError -34003 Внутренняя ошибка сохранения данных сессии

Закрыть доступ к ЭМК

Метод: embedded_storage.remove_authentication

Запрос отправляется от клиентского приложения. Детали см. в Инструкции "Выход и отключение ЭМК".

Параметры запроса

Отсутствуют

Параметры ответа

Отсутствуют

Пример запроса

{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "embedded_storage.remove_authentication",
    "cred": {
        "user": "556af17b2507b0c50de4fa2e",
        "token": "17a3b6c735d71b15686f4598cd7d030220755498"
    },
    "params": {}
}

Пример ответа

{
    "jsonrpc": "2.0",
    "result": {},
    "id": "1"
}

Возможные типы ошибок

Название Значение Когда происходит

Сохранение сессии на стороне ЭМК

Метод: embedded_storage.save_auth_info

Запрос отправляется от авторизационного сервера. Детали см. в Инструкции по авторизации.

Параметры запроса

Название Тип Описание
authInfo AuthInfo данные сессии

Параметры ответа

Название Тип Описание
id string идентификатор записи во встроенной бд

Пример запроса

{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "embedded_storage.save_auth_info",
    "cred": {
        "user": "test_user",
        "token": "33b22ccec875594119f1f3c2446d822961b00170"
    },
    "params": {
        "authInfo": {
            "user": "user123",
            "token": "token456",
            "ttl": 1440
        }
    }
}

Пример ответа

{
    "jsonrpc": "2.0",
    "result": {
        "id": "100500"
    },
    "id": "1"
}

Возможные типы ошибок

Название Значение Когда происходит
UserNotFound -34007 пользователь по публичному идентификатору не найден в таблице соответствия
SaveAuthInfoError -34003 Внутренняя ошибка сохранения данных сессии

Удаление сессии на стороне ЭМК

Метод: embedded_storage.remove_auth_info

Запрос отправляется от клиентского приложения. Детали см. в Инструкции "Выход и отключение ЭМК".

Параметры запроса

Отсутствуют

Параметры ответа

Отсутствуют

Пример запроса

{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "embedded_storage.remove_auth_info",
    "cred": {
        "user": "556af17b2507b0c50de4fa2e",
        "token": "17a3b6c735d71b15686f4598cd7d030220755498"
    },
    "params": {}
}

Пример ответа

{
    "jsonrpc": "2.0",
    "result": {},
    "id": "1"
}

Возможные типы ошибок

Название Значение Когда происходит