Получение Token для доступа к API
Этот документ описывает процесс получения токена авторизации (Token), необходимого для доступа к API платформы.
В статье описаны два сценария: Client credentials flow и Patient flow. Выбор сценария зависит от того, к какому API нужен доступ.
Содержание
Шаг 1. Авторизация
Client credentials flow
Выполните POST-запрос по адресу https://id.medakadem.com/connect/token.
Независимо от медицинского учреждения, с которым выполняется интеграция, точка доступа для получения токена одна и та же: https://id.medakadem.com/connect/token.
POST /connect/token HTTP/1.1 Host: id.medakadem.com Content-Type: application/x-www-form-urlencoded client_id=<client_id_value>&client_secret=<client_secret_here>&grant_type=client_credentials&scope=gambit%3Astatic_data
| Параметр | Значение | Описание |
|---|---|---|
| grant_type | client_credentials | неизменяемое значение |
| client_id | идентификатор клиента | для получения обратитесь в поддержку |
| client_secret | секрет клиента | для получения обратитесь в поддержку |
| scope | перечень необходимых scope | набор прав доступа |
Параметр scope содержит разделённый пробелом перечень прав доступа, которые будет иметь access_token. Для разных API перечень допустимых значений может отличаться.
Замените client_id, client_secret и scope на значения, предоставленные технической поддержкой.
Patient flow
Для некоторых API, например:
GET api/online/v1/patient/prerecords
GET api/online/v1/patient/prerecords/{patientId:int}
GET api/online/v1/patient/prerecords/countPlanned
GET api/online/v1/patient/prerecords/by/id/{id}
DELETE api/online/v1/patient/prerecords/{prerecordId}
POST api/online/v1/patient/prerecords
api/online/v1/patient/identity/*
GET api/online/v1/patient/history
GET api/online/v1/patient/history/analysisFiles/{analysisId:int}
GET api/online/v1/patient/history/print/analysis/{analysisId:int}
GET api/online/v1/patient/history/print/protocol/{protocolId:int}
GET api/online/v1/patient/protocols/{id}/information
GET api/online/v1/patient/analysis/{id}/information
api/online/v1/patientFamily/*
нужно использовать токен другого типа, который выдаётся индивидуально для каждого пациента с использованием OTP-кода авторизации.
Для этого сначала выполните запрос к ресурсу POST api/online/v2/patient/identity/initialize-otp-login:
curl --location 'https://<clinica-web-customer>.medakadem.com.ua/api/online/v2/patient/identity/initialize-otp-login' \
--header 'Authorization: Bearer <token_here>' \
--header 'Content-Type: application/json' \
--data '{
"Phone": "0000000000"
}'
Токен для вызова этого API должен быть получен по процессу, описанному в разделе Client credentials flow, и содержать scope gambit:online.
Хост для выполнения этого API — это хост медицинского учреждения: https://<clinica-web-customer>.medakadem.com.ua/.
При успешном выполнении пациент получит 4-значный OTP-код с ограниченным сроком действия.
Далее выполните запрос на получение токена:
curl --location 'https://id.medakadem.com/connect/token' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --header 'Authorization: ••••••' \ --data-urlencode 'grant_type=patient' \ --data-urlencode 'client_id=••••••' \ --data-urlencode 'client_secret=••••••' \ --data-urlencode 'scope=gambit:online gambit:static_data patient_profile offline_access gambit:patient:profile' \ --data-urlencode 'client_name=<client_name>' \ --data-urlencode 'phone=0000000000' \ --data-urlencode 'otp=0000'
| Параметр | Значение | Описание |
|---|---|---|
| grant_type | patient | неизменяемое значение |
| client_id | идентификатор клиента | для получения обратитесь в поддержку |
| client_secret | секрет клиента | для получения обратитесь в поддержку |
| scope | gambit:online gambit:static_data patient_profile offline_access gambit:patient:profile | минимально необходимый перечень для работы, при необходимости его можно расширить |
| client_name | название клиента | можно получить в поддержке |
| phone | телефон пациента | без пробелов и разделителей |
| otp | одноразовый код авторизации пациента | отправляется после вызова метода на предыдущем шаге |
При успешном ответе вы получите:
{
"access_token": "<access_token value>",
"expires_in": 3600,
"token_type": "Bearer",
"refresh_token": "<refresh token value>",
"scope": "gambit:online gambit:patient:profile gambit:static_data offline_access patient_profile"
}
Если в перечне scope есть gambit:patient:profile, также обязательно нужно добавить patient_profile.
offline_access — системный scope. Если передать его в запросе, в ответе также будет refresh_token, с помощью которого можно повторно получить токен для текущего пациента по упрощённому процессу.
Шаг 2. Получение ответа
После успешной авторизации сервер возвращает ответ, содержащий токен в поле access_token:
{
"access_token": "access_token_here",
"expires_in": 3600,
"token_type": "Bearer",
"scope": "gambit:static_data"
}
| Параметр | Тип | Описание |
|---|---|---|
| access_token | string | токен доступа |
| expires_in | number | время жизни токена в секундах |
| token_type | string | Bearer |
| scope | string | список scopes |
Использование Token
Используйте значение поля access_token для авторизации последующих запросов к API.
Authorization: Bearer access_token_value