API for Intake functionalities uses an authentication mechanism similar to OAuth2. Each of your requests to the API must include a bearer token in the "Authorization" header. Currently, the API only supports the "client credential" grant type.
Use the code below to obtain an access token that lets the client authenticate itself:
curl -X 'POST' \
'https://<INSTANCE_URL>/api/v2/ouath2/token' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Basic <CREDENTIALS>' \
-d '{
"grant_type": "client_credentials",
"scope": "<INSTANCE_URL>/survey.create <INSTANCE_URL>/evidence_assessment.read"
}'
In the response you will obtain an access token, expiration time, and token type.
Example:
{
"access_token":"eyJhbGciOiJSUzI1NiIsImtpZCI6IjEiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2NvZ25pdG8taWRwLmV1LWNlbnRyYWwtMS5hbWF6b25hd3MuY29tL2V1LWNlbnRyYWwtMV9VOG5pN09KWGciLCJleHAiOjE2Njc4MzQ4ODAsInVpZCI6IjV1aWs4MDlpcGl2cm5mMWo0NTNhNzE1djgwIiwiYXVkIjoicGxhdGZvcm0tZXUtY2VudHJhbC0xX1U4bmk3T0pYZyIsInNjb3BlIjoiaHR0cHM6Ly9wYXRpZW50LWludGFrZS1kZW1vLnRlc3QuaW5mZXJtZWRpY2EuY29tL3N1cnZleS5yZWFkIGh0dHBzOi8vcGF0aWVudC1pbnRha2UtZGVtby50ZXN0LmluZmVybWVkaWNhLmNvbS9xdWVzdGlvbi51cGRhdGUgaHR0cHM6Ly9wYXRpZW50LWludGFrZS1kZW1vLnRlc3QuaW5mZXJtZWRpY2EuY29tL2V2aWRlbmNlX2Fzc2Vzc21lbnQucmVhZCBodHRwczovL3BhdGllbnQtaW50YWtlLWRlbW8udGVzdC5pbmZlcm1lZGljYS5jb20vcXVlc3Rpb24ucmVhZCBodHRwczovL3BhdGllbnQtaW50YWtlLWRlbW8udGVzdC5pbmZlcm1lZGljYS5jb20vc3VydmV5LmNyZWF0ZSBodHRwczovL3BhdGllbnQtaW50YWtlLWRlbW8udGVzdC5pbmZlcm1lZGljYS5jb20vc3VydmV5LmRlbGV0ZSBodHRwczovL3BhdGllbnQtaW50YWtlLWRlbW8udGVzdC5pbmZlcm1lZGljYS5jb20vc3VydmV5LnVwZGF0ZSBodHRwczovL3BhdGllbnQtaW50YWtlLWRlbW8udGVzdC5pbmZlcm1lZGljYS5jb20vYXBwb2ludG1lbnQucmVhZCBodHRwczovL3BhdGllbnQtaW50YWtlLWRlbW8udGVzdC5pbmZlcm1lZGljYS5jb20va25vd2xlZGdlLnJlYWQiLCJ1bmFtZSI6bnVsbH0.bCstv7Ex18X-C4lc9qapVNeYrNg0ssSvClbuyj1yszsXwqPWxPYglOgJcmBOzmRhvBltVrUVTFuZrHWvrfluSw",
"token_type":"Bearer",
"expires_in":3600
}
Grant type. Must be client_credentials
.
Can be a combination of any scopes associated with an app client. Each scope should be separated by a space. If not added, all scopes will be granted. The table below shows possible scopes.
Scope | Description |
<INSTANCE_URL>/survey.create | Used to create new surveys |
<INSTANCE_URL>/evidence_assessment.read | Used to read information about the proposed conditions and the recommended triage given by a completed survey |
<INSTANCE_URL>/question.update | Used to give and change answers to the question |
<INSTANCE_URL>/survey.read | Used to read basic information about the survey |
<INSTANCE_URL>/survey.update | Used to modify basic survey information |
<INSTANCE_URL>/knowledge.read | Used to read the knowledge base |
<INSTANCE_URL>/question.read | Used to read questions |
<INSTANCE_URL>/survey.delete | Used to delete the survey |
<INSTANCE_URL>/summary.read | Used to read patient information taken from the survey |
The authorization header string is Basic Base64Encode(client_id:client_secret)
. Client_id
and client_secret values
can be obtained from Infermedica.
Once you have an access token, you can use it to make a request by sending it in a request header: Authorization: Bearer {access_token}
.
Access to lists of data items support pagination to protect the service against overload.
URL to current page
first (str, required)URL to first page
prev (str, optional)
URL to previous page. If none exists, returns null
URL to next page. If none exists, returns null
URL to last page
items (list, required)Paginated data
Maximum limit of elements per page. Default value is 10
, maximum value is 50
.
Example:
{
"self": "<INSTANCE_URL>/api/v2/surveys?cursor=0",
"first": "<INSTANCE_URL>/api/v2/surveys?cursor=0",
"prev": null,
"next": "<INSTANCE_URL>/api/v2/surveys?cursor=1",
"last": "<INSTANCE_URL>/api/v2/surveys?cursor=1",
"items": [
{
"visit_date": null,
"expired_date": null,
"specialist": null,
"id": "a5398c3a-8df2-4c4f-89ca-8aeca48e0d57",
"status": "completed",
"last_modified_at": "2022-11-20T12:58:09.958763+00:00"
},
{
"visit_date": null,
"expired_date": null,
"specialist": null,
"id": "d2900734-5c46-4219-8128-34577516526c",
"status": "new",
"last_modified_at": "2022-11-20T12:10:14.981489+00:00"
}
]
}
To see content in a specific language, you need to send the language code as a custom HTTP header called X-USER-LANGUAGE
.
Example of a request using Polish:
curl -X 'GET' \
'https://<INSTANCE_URL>/api/v2/surveys/1a815f9c-8fe2-4a31-9728-550b92c4b077/questions/current' \
-H 'X-USER-LANGUAGE: pl'
If the language is unspecified, surveys will be presented based on the ACCEPT-LANGUAGE
header. More information: developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language
Supported languages: Polish (code: pl)
, English (code: en)
.