OpenAPI Reference
OpenAPI
The OpenAPI Swagger page lists the endpoints for the following Medrio APIs:
- Data Entry API: Use the transactional endpoints to support imports and updates of data in all formats, including changing the grid data in lab forms
- User Management API: Automated Identity Access Management
- Subject Management API: Use this API to create, update, and delete subjects
To access the endpoints for the APIs, go to https://connectapi.medrio.com/swagger/index.html.
 |
Important: Use this reference page along with the OpenAPI Swagger page. Both pages provide information about the various API endpoints. In addition, all code samples on this page are written in Curl. If you need assistance with writing the code in another language, consult your software developer, or your Medrio Account Manager for Technical Consultation hours. If you need assistance with using Postman®, see Learning Postman.
Note that OpenAPI (User Management, Subject Management, and Data Entry) respects the same rules and constraints as Medrio EDC. For example, if the data cannot be entered into a read-only variable/form or into skipped forms via the EDC, then OpenAPI responds with an error message.
|
What are the User Types and Authentication Processes for OpenAPI?
OpenAPI has two user types: Enterprise and Study.
Enterprise User
The Enterprise-level user has access to all the study data and is not limited by any roles and permissions.
 |
Important: As a best practice, we don’t recommend using the Enterprise user account to access the EDC study through the Medrio UI. In addition, this user type lacks functionality, as it cannot use the Data Entry API and Subject Management API, including the Subject Statuses endpoint. Therefore, we recommend using the Study-level user account with the necessary permissions when using OpenAPI.
|
To authenticate as an Enterprise user:
- Contact Technical Support using the Clinical Request Form. Once in the form, select API Change Request, then select customer level API and specify Yes for "Do you need to add an enterprise-level API user?" You will receive a Welcome to Medrio email with a link to create your new user account.
- Make a POST request to the OAuth OpenAPI endpoint to get a token; set the grant_type as ‘openapi’ and enter your API key as the customerAPIkey. Note that the base path of the OpenAPI is: 'https://connectapi.medrio.com.
OpenAPI Auth:
curl --location --request POST 'https://connectapi.medrio.com/Oauth/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'username={USERNAME}' \
--data-urlencode 'password={PASSWORD}' \
--data-urlencode ‘customerApikey={APIKEY}’ \
Response:
{
"access_token": "b3712158cb5db9b4308406a304e8419d",
"expiresUtc": "2021-09-07T17:29:00.9016974Z",
"expires_in": 3600,
"isTFAEnabled": false,
"issuedUtc": "2021-09-07T16:29:00.9016974Z",
"refresh_token": "24ba197c3709fadfbc50bb37012b9c5a",
"token_type": "Bearer",
"userId": "aac7e851-3c0a-4b10-b7a0-7b3a6abec682",
"userName": "{USERNAME}"
}
- Use the access token as the Bearer Token to make authenticated requests as the logged-in user.
 |
Important: In the headers section of subsequent requests {"Authorization" : "Bearer [token] "}
|
Study User
The Study-level user only has access to the study data based on the user’s roles and permissions. You need the API Access permission and PHI permission assigned to your role to use OpenAPI as a Study-level user. Also, additional permissions may be needed depending on what data you want to access or change, including Form Data permissions.
All Forms - Read

All Forms - Write

To authenticate as a Study user:
- Make a POST request to the OAuth OpenAPI endpoint with your Medrio username and password to get a token. Set the grant_type as openapi. Note that the base path of the OpenAPI is: 'https://connectapi.medrio.com/
Open API Auth:
curl --location --request POST 'https://connectapi.medrio.com/Oauth/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode '{USERNAME}' \
--data-urlencode {PASSWORD}' \
--data-urlencode 'grant_type=openapi'
Response:
{
"access_token": "111a8433c738eb572f57898684a3f1cd",
"expires_in": 3600,
"token_type": "Bearer",
"refresh_token": "8490ac90272c6f0e11985ec8f15ef8db",
"userName": '{USERNAME}’,
"userId": "ea060f7c-86e2-4cbb-900b-a34740406491",
"isTFAEnabled": false,
"expiresUtc": "2022-06-03T20:41:33.3147811Z",
"issuedUtc": "2022-06-03T19:41:33.3147811Z"
}
- Use the access token as the Bearer Token to make authenticated requests as the logged-in user.
 |
Important: In the headers section of subsequent requests {"Authorization" : "Bearer [token] "}
|
Single Sign-On Users
Single sign-on users cannot access OpenAPI. However, non-SSO users on a domain can access OpenAPI by entering their username as domain/username in the username field for the authentication. For studies with SSO enabled, a non-SSO user is required to make the API calls.
OpenAPI Endpoints
Configuration
| Method |
URL |
Description |
Study User Permissions |
| GET |
/api/v1/configuration/language |
Get languages |
No permissions needed |
| GET |
/api/v1/configuration/timezone |
Get timezones |
No permissions needed |
Data Entry
 |
