Цей документ описує процес отримання токена авторизації (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 - містить розділений пробілом перелік прав доступу які матиме 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_typepatientнезмінне значення
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_tokenstringtoken доступу
expires_innumberТривалість життя токену в секундах
token_typestringBearer
scopestringСписок scopes


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



Використання Token


Для доступу до захищених ресурсів API включайте токен у заголовок запиту таким чином:


Authorization: Bearer access_token_value