Тема
Отримання Token для доступу до API
Отримання 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_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