Important: You cannot retrieve a subject visit template or write data to Unscheduled Visits. However, the Data Entry API does support Repeating Forms and Visits. Repeating Forms and Visits are targeted using the FormSequenceNumber and VisitSequenceNumber attribute in the payload. |
| Method |
URL |
Description |
Study User Permissions |
Code Samples |
| GET |
/api/v1/study/{studyId}/subject/{subjectId}/visit |
Get subject visit collection for only one subject at a time |
Need at least the Form Data - No Access Show Form permission |
See GET Visit Code Sample
|
POST
|
/api/v1/study/{studyId}/SubjectVisitTemplate |
Get subject visit template
Important: Only for one subject at a time. The request body must contain the following to submit the request:
- Subject ID - unique identifier for subject
- Visit ID - unique identifier for visit (not subject specific)
- Form ID - unique identifier for form (not subject specific)
Use the GET /api/v1/study/{studyId}/subject/{subjectId}/visit endpoint to retrieve the Visit ID and Form ID. The GET /api/v1/study/{studyId}/subject provides the Subject ID number.
|
Needs the Form Data - Read & Write permission for the form that you passed into the request body |
See POST Subject Visit Template Code Sample |
| PUT |
/api/v1/study/{studyId}/clearForm |
Clear form data for collection point
Important: The reasonForDataChange is required when submitting this request.
|
Need the Form Data - Write permission for the forms |
Visit https://connectapi.medrio.com/swagger/index.html |
| POST |
/api/v1/study/{studyId}/dataentry |
Data entry or update record request
|
Need the Form Data - Write permission for the forms |
Visit https://connectapi.medrio.com/swagger/index.html |
GET /api/v1/study/{studyId}/subject/{subjectId}/visit Code Sample
Example:
curl --location --request GET 'https://connectapi.medrio.com/api/v1/study/94f4b004-33af-42a3-9474-a8feb46dd86f/subject/4f8c024a-db86-4cbc-bd28-16b43237806a/visit' \
--header 'Authorization: Bearer 8725e26221b5a6f2f9483c2ed8e72582' \
--header 'Cookie: GCLB=CPOUsKaorMe1mgE'
Response:
{
"response": [
{
"collectionPointId": "32d9d811-ba7c-4871-ac51-32e6f23e56d4",
"dataEntered": true,
"formId": "bc728509-6087-4aad-a665-3918d94da60e",
"formName": "Demographics",
"formSequenceNumber": 0,
"isMonitored": false,
"locked": false,
"siteName": "Site A",
"status": "Complete",
"subjectId": "4f8c024a-db86-4cbc-bd28-16b43237806a",
"subjectName": "0001",
"visitGroupName": null,
"visitId": "78721ea3-f4f0-48da-80e1-b80e9f4df773",
"visitName": "Baseline Visit",
"visitSequenceNumber": null
},
{
"collectionPointId": "711c5c29-a62f-4cbc-ba5b-bf797384aa2b",
"dataEntered": false,
"formId": "c6086de7-9ced-485c-8eec-56430e766aee",
"formName": "CDASH - Concomitant Medications",
"formSequenceNumber": 0,
"isMonitored": false,
"locked": false,
"siteName": "Site A",
"status": "NotExpected",
"subjectId": "4f8c024a-db86-4cbc-bd28-16b43237806a",
"subjectName": "0001",
"visitGroupName": null,
"visitId": "78721ea3-f4f0-48da-80e1-b80e9f4df773",
"visitName": "Baseline Visit",
"visitSequenceNumber": null
},
{
"collectionPointId": null,
"dataEntered": false,
"formId": "509aa9c6-5aee-4242-aa0c-71f2cd216c1f",
"formName": "First Pregnancy Screening Form",
"formSequenceNumber": null,
"isMonitored": false,
"locked": false,
"siteName": "Site A",
"status": "NotComplete",
"subjectId": "4f8c024a-db86-4cbc-bd28-16b43237806a",
"subjectName": "0001",
"visitGroupName": null,
"visitId": "78721ea3-f4f0-48da-80e1-b80e9f4df773",
"visitName": "Baseline Visit",
"visitSequenceNumber": null
},
{
"collectionPointId": null,
"dataEntered": false,
"formId": "278bdf89-c48d-4b81-be66-58f5344f52fa",
"formName": "Physical Examination",
"formSequenceNumber": null,
"isMonitored": false,
"locked": false,
"siteName": "Site A",
"status": "NotComplete",
"subjectId": "4f8c024a-db86-4cbc-bd28-16b43237806a",
"subjectName": "0001",
"visitGroupName": null,
"visitId": "78721ea3-f4f0-48da-80e1-b80e9f4df773",
"visitName": "Baseline Visit",
"visitSequenceNumber": null
},
{
"collectionPointId": null,
"dataEntered": false,
"formId": "0d2f146e-7a8c-4d26-9b3e-ad9a12e2ebf1",
"formName": "Randomization",
"formSequenceNumber": null,
"isMonitored": false,
"locked": false,
"siteName": "Site A",
"status": "NotComplete",
"subjectId": "4f8c024a-db86-4cbc-bd28-16b43237806a",
"subjectName": "0001",
"visitGroupName": null,
"visitId": "78721ea3-f4f0-48da-80e1-b80e9f4df773",
"visitName": "Baseline Visit",
"visitSequenceNumber": null
},
{
"collectionPointId": "4acdcd37-3e5a-4470-b5f7-745c40e934a2",
"dataEntered": false,
"formId": "12521329-9400-483d-815e-782ee7169ee3",
"formName": "CDASH - Vital Signs-1",
"formSequenceNumber": 1,
"isMonitored": false,
"locked": false,
"siteName": "Site A",
"status": "NotExpected",
"subjectId": "4f8c024a-db86-4cbc-bd28-16b43237806a",
"subjectName": "0001",
"visitGroupName": null,
"visitId": "1c17520c-39e3-46bf-ac94-bac8638daf4b",
"visitName": "Visit 1-1",
"visitSequenceNumber": 1
},
{
"collectionPointId": "38d05a5e-68cf-4418-a3ce-29dd67f9ae45",
"dataEntered": false,
"formId": "509aa9c6-5aee-4242-aa0c-71f2cd216c1f",
"formName": "First Pregnancy Screening Form",
"formSequenceNumber": 0,
"isMonitored": false,
"locked": false,
"siteName": "Site A",
"status": "NotExpected",
"subjectId": "4f8c024a-db86-4cbc-bd28-16b43237806a",
"subjectName": "0001",
"visitGroupName": null,
"visitId": "230fd746-3274-48bb-8874-e070a74623f4",
"visitName": "Office Visit",
"visitSequenceNumber": null
},
{
"collectionPointId": "692196ba-16b7-4107-a081-8d02c7e11839",
"dataEntered": false,
"formId": "12521329-9400-483d-815e-782ee7169ee3",
"formName": "CDASH - Vital Signs",
"formSequenceNumber": 0,
"isMonitored": false,
"locked": false,
"siteName": "Site A",
"status": "NotExpected",
"subjectId": "4f8c024a-db86-4cbc-bd28-16b43237806a",
"subjectName": "0001",
"visitGroupName": null,
"visitId": "230fd746-3274-48bb-8874-e070a74623f4",
"visitName": "Office Visit",
"visitSequenceNumber": null
},
{
"collectionPointId": "a6ac343d-85e6-4df0-9008-2580fe2f21ef",
"dataEntered": false,
"formId": "bc728509-6087-4aad-a665-3918d94da60e",
"formName": "Demographics",
"formSequenceNumber": 0,
"isMonitored": false,
"locked": false,
"siteName": "Site A",
"status": "NotExpected",
"subjectId": "4f8c024a-db86-4cbc-bd28-16b43237806a",
"subjectName": "0001",
"visitGroupName": null,
"visitId": "230fd746-3274-48bb-8874-e070a74623f4",
"visitName": "Office Visit",
"visitSequenceNumber": null
},
{
"collectionPointId": "3f4a69ed-728c-403e-bd7c-a8c1776aa02b",
"dataEntered": false,
"formId": "cd48b3b2-0b42-4686-9952-93ad02a25ef7",
"formName": "Demographics-1",
"formSequenceNumber": 0,
"isMonitored": false,
"locked": false,
"siteName": "Site A",
"status": "NotExpected",
"subjectId": "4f8c024a-db86-4cbc-bd28-16b43237806a",
"subjectName": "0001",
"visitGroupName": null,
"visitId": "bc04854e-1bcc-41ef-a603-c0b85848207c",
"visitName": "Follow-up",
"visitSequenceNumber": null
}
],
"processedSuccessfully": true,
"processMessage": "success"
}
POST /api/v1/study/{studyId}/SubjectVisitTemplate Code Sample
Example:
curl --location --request POST 'https://connectapi.medrio.com/api/v1/study/94f4b004-33af-42a3-9474-a8feb46dd86f/SubjectVisitTemplate' \
--header 'Authorization: Bearer 8725e26221b5a6f2f9483c2ed8e72582' \
--header 'Content-Type: application/json' \
--header 'Cookie: GCLB=CMTj0a2Jmt6GCA' \
--data-raw '{
"subjectId": "4f8c024a-db86-4cbc-bd28-16b43237806a",
"visitId": "78721ea3-f4f0-48da-80e1-b80e9f4df773",
"formId": "bc728509-6087-4aad-a665-3918d94da60e",
"visitSequenceNumber": 0,
"formSequenceNumber": 0
}'
Response:
{
"response": {
"collectionPointDataLastUpdated": null,
"configLastUpdatedTimestamp": "2022-06-17T14:30:00.563+00:00",
"datums": [
{
"externalId": "ENROLLMENT_DATE",
"formObjectId": "ed6863a3-0555-4886-8643-b4e3436af455",
"isCalculated": false,
"isLocked": false,
"isReadOnly": false,
"isRequired": true,
"options": [],
"order": 1,
"value": null,
"variableId": "92d4ffb4-231c-4132-bd4d-d431f145dd50",
"variableName": "Enrollment Date",
"variableType": "Date"
},
{
"externalId": "AGE_1",
"formObjectId": "9cc3ee46-0b00-44ed-8923-2ae19f6fda96",
"isCalculated": false,
"isLocked": false,
"isReadOnly": false,
"isRequired": false,
"options": [],
"order": 2,
"value": null,
"variableId": "9c6e68cd-ddbf-4980-b50b-ad6b2d3a956d",
"variableName": "Age",
"variableType": "Decimal"
},
{
"externalId": "FIRST_NAME",
"formObjectId": "5f6c53c3-1980-43aa-85f1-f483f42896b4",
"isCalculated": false,
"isLocked": false,
"isReadOnly": false,
"isRequired": false,
"options": [],
"order": 3,
"value": null,
"variableId": "86f71075-a487-427b-b123-91da67efe8f2",
"variableName": "First Name",
"variableType": "String"
},
{
"externalId": "LAST_NAME",
"formObjectId": "97171e60-89ca-49a9-af2b-c73136e330d4",
"isCalculated": false,
"isLocked": false,
"isReadOnly": false,
"isRequired": false,
"options": [],
"order": 4,
"value": null,
"variableId": "e2053b1e-c412-40fc-b358-1e9be9094a1c",
"variableName": "Last Name",
"variableType": "String"
},
{
"externalId": "GENDER__DEM_",
"formObjectId": "5d9eb616-00b6-4406-bd57-a3d4166e6296",
"isCalculated": false,
"isLocked": false,
"isReadOnly": false,
"isRequired": false,
"options": [
{
"selected": false,
"value": "F",
"variableValueId": "379c6d87-a11d-4b2f-adfe-3ddabad6a3f7"
},
{
"selected": false,
"value": "M",
"variableValueId": "05f434fd-dcb5-47b4-8a5e-d12e43bbe271"
}
],
"order": 5,
"value": null,
"variableId": "e35d932f-f7cb-45a7-8b9f-f05227846d43",
"variableName": "Gender (Dem)",
"variableType": "Categorical"
},
{
"externalId": "ETHNIC",
"formObjectId": "4a84085f-fc8a-4103-a4ef-b2086f6758b3",
"isCalculated": false,
"isLocked": false,
"isReadOnly": false,
"isRequired": false,
"options": [
{
"selected": false,
"value": "American Indian",
"variableValueId": "15b8c9b5-e585-4726-b846-f79af40eb857"
},
{
"selected": false,
"value": "Asian / Pacific Islander",
"variableValueId": "34ff3618-ebe2-400d-a38e-d8ea06cb8748"
},
{
"selected": false,
"value": "Black / African American",
"variableValueId": "1e5befe2-b5c3-4372-a24a-a0833bef5fba"
},
{
"selected": false,
"value": "Latino / Hispanic",
"variableValueId": "2692b9fc-2b16-412d-8a51-b2e803d62955"
},
{
"selected": false,
"value": "White / Caucasian",
"variableValueId": "533f0a36-6095-454d-9623-43ffbfb56d1c"
},
{
"selected": false,
"value": "Other",
"variableValueId": "ec481678-6c31-4f23-9b9d-c0abffbbaad5"
}
],
"order": 6,
"value": null,
"variableId": "af6da6e4-54ab-4525-9897-cf3d2abba675",
"variableName": "Ethnicity",
"variableType": "Categorical"
},
{
"externalId": "LATINOYN",
"formObjectId": "24db2a0f-95b8-42dc-ae69-230a7f6249d8",
"isCalculated": false,
"isLocked": false,
"isReadOnly": false,
"isRequired": false,
"options": [
{
"selected": false,
"value": "Yes",
"variableValueId": "93e70bee-62cc-4372-88d7-bc2c9a8270be"
},
{
"selected": false,
"value": "No",
"variableValueId": "78830937-be38-407c-8854-b341c32ace0d"
}
],
"order": 7,
"value": null,
"variableId": "9341bd29-54fd-456f-a511-061db7d1c77f",
"variableName": "NIH Standard: Latino",
"variableType": "Boolean"
},
{
"externalId": "RACE",
"formObjectId": "36c6af0f-6e6c-4beb-a01e-ed1cc6f12d79",
"isCalculated": false,
"isLocked": false,
"isReadOnly": false,
"isRequired": false,
"options": [
{
"selected": false,
"value": "American Indian or Alaska Native",
"variableValueId": "8b5fd434-b7f3-4710-b238-484f7edccd38"
},
{
"selected": false,
"value": "Asian",
"variableValueId": "948bca27-e1c0-494c-b220-86d228c2f60b"
},
{
"selected": false,
"value": "Black or African American",
"variableValueId": "58908904-1201-4854-b3b9-a532404575b0"
},
{
"selected": false,
"value": "Native Hawaiian or Other Pacific Islander",
"variableValueId": "ee88a355-1e3e-4b37-89b6-d816eaaee38b"
},
{
"selected": false,
"value": "White",
"variableValueId": "086973ea-044f-4280-a4e6-46fd941b6dc3"
},
{
"selected": false,
"value": "Other",
"variableValueId": "c4fce23f-11ed-4ecd-920d-74e28bdae2bf"
}
],
"order": 8,
"value": null,
"variableId": "09a42bea-8f4d-4c69-9884-4d7a3129237f",
"variableName": "NIH Standard: Race",
"variableType": "MultiCategorical"
},
{
"externalId": "SMOKER",
"formObjectId": "0cf46ccd-03db-429b-874f-c9600430696f",
"isCalculated": false,
"isLocked": false,
"isReadOnly": false,
"isRequired": false,
"options": [
{
"selected": false,
"value": "Yes",
"variableValueId": "db752007-807b-4f1c-8d4b-ceeffeaf39d3"
},
{
"selected": false,
"value": "No",
"variableValueId": "55ce64cb-0aa2-4823-a021-55a21836b6e1"
}
],
"order": 9,
"value": null,
"variableId": "6fd99b1b-1cbf-491d-b3c3-d06e6b38ba7d",
"variableName": "Smoker",
"variableType": "Categorical"
},
{
"externalId": "PREGNANT",
"formObjectId": "cf0303d5-2a3c-4abd-8cc3-fa2721904b3c",
"isCalculated": false,
"isLocked": false,
"isReadOnly": false,
"isRequired": false,
"options": [
{
"selected": false,
"value": "Yes",
"variableValueId": "dbbfeede-8f7a-40ef-b6b6-95c6c4495a33"
},
{
"selected": false,
"value": "No",
"variableValueId": "cb7ca3fc-d5ae-4a3b-b991-b501193aa980"
}
],
"order": 10,
"value": null,
"variableId": "6288ff03-1f91-4cc7-bc3b-ae77581f5fb2",
"variableName": "Pregnant",
"variableType": "Categorical"
},
{
"externalId": "BMI",
"formObjectId": "0b37b18b-0ba9-4ee3-b4dc-77dc8f9575c0",
"isCalculated": true,
"isLocked": false,
"isReadOnly": true,
"isRequired": false,
"options": [],
"order": 11,
"value": null,
"variableId": "e81a7513-bf1e-435c-b007-1a69eba21398",
"variableName": "BMI",
"variableType": "Decimal"
}
],
"formId": "bc728509-6087-4aad-a665-3918d94da60e",
"formName": "Demographics",
"formSequenceNumber": null,
"grids": [],
"reasonForChange": null,
"subjectId": "4f8c024a-db86-4cbc-bd28-16b43237806a",
"subjectIdentifier": "0001",
"visitId": "78721ea3-f4f0-48da-80e1-b80e9f4df773",
"visitName": "Baseline Visit",
"visitSequenceNumber": 0
},
"processedSuccessfully": true,
"processMessage": "success"
}
Groups
|
Method
|
URL
|
Description
|
Study User Permissions
|
|
GET
|
/api/v1/study/{studyId}/group
|
Get study groups
|
N/A
|
Memberships
|
Method
|
URL
|
Description
|
Study User Permissions
|
|
POST
|
/api/v1/study/{studyId}/user
|
Add a user to a study
|
Manage Users permission
|
|
GET
|
/api/v1/study/{studyId}/user
|
Get study users with membership information
Membership information includes:
- First Name
- Last Name
- Email
- SSO?
- Roles
- Sites
- User ID
- User Name
|
Manage Users permission
|
|
PUT
|
/api/v1/study/{studyId}/user/{userId}/role
|
Assign roles to users
|
Manage Users permission
|
|
PUT
|
/api/v1/study/{studyId}/user/{userId}/site
|
Assign sites to users
Important: If all site access is enabled for a user, the user is granted access to all sites and any future created sites. If all site access is not enabled, all existing sites are still assigned to the user, but the option for any future sites has been canceled. It is not possible to assign one site to a user and enable or disable all site access.
|
Manage Users permission
|
|
DELETE
|
/api/v1/study/{studyId}/user/{userId}/role/{roleId}
|
Remove user’s role
|
Manage Users permission
|
|
DELETE
|
/api/v1/study/{studyId}/user/{userId}/site/{siteId}
|
Remove user from site
|
Manage Users permission
|
|
DELETE
|
/api/v1/study/{studyId}/user/{userId}
|
Remove user from study
|
Manage Users permission
|
Bulk Upload
 |
