Получение 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_typepatientнеизменяемое значение
client_idидентификатор клиентадля получения обратитесь в поддержку
client_secretсекрет клиентадля получения обратитесь в поддержку
scopegambit: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_tokenstringтокен доступа
expires_innumberвремя жизни токена в секундах
token_typestringBearer
scopestringсписок scopes

Использование Token

Используйте значение поля access_token для авторизации последующих запросов к API.

Authorization: Bearer access_token_value