Цей документ описує процес отримання токена авторизації (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 - містить розділений пробілом перелік прав доступу які матиме access_token. Для кожного ключа апі перелік доступних значень може бути різний.
Замініть client_id, client_secret та scope на надані вам техпідтримкою.
Patient flow
для певних АПІ, таких як:
- 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" }'
Токен для виклику даного апі повинен бути отриманий за процесом описаним в розділі Client credentials flow, і містити scope - gambit:online.
HOST для виконання даного апі - це хост медичного закладу - https://<clinica-web-customer>.medakadem.com.ua/
- При успішному виконанні -пацієнту надійде 4х чифровий OTP код (термін дії якого обмежений)
- Виконати запит на отримання токену - POST https://id.medakadem.com/connect/token
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": "<accesss_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" }
якщо у переліку скоупів є 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 | token доступу |
expires_in | number | Тривалість життя токену в секундах |
token_type | string | Bearer |
scope | string | Список scopes |
Використовуйте значення поля access_token
для авторизації ваших подальших запитів до API.
Використання Token
Для доступу до захищених ресурсів API включайте токен у заголовок запиту таким чином:
Authorization: Bearer access_token_value