Important: Only the Study-level user can access the Bulk Upload API endpoints. A file cannot be uploaded until the mapping is created in Medrio. For more information, see Bulk Upload. The API does not accept maps with ‘provide values at upload’ (e.g., hasFixedValues: true ). With the Bulk Upload API, users can upload multiple files, but only one file at a time will process per study. Medrio does not guarantee that files are processed in the order they were received. You need to manage if a specific order of upload is needed, and jobs submitted using the API blocks users from using the Medrio UI to upload additional jobs until all pending submissions are complete.
The base URL for Bulk Upload is based on the study's region:
- NA: https://jobs-api.medrio.com
- EU: https://eu-jobs-api.medrio.com
- APAC: https://apac-jobs-api.medrio.com
|
|
Method
|
URL
|
Description
|
Study User Permissions
|
Code Samples
|
|
POST
|
/api/v1/study/{studyId}/job/bulkupload/uploadFile
|
Upload the file for Bulk Upload
Important: Two enums are related to the POST uploadFile request and must be included in the request body:
OverwriteBehavior
- DontOverwrite = 1
- Overwrite = 2
ProgressUpdateOptions
- WhenCompleted=1,
- Every15Minutes=2,
- Every30Minutes=3,
- Every60Minutes=4
|
Upload Data - Access to the form(s) the data will be uploaded to
|
Visit https://jobs-api.medrio.com/swagger/index.html
|
|
GET
|
/api/v1/study/{studyId}/job/bulkupload/uploadFile
|
Get bulk upload file job details
|
Upload Data
|
Visit https://jobs-api.medrio.com/swagger/index.html
|
|
GET
|
/api/v1/study/{studyId}/job/bulkupload/map
|
Get bulk upload mappings associated with study
|
Upload Data
|
|
Job
|
|
|
|
|
|
GET
|
/api/v1/study/{studyId}/job
|
Get information for jobs associated with study
|
N/A
|
Visit https://jobs-api.medrio.com/swagger/index.html
|
OAuth
|
|
|
|
|
|
POST
|
/Oauth/token
|
Get an access token for the Bulk Upload API
|
N/A
|
Visit https://jobs-api.medrio.com/swagger/index.html
|
OAuth
|
Method
|
URL
|
Description
|
Study User Permissions
|
|
POST
|
/Oauth/token
|
Use endpoint to get an access token
|
Access API permission and PHI permission
|
Roles
|
Method
|
URL
|
Description
|
Study User Permissions
|
|
GET
|
/api/v1/study/{studyId}/role
|
Get study roles
|
Manage Users permission
|
Sites
|
Method
|
URL
|
Description
|
Study User Permissions
|
|
GET
|
/api/v1/study/{studyId}/site
|
Get study sites
|
Access to the sites
|
Studies
|
Method
|
URL
|
Description
|
Study User Permissions
|
Code Samples
|
|
GET
|
/api/v1/study
|
Get studies
Important: Use this endpoint to get the study ID number.
|
Needs access to the study
|
See GET Study Code Sample
|
|
GET
|
/api/v1/study/{studyID}/domain
|
Get domain name linked to a study and if SSO is enabled
|
Needs access to the study
|
Visit https://connectapi.medrio.com/swagger/index.html
|
|
GET
|
/api/v1/study/feature/{feature}
|
Filter studies based on the enabled features. You can filter for the following features:
- ExpandedDDCAuditTrail
- CarryoverVariableEnhancement
- EProRemoteSchedulerEnhancements
- EProInClinic
- ByoReportingAdvanced
- DataViewsApi
- Labs
- RespectEProVasVerticalLabelPosition
- NotificationsTextSms
- RandomizationTrialSupplyManagement
- Consent
- SiteManagement
- Ctms
- ContentManagement
- IncreaseRepeatedFormsLimit
- Emvr
|
Access to the studies
|
Visit https://connectapi.medrio.com/swagger/index.html
|
|
GET
|
/api/v1/study/{studyId}/reasonForDataChange
|
Get a list of reasons for data change. Required for data entry/update
|
Need access to the studies
|
Visit https://connectapi.medrio.com/swagger/index.html
|
GET /api/v1/study Code Sample
Example:
curl --location --request GET 'https://connectapi.medrio.com/api/v1/study' \
--header 'Authorization: Bearer 5f472f3f863466da71a4adae71ede801' \
--header 'Cookie: GCLB=COPbyaS4_bSswQE'
Response:
{
"response": [
{
"features": {},
"instanceId": 17,
"isApiAccessAllowed": true,
"isEPro": true,
"region": "NA",
"studyId": "eebdb2a6-2f0e-4c37-80c8-95a8c74a3d0f",
"title": "2020 Example Study - DEV"
},
{
"features": {
"d2747f06-da6f-478c-a865-13400fb7c623": "ExpandedDDCAuditTrail",
"ca58b688-b2b3-4628-b2e0-1bb8b0cbc150": "CarryoverVariableEnhancement",
"cee7d5f8-b0f0-4863-92f8-29834ada5242": "EProRemoteSchedulerEnhancements",
"5a2b9ff5-c86f-48a8-9683-2ff556981cf2": "EProInClinic",
"97b3955b-cd8d-4647-bd20-6ebbf882f236": "ByoReportingAdvanced",
"ba0a892a-1573-430c-bb97-c85458041582": "DataViewsApi",
"29d7707d-6a91-4f84-8143-ec3df268898c": "Labs",
"576cef76-287f-4c42-a091-f9f91e72469b": "RespectEProVasVerticalLabelPosition"
},
"instanceId": 12,
"isApiAccessAllowed": true,
"isEPro": true,
"region": "NA",
"studyId": "94f4b004-33af-42a3-9474-a8feb46dd86f",
"title": "2021: Example Training Study - DEV"
},
{
"features": {
"d2747f06-da6f-478c-a865-13400fb7c623": "ExpandedDDCAuditTrail",
"ca58b688-b2b3-4628-b2e0-1bb8b0cbc150": "CarryoverVariableEnhancement",
"cee7d5f8-b0f0-4863-92f8-29834ada5242": "EProRemoteSchedulerEnhancements",
"5a2b9ff5-c86f-48a8-9683-2ff556981cf2": "EProInClinic",
"97b3955b-cd8d-4647-bd20-6ebbf882f236": "ByoReportingAdvanced",
"ba0a892a-1573-430c-bb97-c85458041582": "DataViewsApi",
"29d7707d-6a91-4f84-8143-ec3df268898c": "Labs",
"576cef76-287f-4c42-a091-f9f91e72469b": "RespectEProVasVerticalLabelPosition"
},
"instanceId": 12,
"isApiAccessAllowed": true,
"isEPro": true,
"region": "NA",
"studyId": "95be701f-9f7d-47d3-91f8-9a959a168e40",
"title": "2021: Example Training Study - LIVE"
},
{
"features": {
"d2747f06-da6f-478c-a865-13400fb7c623": "ExpandedDDCAuditTrail",
"ca58b688-b2b3-4628-b2e0-1bb8b0cbc150": "CarryoverVariableEnhancement",
"31650381-5a8f-42af-ab18-1eacc0faeb02": "RandomizationTrialSupplyManagement",
"fa874e92-ca0d-4836-acd3-2108f72b80aa": "IncreaseRepeatedFormsLimit",
"cee7d5f8-b0f0-4863-92f8-29834ada5242": "EProRemoteSchedulerEnhancements",
"89cae73b-b1cf-49ee-b8d4-5ff3b4bbb514": "ContentManagement",
"97b3955b-cd8d-4647-bd20-6ebbf882f236": "ByoReportingAdvanced",
"650aa5b6-49b0-4281-b934-9d0fa5ae4663": "RespectEProVasWidth",
"afd9f5da-bca6-4577-a02d-a417d2d28249": "Consent",
"81959374-a8bd-49b7-8fbe-aaaa1c3e5a4f": "Emvr",
"5bf307cc-45d8-41bd-a3dd-ab9598a571e4": "TargetedMonitoring",
"8769c17b-651c-43e3-be26-ad501aaa2163": "NewDataEntry",
"ba0a892a-1573-430c-bb97-c85458041582": "DataViewsApi",
"4538183d-6619-4ddf-9025-d1c70ffbc501": "SiteManagement",
"83927832-d6bc-4cdb-8135-e06238ad4326": "Ctms",
"29d7707d-6a91-4f84-8143-ec3df268898c": "Labs",
"e64074dc-fb56-4368-b06c-f235142ec307": "LegacyEditSubjectProgress",
"576cef76-287f-4c42-a091-f9f91e72469b": "RespectEProVasVerticalLabelPosition",
"7ced438a-4799-4e17-ad4b-fd492982d4aa": "NotificationsTextSms"
},
"instanceId": 12,
"isApiAccessAllowed": true,
"isEPro": true,
"region": "NA",
"studyId": "be1ff688-d38c-4a27-9154-4680b18ceaf8",
"title": "Rebecca Sandbox Study%$$$ - DEV"
}
],
"processedSuccessfully": true,
"processMessage": "success"
}
Subjects
GET /api/v1/study/{studyId}/subject Code Sample
Example:
curl --location --request GET 'https://connectapi.medrio.com/api/v1/study/94f4b004-33af-42a3-9474-a8feb46dd86f/subject' \
--header 'Authorization: Bearer 0709848b041f7200dc87f7b6274a5dcf' \
--header 'Cookie: GCLB=CLD8-PXGxqOnOw'
Response:
{
"response": [
{
"subjectId": "4f8c024a-db86-4cbc-bd28-16b43237806a",
"subjectIdentifier": "0001",
"subjectStatus": {
"subjectStatusId": "4befe54e-71ab-4522-927f-4089b5d2c780",
"name": "Excluded After Enrollment",
"enrolled": false,
"excluded": true,
"priority": 2
},
"group": {
"groupId": "3e423d98-928a-4482-a61a-8627fbf02b23",
"externalId": "Group_A",
"name": "Group A",
"enrollmentGoal": null,
"enrollmentLimit": null,
"disabled": false
},
"site": {
"siteId": "8be63732-d254-45d3-b73c-3daf5cd53112",
"externalId": "Site_A",
"name": "Site A",
"enrollmentGoal": 100,
"enrollmentLimit": 120
},
"email": null,
"language": "en-US",
"timeZone": "Pacific Standard Time",
"isRemote": true,
"reasonForDeletion": null
},
{
"subjectId": "11d192f5-ebae-40a8-8ef1-383c4b807600",
"subjectIdentifier": "0002",
"subjectStatus": {
"subjectStatusId": "77f77c4a-f775-4451-b9ba-9cbc7882c08a",
"name": "Enrolled",
"enrolled": true,
"excluded": false,
"priority": 1
},
"group": {
"groupId": "3e423d98-928a-4482-a61a-8627fbf02b23",
"externalId": "Group_A",
"name": "Group A",
"enrollmentGoal": null,
"enrollmentLimit": null,
"disabled": false
},
"site": {
"siteId": "8be63732-d254-45d3-b73c-3daf5cd53112",
"externalId": "Site_A",
"name": "Site A",
"enrollmentGoal": 100,
"enrollmentLimit": 120
},
"email": null,
"language": "en-US",
"timeZone": "Pacific Standard Time",
"isRemote": true,
"reasonForDeletion": null
},
{
"subjectId": "b2e15b3c-d15a-4b66-ae0f-0c8922bb569f",
"subjectIdentifier": "0003",
"subjectStatus": {
"subjectStatusId": "77f77c4a-f775-4451-b9ba-9cbc7882c08a",
"name": "Enrolled",
"enrolled": true,
"excluded": false,
"priority": 1
},
"group": {
"groupId": "3e423d98-928a-4482-a61a-8627fbf02b23",
"externalId": "Group_A",
"name": "Group A",
"enrollmentGoal": null,
"enrollmentLimit": null,
"disabled": false
},
"site": {
"siteId": "8be63732-d254-45d3-b73c-3daf5cd53112",
"externalId": "Site_A",
"name": "Site A",
"enrollmentGoal": 100,
"enrollmentLimit": 120
},
"email": null,
"language": "en-US",
"timeZone": "Pacific Standard Time",
"isRemote": true,
"reasonForDeletion": null
},
{
"subjectId": "20b7af32-ee10-4596-9413-b8465547d99e",
"subjectIdentifier": "0004",
"subjectStatus": {
"subjectStatusId": "77f77c4a-f775-4451-b9ba-9cbc7882c08a",
"name": "Enrolled",
"enrolled": true,
"excluded": false,
"priority": 1
},
"group": {
"groupId": "3e423d98-928a-4482-a61a-8627fbf02b23",
"externalId": "Group_A",
"name": "Group A",
"enrollmentGoal": null,
"enrollmentLimit": null,
"disabled": false
},
"site": {
"siteId": "8be63732-d254-45d3-b73c-3daf5cd53112",
"externalId": "Site_A",
"name": "Site A",
"enrollmentGoal": 100,
"enrollmentLimit": 120
},
"email": null,
"language": "en-US",
"timeZone": "Pacific Standard Time",
"isRemote": true,
"reasonForDeletion": null
},
{
"subjectId": "6ebdcad2-1b5f-42e4-a3d8-018f7baf27ac",
"subjectIdentifier": "0005",
"subjectStatus": {
"subjectStatusId": "77f77c4a-f775-4451-b9ba-9cbc7882c08a",
"name": "Enrolled",
"enrolled": true,
"excluded": false,
"priority": 1
},
"group": {
"groupId": "3e423d98-928a-4482-a61a-8627fbf02b23",
"externalId": "Group_A",
"name": "Group A",
"enrollmentGoal": null,
"enrollmentLimit": null,
"disabled": false
},
"site": {
"siteId": "8be63732-d254-45d3-b73c-3daf5cd53112",
"externalId": "Site_A",
"name": "Site A",
"enrollmentGoal": 100,
"enrollmentLimit": 120
},
"email": null,
"language": "en-US",
"timeZone": "Pacific Standard Time",
"isRemote": true,
"reasonForDeletion": null
},
{
"subjectId": "316d498a-b46d-43a9-8d88-25899fb75562",
"subjectIdentifier": "0006",
"subjectStatus": {
"subjectStatusId": "77f77c4a-f775-4451-b9ba-9cbc7882c08a",
"name": "Enrolled",
"enrolled": true,
"excluded": false,
"priority": 1
},
"group": {
"groupId": "3e423d98-928a-4482-a61a-8627fbf02b23",
"externalId": "Group_A",
"name": "Group A",
"enrollmentGoal": null,
"enrollmentLimit": null,
"disabled": false
},
"site": {
"siteId": "8be63732-d254-45d3-b73c-3daf5cd53112",
"externalId": "Site_A",
"name": "Site A",
"enrollmentGoal": 100,
"enrollmentLimit": 120
},
"email": null,
"language": "en-US",
"timeZone": "Pacific Standard Time",
"isRemote": false,
"reasonForDeletion": null
}
],
"processedSuccessfully": true,
"processMessage": "success"
}
SubjectStatuses
|
Method
|
URL
|
Description
|
Study User Permissions
|
|
GET
|
/api/v1/study/{studyId}/subjectStatus
|
Get study groups
|
Needs access to the studies and subjects
|
Users
|
Method
|
URL
|
Description
|
Study User Permissions
|
|
GET
|
/api/v1/user
|
Get all Medrio users for a customer, no matter the study affiliation or study status
Important: Only for Enterprise-level users.
|
|
|
PUT
|
/api/v1/user
|
Update user account
Important: Only for Enterprise-level users.
|
N/A
|
|
PUT
|
/api/v1/user/changePassword
|
Change Enterprise user password
Important: Only for Enterprise-level users.
|
N/A
|
OpenAPI Status Errors
400 Error
{
"message": "Unable to authenticate user with supplied credentials.",
"traceId": "0HMHB745825QT:00000002"
}
Solution: This error occurs if you don’t have the correct credentials. To solve this error, make sure you’re using the correct login credentials.
401 Error
{
"StatusCode": 401,
"TraceId": "0HMHB745825T3:00000002",
"Message": "User is not authenticated."
}
Solution: This error occurs if you aren’t authenticated. To solve this error, check that your token is correct or not expired. If the token expires, get a new one. OpenAPI tokens expire within an hour.
403 Error
Solution: User does not have permission to access the form. To solve this error, check that you have the proper permissions in the EDC study.
409 Error
Solution: This is a timeout issue. To solve this issue, note that Medrio can handle a maximum of four parallel requests, and within the four requests, there needs to be a delay of 200ms between calls.
415 Error
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.13",
"title": "Unsupported Media Type",
"status": 415,
"traceId": "00-279284b83aecc741976e556a6012c517-772fba5fee768241-00"
}
Solution: This error occurs if the request body is not sent over in JSON. To solve this error, change the request body to JSON.