Получение Token для доступа к API

Этот документ описывает процесс получения токена авторизации (Token), необходимого для доступа к 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_typeclient_credentialsнеизменяемое значение
client_idидентификатор клиентадля получения обратитесь в поддержку
client_secretсекретный параметр клиентадля получения обратитесь в поддержку
scopeперечень необходимых scopeнабор прав доступа

Параметр scope содержит разделённый пробелом перечень прав доступа, которые будет иметь access_token. Для каждого API ключа перечень доступных значений может отличаться.

Замените client_id, client_secret и scope на значения, предоставленные технической поддержкой.

Пример запроса на получение Token через client credentials flow.

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.

HOST для выполнения этого API — это хост медицинского учреждения: https://<clinica-web-customer>.medakadem.com.ua/.

При успешном выполнении пациенту придёт 4-значный OTP-код с ограниченным сроком действия.

Пример инициализации OTP login для пациента.

Далее выполните запрос на получение токена:

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, с которым сможете повторно получить токен для текущего пациента по упрощённому процессу.

Пример запроса patient token и ответа с 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

Пример ответа с access_token.

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

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

Authorization: Bearer access_token_value