Healthcare Research Platform

Healthcare Research Platform

Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

Base URLs:

Authentication

  • HTTP Authentication, scheme: bearer

Project

Retrieve all project lists.

Code samples

URL obj = new URL("http://localhost:3030/api/projects");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

GET /projects

Example responses

200 Response

[
  {
    "id": {
      "value": 0
    },
    "name": "string",
    "isOpen": true,
    "info": {
      "property1": {},
      "property2": {}
    },
    "createdAt": "2019-08-24T14:15:22Z",
    "deletedAt": "2019-08-24T14:15:22Z"
  }
]

Responses

Status Meaning Description Schema
200 OK

A list of projects is returned. Inline
default Default An unexpected error has occurred. Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
» code integer(int32) true none none
» message string true none none

Create a new project for healthcare research.

Code samples

URL obj = new URL("http://localhost:3030/api/projects");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

POST /projects

Body parameter

{
  "name": "string",
  "isOpen": true,
  "info": {
    "property1": {},
    "property2": {}
  }
}

Parameters

Name In Type Required Description
body body object true Provide project details.

Example responses

default Response

{
  "code": 0,
  "message": "string"
}

Responses

Status Meaning Description Schema
201 Created

Project created successfully. None
default Default An unexpected error has occurred. Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
» code integer(int32) true none none
» message string true none none

Retrieve information for a specific project.

Code samples

URL obj = new URL("http://localhost:3030/api/projects/{projectId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

GET /projects/{projectId}

Parameters

Name In Type Required Description
projectId path string true Provide the id of the project to retrieve.

Example responses

200 Response

{
  "id": {
    "value": 0
  },
  "name": "string",
  "isOpen": true,
  "info": {
    "property1": {},
    "property2": {}
  },
  "createdAt": "2019-08-24T14:15:22Z",
  "deletedAt": "2019-08-24T14:15:22Z"
}

Responses

Status Meaning Description Schema
200 OK

Specific project information returned. Inline
default Default An unexpected error has occurred. Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
» code integer(int32) true none none
» message string true none none

Register a user as a participant of the project.

Code samples

URL obj = new URL("http://localhost:3030/api/projects/{projectId}/users");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

POST /projects/{projectId}/users

Body parameter

{
  "userId": "1cUoc4KcejOY89f2PzDc9Z8Fyf53",
  "profile": {
    "birth": "1992-02-24",
    "gender": "female"
  }
}

Parameters

Name In Type Required Description
body body object true Provide participant details.
projectId path string true Provide the id of the project for user registration.
id-token header string true Provide the unique user token (generated by firebase).

Example responses

default Response

{
  "code": 0,
  "message": "string"
}

Responses

Status Meaning Description Schema
201 Created

Participant registered successfully. None
default Default An unexpected error has occurred. Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
» code integer(int32) true none none
» message string true none none

Update the profile of the user.

Code samples

URL obj = new URL("http://localhost:3030/api/projects/{projectId}/users/{userId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PATCH");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

PATCH /projects/{projectId}/users/{userId}

Body parameter

{
  "profile": {
    "birth": "1992-02-24",
    "gender": "female"
  }
}

Parameters

Name In Type Required Description
body body object true Provide updated participant details.
projectId path string true Provide the id of the project for user registration.
userId path string true Provide the id of the user to be updated.
id-token header string true Provide the unique user token (generated by firebase).

Example responses

default Response

{
  "code": 0,
  "message": "string"
}

Responses

Status Meaning Description Schema
200 OK

User profile updated successfully. None
default Default An unexpected error has occurred. Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
» code integer(int32) true none none
» message string true none none

Retrieve a list of tasks.

Code samples

URL obj = new URL("http://localhost:3030/api/projects/{projectId}/tasks");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

GET /projects/{projectId}/tasks

Parameters

Name In Type Required Description
start_time query string(date-time) false If not provided, retrieves all tasks created after start_time.
end_time query string(date-time) false If not provided, retrieves all tasks created before end_time.
last_sync_time query string(date-time) false (For mobile application) Retrieve tasks that were published after last_sync_time.
status query string false If not provided, retrieves all tasks regardless of status.
type query string false If not provided, retrieves all tasks regardless of type.
projectId path string true Provide the id of the project to retrieve.

Enumerated Values

Parameter Value
status DRAFT
status PUBLISHED
type SURVEY
type ACTIVITY

Example responses

200 Response

[
  {
    "revisionId": 0,
    "id": "string",
    "title": "string",
    "description": "string",
    "schedule": "0 0/1 * 1/1 * ? *",
    "startTime": "2019-08-24T14:15:22Z",
    "endTime": "2019-08-24T14:15:22Z",
    "validTime": 0,
    "status": "DRAFT",
    "type": "SURVEY",
    "items": [
      {
        "name": "string",
        "type": "QUESTION",
        "contents": {
          "title": "string",
          "explanation": "string",
          "required": true,
          "type": "CHOICE",
          "properties": {
            "tag": "RADIO",
            "options": [
              {
                "value": "string",
                "label": "string"
              }
            ],
            "display_logic": {},
            "skip_logic": [
              {
                "condition": "Or contains val4 1 notcontains val4 2",
                "goToAction": null,
                "goToItemSequence": 3
              }
            ]
          }
        },
        "sequence": 0
      }
    ]
  }
]

Responses

Status Meaning Description Schema
200 OK

List of tasks retrieved successfully. Inline
default Default An unexpected error has occurred. Inline

Response Schema

Status Code 200

Name Type Required Restrictions Description
» revisionId integer true none none
» id string true none none
» title string true none none
» description string false none none
» schedule string false none in cronQuartz format
» startTime string(date-time) false none none
» endTime string(date-time) false none If not exists, there's no expiration.
» validTime integer false none Valid time of each task (minute-based).
» status string true none none
» type string true none none
» items [any] true none none
»» name string true none none
»» type string true none Type of Item
»» contents any true none According to the type, it will be changed.

oneOf

Name Type Required Restrictions Description
»»» anonymous

object false none none
»»»» title string true none Same with query.
»»»» explanation string false none none
»»»» required boolean false none none
»»»» type string true none none
»»»» properties object true none It depends on the value of 'type'.

oneOf

Name Type Required Restrictions Description
»»»»» anonymous

object false none none
»»»»»» tag string true none Only one option can be chosen for radio, dropdown, image. Multiple options can be chosen for checkbox, multi-image.
»»»»»» options [any] true none none
»»»»»»» value string true none For Image Question, you have to put link of Image in this field.
»»»»»»» label string false none This field can be used when type is IMAGE to generate Image Question with label. Also, if you want to create Image Question with label, all options have to include their own labels.
»»»»»» display_logic object false none Not used in v1.0.
»»»»»» skip_logic [any] false none none
»»»»»»» condition string false none Expression that match BranchRule.
»»»»»»» goToAction string false none Not used in v1.0.
»»»»»»» goToItemSequence integer false none If condition holds, then skip to sequence $goToItemSequence.

xor

Name Type Required Restrictions Description
»»»»» anonymous

object false none none
»»»»»» tag string true none none

xor

Name Type Required Restrictions Description
»»»»» anonymous

object false none none
»»»»»» tag string true none none
»»»»»» options [any] true none none
»»»»»»» value string true none none

xor

Name Type Required Restrictions Description
»»»»» anonymous

object false none none
»»»»»» tag string true none none
»»»»»» low integer true none Min value of scale.
»»»»»» high integer true none Max value of scale.
»»»»»» lowLabel string false none Label of min value.
»»»»»» highLabel string false none Label of max value.

xor

Name Type Required Restrictions Description
»»»»» anonymous

object false none none
»»»»»» tag string true none none
»»»»»» isTime boolean false none Either isTime or isDate has to be true.
»»»»»» isDate boolean false none Either isTime or isDate has to be true.
»»»»»» isRange boolean false none none

xor

Name Type Required Restrictions Description
»»» anonymous

object false none none
»»»» title string false none Same with query.
»»»» properties object false none none
»»»»» display_logic object false none Not used in v1.0.

xor

Name Type Required Restrictions Description
»»» anonymous

object false none none
»»»» completionTitle string true none Title of completion message.
»»»» completionDescription string false none none
»»»» required boolean false none none
»»»» type string true none none
»»»» properties object false none Field for configurable values. This is not used for v1.0.

continued

Name Type Required Restrictions Description
»» sequence integer true none Sequence of this item in a task.

Enumerated Values

Property Value
status DRAFT
status PUBLISHED
type SURVEY
type ACTIVITY
type QUESTION
type SECTION
type ACTIVITY
type CHOICE
type TEXT
type RANK
type SCALE
type DATETIME
tag RADIO
tag CHECKBOX
tag DROPDOWN
tag MULTIIMAGE
tag IMAGE
tag TEXT
tag RANK
tag SLIDER
tag DATETIME
type TAPPING_SPEED
type REACTION_TIME
type RANGE_OF_MOTION
type GAIT_AND_BALANCE
type GUIDED_BREATHING
type STROOP_TEST
type SPEECH_RECOGNITION
type MOBILE_SPIROMETRY
type SUSTAINED_PHONATION

Status Code default

Name Type Required Restrictions Description
» code integer(int32) true none none
» message string true none none

Create a new task.

Code samples

URL obj = new URL("http://localhost:3030/api/projects/{projectId}/tasks");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

POST /projects/{projectId}/tasks

Body parameter

{
  "type": "SURVEY"
}

Parameters

Name In Type Required Description
body body object true Provide task details.
projectId path string true Provide the id of the project to retrieve.

Example responses

201 Response

{
  "revisionId": 0,
  "id": "string"
}

Responses

Status Meaning Description Schema
201 Created

Task created successfully. Inline
default Default An unexpected error has occurred. Inline

Response Schema

Status Code 201

Name Type Required Restrictions Description
» revisionId integer true none none
» id string true none none

Status Code default

Name Type Required Restrictions Description
» code integer(int32) true none none
» message string true none none

Upload task results.

Code samples

URL obj = new URL("http://localhost:3030/api/projects/{projectId}/tasks");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PATCH");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

PATCH /projects/{projectId}/tasks

Body parameter

[
  {
    "revisionId": 0,
    "taskId": "string",
    "userId": "string",
    "startedAt": "2019-08-24T14:15:22Z",
    "submittedAt": "2019-08-24T14:15:22Z",
    "itemResults": [
      {
        "itemName": "string",
        "result": "string"
      }
    ]
  }
]

Parameters

Name In Type Required Description
body body array[object] true none
projectId path string true Provide the id of the project to retrieve.

Example responses

default Response

{
  "code": 0,
  "message": "string"
}

Responses

Status Meaning Description Schema
201 Created

Task results uploaded successfully. None
default Default An unexpected error has occurred. Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
» code integer(int32) true none none
» message string true none none

Retrieve tasks with a specific task_id.

Code samples

URL obj = new URL("http://localhost:3030/api/projects/{projectId}/tasks/{taskId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

GET /projects/{projectId}/tasks/{taskId}

Parameters

Name In Type Required Description
projectId path string true Provide the id of the project to retrieve.
taskId path string true Provide the id of the task.

Example responses

200 Response

[
  {
    "revisionId": 0,
    "id": "string",
    "title": "string",
    "description": "string",
    "schedule": "0 0/1 * 1/1 * ? *",
    "startTime": "2019-08-24T14:15:22Z",
    "endTime": "2019-08-24T14:15:22Z",
    "validTime": 0,
    "status": "DRAFT",
    "type": "SURVEY",
    "items": [
      {
        "name": "string",
        "type": "QUESTION",
        "contents": {
          "title": "string",
          "explanation": "string",
          "required": true,
          "type": "CHOICE",
          "properties": {
            "tag": "RADIO",
            "options": [
              {
                "value": "string",
                "label": "string"
              }
            ],
            "display_logic": {},
            "skip_logic": [
              {
                "condition": "Or contains val4 1 notcontains val4 2",
                "goToAction": null,
                "goToItemSequence": 3
              }
            ]
          }
        },
        "sequence": 0
      }
    ]
  }
]

Responses

Status Meaning Description Schema
200 OK

Task details retrieved successfully. Inline
default Default An unexpected error has occurred. Inline

Response Schema

Status Code 200

Name Type Required Restrictions Description
» revisionId integer true none none
» id string true none none
» title string true none none
» description string false none none
» schedule string false none in cronQuartz format
» startTime string(date-time) false none none
» endTime string(date-time) false none If not exists, there's no expiration.
» validTime integer false none Valid time of each task (minute-based).
» status string true none none
» type string true none none
» items [any] true none none
»» name string true none none
»» type string true none Type of Item
»» contents any true none According to the type, it will be changed.

oneOf

Name Type Required Restrictions Description
»»» anonymous

object false none none
»»»» title string true none Same with query.
»»»» explanation string false none none
»»»» required boolean false none none
»»»» type string true none none
»»»» properties object true none It depends on the value of 'type'.

oneOf

Name Type Required Restrictions Description
»»»»» anonymous

object false none none
»»»»»» tag string true none Only one option can be chosen for radio, dropdown, image. Multiple options can be chosen for checkbox, multi-image.
»»»»»» options [any] true none none
»»»»»»» value string true none For Image Question, you have to put link of Image in this field.
»»»»»»» label string false none This field can be used when type is IMAGE to generate Image Question with label. Also, if you want to create Image Question with label, all options have to include their own labels.
»»»»»» display_logic object false none Not used in v1.0.
»»»»»» skip_logic [any] false none none
»»»»»»» condition string false none Expression that match BranchRule.
»»»»»»» goToAction string false none Not used in v1.0.
»»»»»»» goToItemSequence integer false none If condition holds, then skip to sequence $goToItemSequence.

xor

Name Type Required Restrictions Description
»»»»» anonymous

object false none none
»»»»»» tag string true none none

xor

Name Type Required Restrictions Description
»»»»» anonymous

object false none none
»»»»»» tag string true none none
»»»»»» options [any] true none none
»»»»»»» value string true none none

xor

Name Type Required Restrictions Description
»»»»» anonymous

object false none none
»»»»»» tag string true none none
»»»»»» low integer true none Min value of scale.
»»»»»» high integer true none Max value of scale.
»»»»»» lowLabel string false none Label of min value.
»»»»»» highLabel string false none Label of max value.

xor

Name Type Required Restrictions Description
»»»»» anonymous

object false none none
»»»»»» tag string true none none
»»»»»» isTime boolean false none Either isTime or isDate has to be true.
»»»»»» isDate boolean false none Either isTime or isDate has to be true.
»»»»»» isRange boolean false none none

xor

Name Type Required Restrictions Description
»»» anonymous

object false none none
»»»» title string false none Same with query.
»»»» properties object false none none
»»»»» display_logic object false none Not used in v1.0.

xor

Name Type Required Restrictions Description
»»» anonymous

object false none none
»»»» completionTitle string true none Title of completion message.
»»»» completionDescription string false none none
»»»» required boolean false none none
»»»» type string true none none
»»»» properties object false none Field for configurable values. This is not used for v1.0.

continued

Name Type Required Restrictions Description
»» sequence integer true none Sequence of this item in a task.

Enumerated Values

Property Value
status DRAFT
status PUBLISHED
type SURVEY
type ACTIVITY
type QUESTION
type SECTION
type ACTIVITY
type CHOICE
type TEXT
type RANK
type SCALE
type DATETIME
tag RADIO
tag CHECKBOX
tag DROPDOWN
tag MULTIIMAGE
tag IMAGE
tag TEXT
tag RANK
tag SLIDER
tag DATETIME
type TAPPING_SPEED
type REACTION_TIME
type RANGE_OF_MOTION
type GAIT_AND_BALANCE
type GUIDED_BREATHING
type STROOP_TEST
type SPEECH_RECOGNITION
type MOBILE_SPIROMETRY
type SUSTAINED_PHONATION

Status Code default

Name Type Required Restrictions Description
» code integer(int32) true none none
» message string true none none

Update a specific task.

Code samples

URL obj = new URL("http://localhost:3030/api/projects/{projectId}/tasks/{taskId}?revision_id=0");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PATCH");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

PATCH /projects/{projectId}/tasks/{taskId}

Only tasks in DRAFT status can be updated. This is intended for auto-save or status changes.

Body parameter

{
  "title": "string",
  "description": "string",
  "schedule": "0 0/1 * 1/1 * ? *",
  "startTime": "2019-08-24T14:15:22Z",
  "endTime": "2019-08-24T14:15:22Z",
  "validTime": 0,
  "status": "DRAFT",
  "type": "SURVEY",
  "items": [
    {
      "type": "QUESTION",
      "contents": {
        "title": "string",
        "explanation": "string",
        "required": true,
        "type": "CHOICE",
        "properties": {
          "tag": "RADIO",
          "options": [
            {
              "value": "string",
              "label": "string"
            }
          ],
          "display_logic": {},
          "skip_logic": [
            {
              "condition": "Or contains val4 1 notcontains val4 2",
              "goToAction": null,
              "goToItemSequence": 3
            }
          ]
        }
      },
      "sequence": 0
    }
  ]
}

Parameters

Name In Type Required Description
revision_id query integer true none
body body object true none
projectId path string true Provide the id of the project to retrieve.
taskId path string true Provide the id of the task.

Example responses

default Response

{
  "code": 0,
  "message": "string"
}

Responses

Status Meaning Description Schema
204 No Content

Task updated successfully. None
default Default An unexpected error has occurred. Inline

Response Schema

Status Code default

Name Type Required Restrictions Description
» code integer(int32) true none none
» message string true none none

Create in-lab visit data.

Code samples

URL obj = new URL("http://localhost:3030/api/projects/{projectId}/in-lab-visits");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

POST /projects/{projectId}/in-lab-visits

Body parameter

{
  "userId": "string",
  "checkedInBy": "string",
  "startTime": "2019-08-24T14:15:22Z",
  "endTime": "2019-08-24T14:15:22Z",
  "notes": "string"
}

Parameters

Name In Type Required Description
body body object true none
projectId path string true Provide the id of the project to retrieve.

Example responses

201 Response

{
  "id": 0,
  "userId": "string",
  "checkedInBy": "string",
  "startTime": "2019-08-24T14:15:22Z",
  "endTime": "2019-08-24T14:15:22Z",
  "notes": "string",
  "filesPath": "in-lab-visit/u1234"
}

Responses

Status Meaning Description Schema
201 Created

In-lab visit data created successfully. Inline
default Default An unexpected error has occurred. Inline

Response Schema

Status Code 201

Name Type Required Restrictions Description
» id integer true none none
» userId string true none none
» checkedInBy string true none none
» startTime string(date-time) true none none
» endTime string(date-time) true none none
» notes string true none none
» filesPath string true none none

Status Code default

Name Type Required Restrictions Description
» code integer(int32) true none none
» message string true none none

Retrieve a list of in-lab visits.

Code samples

URL obj = new URL("http://localhost:3030/api/projects/{projectId}/in-lab-visits");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

GET /projects/{projectId}/in-lab-visits

Parameters

Name In Type Required Description
projectId path string true Provide the id of the project to retrieve.

Example responses

200 Response

[
  {
    "id": 0,
    "userId": "string",
    "checkedInBy": "string",
    "startTime": "2019-08-24T14:15:22Z",
    "endTime": "2019-08-24T14:15:22Z",
    "notes": "string",
    "filesPath": "in-lab-visit/u1234"
  }
]

Responses

Status Meaning Description Schema
200 OK

List of in-lab visits retrieved successfully. Inline
default Default An unexpected error has occurred. Inline

Response Schema

Status Code 200

Name Type Required Restrictions Description
» id integer true none none
» userId string true none none
» checkedInBy string true none none
» startTime string(date-time) true none none
» endTime string(date-time) true none none
» notes string true none none
» filesPath string true none none

Status Code default

Name Type Required Restrictions Description
» code integer(int32) true none none
» message string true none none

Retrieve in-lab visits with a specific inLabVisitId.

Code samples

URL obj = new URL("http://localhost:3030/api/projects/{projectId}/in-lab-visits/{inLabVisitId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

GET /projects/{projectId}/in-lab-visits/{inLabVisitId}

Parameters

Name In Type Required Description
projectId path string true Provide the id of the project to retrieve.
inLabVisitId path string true Provide the id of the in-lab visit data.

Example responses

200 Response

{
  "id": 0,
  "userId": "string",
  "checkedInBy": "string",
  "startTime": "2019-08-24T14:15:22Z",
  "endTime": "2019-08-24T14:15:22Z",
  "notes": "string",
  "filesPath": "in-lab-visit/u1234"
}

Responses

Status Meaning Description Schema
200 OK

In-lab visit data retrieved successfully. Inline
default Default An unexpected error has occurred. Inline

Response Schema

Status Code 200

Name Type Required Restrictions Description
» id integer true none none
» userId string true none none
» checkedInBy string true none none
» startTime string(date-time) true none none
» endTime string(date-time) true none none
» notes string true none none
» filesPath string true none none

Status Code default

Name Type Required Restrictions Description
» code integer(int32) true none none
» message string true none none

Update in-lab visit data with a specific inLabVisitId.

Code samples

URL obj = new URL("http://localhost:3030/api/projects/{projectId}/in-lab-visits/{inLabVisitId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PATCH");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

PATCH /projects/{projectId}/in-lab-visits/{inLabVisitId}

Body parameter

{
  "userId": "string",
  "checkedInBy": "string",
  "startTime": "2019-08-24T14:15:22Z",
  "endTime": "2019-08-24T14:15:22Z",
  "notes": "string"
}

Parameters

Name In Type Required Description
body body object true none
projectId path string true Provide the id of the project to retrieve.
inLabVisitId path string true Provide the id of the in-lab visit data.

Example responses

200 Response

{
  "id": 0,
  "userId": "string",
  "checkedInBy": "string",
  "startTime": "2019-08-24T14:15:22Z",
  "endTime": "2019-08-24T14:15:22Z",
  "notes": "string",
  "filesPath": "in-lab-visit/u1234"
}

Responses

Status Meaning Description Schema
200 OK

In-lab visit data updated successfully. Inline
default Default An unexpected error has occurred. Inline

Response Schema

Status Code 200

Name Type Required Restrictions Description
» id integer true none none
» userId string true none none
» checkedInBy string true none none
» startTime string(date-time) true none none
» endTime string(date-time) true none none
» notes string true none none
» filesPath string true none none

Status Code default

Name Type Required Restrictions Description
» code integer(int32) true none none
» message string true none none

Schemas

Id




{
  "value": 0
}

Properties

Name Type Required Restrictions Description
value integer true none none

BaseTime




{
  "createdAt": "2019-08-24T14:15:22Z",
  "deletedAt": "2019-08-24T14:15:22Z"
}

Properties

Name Type Required Restrictions Description
createdAt string(date-time) false none none
deletedAt string(date-time) false none none

Project




{
  "name": "string",
  "isOpen": true,
  "info": {
    "property1": {},
    "property2": {}
  }
}

Properties

Name Type Required Restrictions Description
name string true none none
isOpen boolean false none none
info object false none none
» additionalProperties

object false none none

ProjectRes




{
  "id": {
    "value": 0
  },
  "name": "string",
  "isOpen": true,
  "info": {
    "property1": {},
    "property2": {}
  },
  "createdAt": "2019-08-24T14:15:22Z",
  "deletedAt": "2019-08-24T14:15:22Z"
}

Properties

allOf

Name Type Required Restrictions Description
anonymous

object false none none
» id object false none none
»» value integer true none none

and

Name Type Required Restrictions Description
anonymous

object false none none
» name string true none none
» isOpen boolean false none none
» info object false none none
»» additionalProperties

object false none none

and

Name Type Required Restrictions Description
anonymous

object false none none
» createdAt string(date-time) false none none
» deletedAt string(date-time) false none none

ProjectsRes




[
  {
    "id": {
      "value": 0
    },
    "name": "string",
    "isOpen": true,
    "info": {
      "property1": {},
      "property2": {}
    },
    "createdAt": "2019-08-24T14:15:22Z",
    "deletedAt": "2019-08-24T14:15:22Z"
  }
]

Properties

allOf

Name Type Required Restrictions Description
anonymous

object false none none
» id object false none none
»» value integer true none none

and

Name Type Required Restrictions Description
anonymous

object false none none
» name string true none none
» isOpen boolean false none none
» info object false none none
»» additionalProperties

object false none none

and

Name Type Required Restrictions Description
anonymous

object false none none
» createdAt string(date-time) false none none
» deletedAt string(date-time) false none none

Projects




[
  {
    "name": "string",
    "isOpen": true,
    "info": {
      "property1": {},
      "property2": {}
    }
  }
]

Properties

Name Type Required Restrictions Description
name string true none none
isOpen boolean false none none
info object false none none
» additionalProperties

object false none none

Participant




{
  "userId": "1cUoc4KcejOY89f2PzDc9Z8Fyf53",
  "profile": {
    "birth": "1992-02-24",
    "gender": "female"
  }
}

Properties

Name Type Required Restrictions Description
userId string true none Unique id of user (generated by Firebase).
profile object false none Participant information in JSON with no pre-defined fields.

ParticipantUpdate




{
  "profile": {
    "birth": "1992-02-24",
    "gender": "female"
  }
}

Properties

Name Type Required Restrictions Description
profile object true none Participant information in JSON with no pre-defined fields.

Participants




[
  {
    "userId": "1cUoc4KcejOY89f2PzDc9Z8Fyf53",
    "profile": {
      "birth": "1992-02-24",
      "gender": "female"
    }
  }
]

Properties

Name Type Required Restrictions Description
userId string true none Unique id of user (generated by Firebase).
profile object false none Participant information in JSON with no pre-defined fields.

TextQuestion




{
  "tag": "TEXT"
}

Properties

Name Type Required Restrictions Description
tag string true none none

Enumerated Values

Property Value
tag TEXT

ChoiceQuestion




{
  "tag": "RADIO",
  "options": [
    {
      "value": "string",
      "label": "string"
    }
  ],
  "display_logic": {},
  "skip_logic": [
    {
      "condition": "Or contains val4 1 notcontains val4 2",
      "goToAction": null,
      "goToItemSequence": 3
    }
  ]
}

Properties

Name Type Required Restrictions Description
tag string true none Only one option can be chosen for radio, dropdown, image. Multiple options can be chosen for checkbox, multi-image.
options [any] true none none
» value string true none For Image Question, you have to put link of Image in this field.
» label string false none This field can be used when type is IMAGE to generate Image Question with label. Also, if you want to create Image Question with label, all options have to include their own labels.
display_logic object false none Not used in v1.0.
skip_logic [any] false none none
» condition string false none Expression that match BranchRule.
» goToAction string false none Not used in v1.0.
» goToItemSequence integer false none If condition holds, then skip to sequence $goToItemSequence.

Enumerated Values

Property Value
tag RADIO
tag CHECKBOX
tag DROPDOWN
tag MULTIIMAGE
tag IMAGE

RankQuestion




{
  "tag": "RANK",
  "options": [
    {
      "value": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
tag string true none none
options [any] true none none
» value string true none none

Enumerated Values

Property Value
tag RANK

ScaleQuestion




{
  "tag": "SLIDER",
  "low": 0,
  "high": 0,
  "lowLabel": "Somewhat disagree.",
  "highLabel": "Strongly agree"
}

Properties

Name Type Required Restrictions Description
tag string true none none
low integer true none Min value of scale.
high integer true none Max value of scale.
lowLabel string false none Label of min value.
highLabel string false none Label of max value.

Enumerated Values

Property Value
tag SLIDER

DateTimeQuestion




{
  "tag": "DATETIME",
  "isTime": true,
  "isDate": true,
  "isRange": false
}

Properties

Name Type Required Restrictions Description
tag string true none none
isTime boolean false none Either isTime or isDate has to be true.
isDate boolean false none Either isTime or isDate has to be true.
isRange boolean false none none

Enumerated Values

Property Value
tag DATETIME

Question




{
  "title": "string",
  "explanation": "string",
  "required": true,
  "type": "CHOICE",
  "properties": {
    "tag": "RADIO",
    "options": [
      {
        "value": "string",
        "label": "string"
      }
    ],
    "display_logic": {},
    "skip_logic": [
      {
        "condition": "Or contains val4 1 notcontains val4 2",
        "goToAction": null,
        "goToItemSequence": 3
      }
    ]
  }
}

Properties

Name Type Required Restrictions Description
title string true none Same with query.
explanation string false none none
required boolean false none none
type string true none none
properties object true none It depends on the value of 'type'.

oneOf

Name Type Required Restrictions Description
» anonymous

object false none none
»» tag string true none Only one option can be chosen for radio, dropdown, image. Multiple options can be chosen for checkbox, multi-image.
»» options [any] true none none
»»» value string true none For Image Question, you have to put link of Image in this field.
»»» label string false none This field can be used when type is IMAGE to generate Image Question with label. Also, if you want to create Image Question with label, all options have to include their own labels.
»» display_logic object false none Not used in v1.0.
»» skip_logic [any] false none none
»»» condition string false none Expression that match BranchRule.
»»» goToAction string false none Not used in v1.0.
»»» goToItemSequence integer false none If condition holds, then skip to sequence $goToItemSequence.

xor

Name Type Required Restrictions Description
» anonymous

object false none none
»» tag string true none none

xor

Name Type Required Restrictions Description
» anonymous

object false none none
»» tag string true none none
»» options [any] true none none
»»» value string true none none

xor

Name Type Required Restrictions Description
» anonymous

object false none none
»» tag string true none none
»» low integer true none Min value of scale.
»» high integer true none Max value of scale.
»» lowLabel string false none Label of min value.
»» highLabel string false none Label of max value.

xor

Name Type Required Restrictions Description
» anonymous

object false none none
»» tag string true none none
»» isTime boolean false none Either isTime or isDate has to be true.
»» isDate boolean false none Either isTime or isDate has to be true.
»» isRange boolean false none none

Enumerated Values

Property Value
type CHOICE
type TEXT
type RANK
type SCALE
type DATETIME
tag RADIO
tag CHECKBOX
tag DROPDOWN
tag MULTIIMAGE
tag IMAGE
tag TEXT
tag RANK
tag SLIDER
tag DATETIME

Section




{
  "title": "string",
  "properties": {
    "display_logic": {}
  }
}

Properties

Name Type Required Restrictions Description
title string false none Same with query.
properties object false none none
» display_logic object false none Not used in v1.0.

Activity




{
  "completionTitle": "string",
  "completionDescription": "string",
  "required": true,
  "type": "TAPPING_SPEED",
  "properties": {}
}

Properties

Name Type Required Restrictions Description
completionTitle string true none Title of completion message.
completionDescription string false none none
required boolean false none none
type string true none none
properties object false none Field for configurable values. This is not used for v1.0.

Enumerated Values

Property Value
type TAPPING_SPEED
type REACTION_TIME
type RANGE_OF_MOTION
type GAIT_AND_BALANCE
type GUIDED_BREATHING
type STROOP_TEST
type SPEECH_RECOGNITION
type MOBILE_SPIROMETRY
type SUSTAINED_PHONATION

Item




{
  "name": "string",
  "type": "QUESTION",
  "contents": {
    "title": "string",
    "explanation": "string",
    "required": true,
    "type": "CHOICE",
    "properties": {
      "tag": "RADIO",
      "options": [
        {
          "value": "string",
          "label": "string"
        }
      ],
      "display_logic": {},
      "skip_logic": [
        {
          "condition": "Or contains val4 1 notcontains val4 2",
          "goToAction": null,
          "goToItemSequence": 3
        }
      ]
    }
  },
  "sequence": 0
}

Properties

Name Type Required Restrictions Description
name string true none none
type string true none Type of Item
contents any true none According to the type, it will be changed.

oneOf

Name Type Required Restrictions Description
» anonymous

object false none none
»» title string true none Same with query.
»» explanation string false none none
»» required boolean false none none
»» type string true none none
»» properties object true none It depends on the value of 'type'.

oneOf

Name Type Required Restrictions Description
»»» anonymous

object false none none
»»»» tag string true none Only one option can be chosen for radio, dropdown, image. Multiple options can be chosen for checkbox, multi-image.
»»»» options [any] true none none
»»»»» value string true none For Image Question, you have to put link of Image in this field.
»»»»» label string false none This field can be used when type is IMAGE to generate Image Question with label. Also, if you want to create Image Question with label, all options have to include their own labels.
»»»» display_logic object false none Not used in v1.0.
»»»» skip_logic [any] false none none
»»»»» condition string false none Expression that match BranchRule.
»»»»» goToAction string false none Not used in v1.0.
»»»»» goToItemSequence integer false none If condition holds, then skip to sequence $goToItemSequence.

xor

Name Type Required Restrictions Description
»»» anonymous

object false none none
»»»» tag string true none none

xor

Name Type Required Restrictions Description
»»» anonymous

object false none none
»»»» tag string true none none
»»»» options [any] true none none
»»»»» value string true none none

xor

Name Type Required Restrictions Description
»»» anonymous

object false none none
»»»» tag string true none none
»»»» low integer true none Min value of scale.
»»»» high integer true none Max value of scale.
»»»» lowLabel string false none Label of min value.
»»»» highLabel string false none Label of max value.

xor

Name Type Required Restrictions Description
»»» anonymous

object false none none
»»»» tag string true none none
»»»» isTime boolean false none Either isTime or isDate has to be true.
»»»» isDate boolean false none Either isTime or isDate has to be true.
»»»» isRange boolean false none none

xor

Name Type Required Restrictions Description
» anonymous

object false none none
»» title string false none Same with query.
»» properties object false none none
»»» display_logic object false none Not used in v1.0.

xor

Name Type Required Restrictions Description
» anonymous

object false none none
»» completionTitle string true none Title of completion message.
»» completionDescription string false none none
»» required boolean false none none
»» type string true none none
»» properties object false none Field for configurable values. This is not used for v1.0.

continued

Name Type Required Restrictions Description
sequence integer true none Sequence of this item in a task.

Enumerated Values

Property Value
type QUESTION
type SECTION
type ACTIVITY
type CHOICE
type TEXT
type RANK
type SCALE
type DATETIME
tag RADIO
tag CHECKBOX
tag DROPDOWN
tag MULTIIMAGE
tag IMAGE
tag TEXT
tag RANK
tag SLIDER
tag DATETIME
type TAPPING_SPEED
type REACTION_TIME
type RANGE_OF_MOTION
type GAIT_AND_BALANCE
type GUIDED_BREATHING
type STROOP_TEST
type SPEECH_RECOGNITION
type MOBILE_SPIROMETRY
type SUSTAINED_PHONATION

Items




[
  {
    "name": "string",
    "type": "QUESTION",
    "contents": {
      "title": "string",
      "explanation": "string",
      "required": true,
      "type": "CHOICE",
      "properties": {
        "tag": "RADIO",
        "options": [
          {
            "value": "string",
            "label": "string"
          }
        ],
        "display_logic": {},
        "skip_logic": [
          {
            "condition": "Or contains val4 1 notcontains val4 2",
            "goToAction": null,
            "goToItemSequence": 3
          }
        ]
      }
    },
    "sequence": 0
  }
]

Properties

Name Type Required Restrictions Description
name string true none none
type string true none Type of Item
contents any true none According to the type, it will be changed.

oneOf

Name Type Required Restrictions Description
» anonymous

object false none none
»» title string true none Same with query.
»» explanation string false none none
»» required boolean false none none
»» type string true none none
»» properties object true none It depends on the value of 'type'.

oneOf

Name Type Required Restrictions Description
»»» anonymous

object false none none
»»»» tag string true none Only one option can be chosen for radio, dropdown, image. Multiple options can be chosen for checkbox, multi-image.
»»»» options [any] true none none
»»»»» value string true none For Image Question, you have to put link of Image in this field.
»»»»» label string false none This field can be used when type is IMAGE to generate Image Question with label. Also, if you want to create Image Question with label, all options have to include their own labels.
»»»» display_logic object false none Not used in v1.0.
»»»» skip_logic [any] false none none
»»»»» condition string false none Expression that match BranchRule.
»»»»» goToAction string false none Not used in v1.0.
»»»»» goToItemSequence integer false none If condition holds, then skip to sequence $goToItemSequence.

xor

Name Type Required Restrictions Description
»»» anonymous

object false none none
»»»» tag string true none none

xor

Name Type Required Restrictions Description
»»» anonymous

object false none none
»»»» tag string true none none
»»»» options [any] true none none
»»»»» value string true none none

xor

Name Type Required Restrictions Description
»»» anonymous

object false none none
»»»» tag string true none none
»»»» low integer true none Min value of scale.
»»»» high integer true none Max value of scale.
»»»» lowLabel string false none Label of min value.
»»»» highLabel string false none Label of max value.

xor

Name Type Required Restrictions Description
»»» anonymous

object false none none
»»»» tag string true none none
»»»» isTime boolean false none Either isTime or isDate has to be true.
»»»» isDate boolean false none Either isTime or isDate has to be true.
»»»» isRange boolean false none none

xor

Name Type Required Restrictions Description
» anonymous

object false none none
»» title string false none Same with query.
»» properties object false none none
»»» display_logic object false none Not used in v1.0.

xor

Name Type Required Restrictions Description
» anonymous

object false none none
»» completionTitle string true none Title of completion message.
»» completionDescription string false none none
»» required boolean false none none
»» type string true none none
»» properties object false none Field for configurable values. This is not used for v1.0.

continued

Name Type Required Restrictions Description
sequence integer true none Sequence of this item in a task.

Enumerated Values

Property Value
type QUESTION
type SECTION
type ACTIVITY
type CHOICE
type TEXT
type RANK
type SCALE
type DATETIME
tag RADIO
tag CHECKBOX
tag DROPDOWN
tag MULTIIMAGE
tag IMAGE
tag TEXT
tag RANK
tag SLIDER
tag DATETIME
type TAPPING_SPEED
type REACTION_TIME
type RANGE_OF_MOTION
type GAIT_AND_BALANCE
type GUIDED_BREATHING
type STROOP_TEST
type SPEECH_RECOGNITION
type MOBILE_SPIROMETRY
type SUSTAINED_PHONATION

ItemReq




{
  "type": "QUESTION",
  "contents": {
    "title": "string",
    "explanation": "string",
    "required": true,
    "type": "CHOICE",
    "properties": {
      "tag": "RADIO",
      "options": [
        {
          "value": "string",
          "label": "string"
        }
      ],
      "display_logic": {},
      "skip_logic": [
        {
          "condition": "Or contains val4 1 notcontains val4 2",
          "goToAction": null,
          "goToItemSequence": 3
        }
      ]
    }
  },
  "sequence": 0
}

Properties

Name Type Required Restrictions Description
type string true none Type of Item
contents any true none According to the type, it will be changed.

oneOf

Name Type Required Restrictions Description
» anonymous

object false none none
»» title string true none Same with query.
»» explanation string false none none
»» required boolean false none none
»» type string true none none
»» properties object true none It depends on the value of 'type'.

oneOf

Name Type Required Restrictions Description
»»» anonymous

object false none none
»»»» tag string true none Only one option can be chosen for radio, dropdown, image. Multiple options can be chosen for checkbox, multi-image.
»»»» options [any] true none none
»»»»» value string true none For Image Question, you have to put link of Image in this field.
»»»»» label string false none This field can be used when type is IMAGE to generate Image Question with label. Also, if you want to create Image Question with label, all options have to include their own labels.
»»»» display_logic object false none Not used in v1.0.
»»»» skip_logic [any] false none none
»»»»» condition string false none Expression that match BranchRule.
»»»»» goToAction string false none Not used in v1.0.
»»»»» goToItemSequence integer false none If condition holds, then skip to sequence $goToItemSequence.

xor

Name Type Required Restrictions Description
»»» anonymous

object false none none
»»»» tag string true none none

xor

Name Type Required Restrictions Description
»»» anonymous

object false none none
»»»» tag string true none none
»»»» options [any] true none none
»»»»» value string true none none

xor

Name Type Required Restrictions Description
»»» anonymous

object false none none
»»»» tag string true none none
»»»» low integer true none Min value of scale.
»»»» high integer true none Max value of scale.
»»»» lowLabel string false none Label of min value.
»»»» highLabel string false none Label of max value.

xor

Name Type Required Restrictions Description
»»» anonymous

object false none none
»»»» tag string true none none
»»»» isTime boolean false none Either isTime or isDate has to be true.
»»»» isDate boolean false none Either isTime or isDate has to be true.
»»»» isRange boolean false none none

xor

Name Type Required Restrictions Description
» anonymous

object false none none
»» title string false none Same with query.
»» properties object false none none
»»» display_logic object false none Not used in v1.0.

xor

Name Type Required Restrictions Description
» anonymous

object false none none
»» completionTitle string true none Title of completion message.
»» completionDescription string false none none
»» required boolean false none none
»» type string true none none
»» properties object false none Field for configurable values. This is not used for v1.0.

continued

Name Type Required Restrictions Description
sequence integer true none Sequence of this item in a task.

Enumerated Values

Property Value
type QUESTION
type SECTION
type ACTIVITY
type CHOICE
type TEXT
type RANK
type SCALE
type DATETIME
tag RADIO
tag CHECKBOX
tag DROPDOWN
tag MULTIIMAGE
tag IMAGE
tag TEXT
tag RANK
tag SLIDER
tag DATETIME
type TAPPING_SPEED
type REACTION_TIME
type RANGE_OF_MOTION
type GAIT_AND_BALANCE
type GUIDED_BREATHING
type STROOP_TEST
type SPEECH_RECOGNITION
type MOBILE_SPIROMETRY
type SUSTAINED_PHONATION

ItemsReq




[
  {
    "type": "QUESTION",
    "contents": {
      "title": "string",
      "explanation": "string",
      "required": true,
      "type": "CHOICE",
      "properties": {
        "tag": "RADIO",
        "options": [
          {
            "value": "string",
            "label": "string"
          }
        ],
        "display_logic": {},
        "skip_logic": [
          {
            "condition": "Or contains val4 1 notcontains val4 2",
            "goToAction": null,
            "goToItemSequence": 3
          }
        ]
      }
    },
    "sequence": 0
  }
]

Properties

Name Type Required Restrictions Description
type string true none Type of Item
contents any true none According to the type, it will be changed.

oneOf

Name Type Required Restrictions Description
» anonymous

object false none none
»» title string true none Same with query.
»» explanation string false none none
»» required boolean false none none
»» type string true none none
»» properties object true none It depends on the value of 'type'.

oneOf

Name Type Required Restrictions Description
»»» anonymous

object false none none
»»»» tag string true none Only one option can be chosen for radio, dropdown, image. Multiple options can be chosen for checkbox, multi-image.
»»»» options [any] true none none
»»»»» value string true none For Image Question, you have to put link of Image in this field.
»»»»» label string false none This field can be used when type is IMAGE to generate Image Question with label. Also, if you want to create Image Question with label, all options have to include their own labels.
»»»» display_logic object false none Not used in v1.0.
»»»» skip_logic [any] false none none
»»»»» condition string false none Expression that match BranchRule.
»»»»» goToAction string false none Not used in v1.0.
»»»»» goToItemSequence integer false none If condition holds, then skip to sequence $goToItemSequence.

xor

Name Type Required Restrictions Description
»»» anonymous

object false none none
»»»» tag string true none none

xor

Name Type Required Restrictions Description
»»» anonymous

object false none none
»»»» tag string true none none
»»»» options [any] true none none
»»»»» value string true none none

xor

Name Type Required Restrictions Description
»»» anonymous

object false none none
»»»» tag string true none none
»»»» low integer true none Min value of scale.
»»»» high integer true none Max value of scale.
»»»» lowLabel string false none Label of min value.
»»»» highLabel string false none Label of max value.

xor

Name Type Required Restrictions Description
»»» anonymous

object false none none
»»»» tag string true none none
»»»» isTime boolean false none Either isTime or isDate has to be true.
»»»» isDate boolean false none Either isTime or isDate has to be true.
»»»» isRange boolean false none none

xor

Name Type Required Restrictions Description
» anonymous

object false none none
»» title string false none Same with query.
»» properties object false none none
»»» display_logic object false none Not used in v1.0.

xor

Name Type Required Restrictions Description
» anonymous

object false none none
»» completionTitle string true none Title of completion message.
»» completionDescription string false none none
»» required boolean false none none
»» type string true none none
»» properties object false none Field for configurable values. This is not used for v1.0.

continued

Name Type Required Restrictions Description
sequence integer true none Sequence of this item in a task.

Enumerated Values

Property Value
type QUESTION
type SECTION
type ACTIVITY
type CHOICE
type TEXT
type RANK
type SCALE
type DATETIME
tag RADIO
tag CHECKBOX
tag DROPDOWN
tag MULTIIMAGE
tag IMAGE
tag TEXT
tag RANK
tag SLIDER
tag DATETIME
type TAPPING_SPEED
type REACTION_TIME
type RANGE_OF_MOTION
type GAIT_AND_BALANCE
type GUIDED_BREATHING
type STROOP_TEST
type SPEECH_RECOGNITION
type MOBILE_SPIROMETRY
type SUSTAINED_PHONATION

TaskId




{
  "revisionId": 0,
  "id": "string"
}

Properties

Name Type Required Restrictions Description
revisionId integer true none none
id string true none none

TaskType




{
  "type": "SURVEY"
}

Properties

Name Type Required Restrictions Description
type string true none none

Enumerated Values

Property Value
type SURVEY
type ACTIVITY

Task




{
  "revisionId": 0,
  "id": "string",
  "title": "string",
  "description": "string",
  "schedule": "0 0/1 * 1/1 * ? *",
  "startTime": "2019-08-24T14:15:22Z",
  "endTime": "2019-08-24T14:15:22Z",
  "validTime": 0,
  "status": "DRAFT",
  "type": "SURVEY",
  "items": [
    {
      "name": "string",
      "type": "QUESTION",
      "contents": {
        "title": "string",
        "explanation": "string",
        "required": true,
        "type": "CHOICE",
        "properties": {
          "tag": "RADIO",
          "options": [
            {
              "value": "string",
              "label": "string"
            }
          ],
          "display_logic": {},
          "skip_logic": [
            {
              "condition": "Or contains val4 1 notcontains val4 2",
              "goToAction": null,
              "goToItemSequence": 3
            }
          ]
        }
      },
      "sequence": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
revisionId integer true none none
id string true none none
title string true none none
description string false none none
schedule string false none in cronQuartz format
startTime string(date-time) false none none
endTime string(date-time) false none If not exists, there's no expiration.
validTime integer false none Valid time of each task (minute-based).
status string true none none
type string true none none
items [any] true none none
» name string true none none
» type string true none Type of Item
» contents any true none According to the type, it will be changed.

oneOf

Name Type Required Restrictions Description
»» anonymous

object false none none
»»» title string true none Same with query.
»»» explanation string false none none
»»» required boolean false none none
»»» type string true none none
»»» properties object true none It depends on the value of 'type'.

oneOf

Name Type Required Restrictions Description
»»»» anonymous

object false none none
»»»»» tag string true none Only one option can be chosen for radio, dropdown, image. Multiple options can be chosen for checkbox, multi-image.
»»»»» options [any] true none none
»»»»»» value string true none For Image Question, you have to put link of Image in this field.
»»»»»» label string false none This field can be used when type is IMAGE to generate Image Question with label. Also, if you want to create Image Question with label, all options have to include their own labels.
»»»»» display_logic object false none Not used in v1.0.
»»»»» skip_logic [any] false none none
»»»»»» condition string false none Expression that match BranchRule.
»»»»»» goToAction string false none Not used in v1.0.
»»»»»» goToItemSequence integer false none If condition holds, then skip to sequence $goToItemSequence.

xor

Name Type Required Restrictions Description
»»»» anonymous

object false none none
»»»»» tag string true none none

xor

Name Type Required Restrictions Description
»»»» anonymous

object false none none
»»»»» tag string true none none
»»»»» options [any] true none none
»»»»»» value string true none none

xor

Name Type Required Restrictions Description
»»»» anonymous

object false none none
»»»»» tag string true none none
»»»»» low integer true none Min value of scale.
»»»»» high integer true none Max value of scale.
»»»»» lowLabel string false none Label of min value.
»»»»» highLabel string false none Label of max value.

xor

Name Type Required Restrictions Description
»»»» anonymous

object false none none
»»»»» tag string true none none
»»»»» isTime boolean false none Either isTime or isDate has to be true.
»»»»» isDate boolean false none Either isTime or isDate has to be true.
»»»»» isRange boolean false none none

xor

Name Type Required Restrictions Description
»» anonymous

object false none none
»»» title string false none Same with query.
»»» properties object false none none
»»»» display_logic object false none Not used in v1.0.

xor

Name Type Required Restrictions Description
»» anonymous

object false none none
»»» completionTitle string true none Title of completion message.
»»» completionDescription string false none none
»»» required boolean false none none
»»» type string true none none
»»» properties object false none Field for configurable values. This is not used for v1.0.

continued

Name Type Required Restrictions Description
» sequence integer true none Sequence of this item in a task.

Enumerated Values

Property Value
status DRAFT
status PUBLISHED
type SURVEY
type ACTIVITY
type QUESTION
type SECTION
type ACTIVITY
type CHOICE
type TEXT
type RANK
type SCALE
type DATETIME
tag RADIO
tag CHECKBOX
tag DROPDOWN
tag MULTIIMAGE
tag IMAGE
tag TEXT
tag RANK
tag SLIDER
tag DATETIME
type TAPPING_SPEED
type REACTION_TIME
type RANGE_OF_MOTION
type GAIT_AND_BALANCE
type GUIDED_BREATHING
type STROOP_TEST
type SPEECH_RECOGNITION
type MOBILE_SPIROMETRY
type SUSTAINED_PHONATION

TaskReq




{
  "title": "string",
  "description": "string",
  "schedule": "0 0/1 * 1/1 * ? *",
  "startTime": "2019-08-24T14:15:22Z",
  "endTime": "2019-08-24T14:15:22Z",
  "validTime": 0,
  "status": "DRAFT",
  "type": "SURVEY",
  "items": [
    {
      "type": "QUESTION",
      "contents": {
        "title": "string",
        "explanation": "string",
        "required": true,
        "type": "CHOICE",
        "properties": {
          "tag": "RADIO",
          "options": [
            {
              "value": "string",
              "label": "string"
            }
          ],
          "display_logic": {},
          "skip_logic": [
            {
              "condition": "Or contains val4 1 notcontains val4 2",
              "goToAction": null,
              "goToItemSequence": 3
            }
          ]
        }
      },
      "sequence": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
title string true none none
description string false none none
schedule string false none cronQuartz format. This is required if status is PUBLISHED.
startTime string(date-time) false none This is required if status is PUBLISHED.
endTime string(date-time) false none If not exists, there's no expiration.
validTime integer false none Valid time of each task (minute-based). This is required if status is PUBLISHED.
status string true none none
type string true none none
items [any] true none none
» type string true none Type of Item
» contents any true none According to the type, it will be changed.

oneOf

Name Type Required Restrictions Description
»» anonymous

object false none none
»»» title string true none Same with query.
»»» explanation string false none none
»»» required boolean false none none
»»» type string true none none
»»» properties object true none It depends on the value of 'type'.

oneOf

Name Type Required Restrictions Description
»»»» anonymous

object false none none
»»»»» tag string true none Only one option can be chosen for radio, dropdown, image. Multiple options can be chosen for checkbox, multi-image.
»»»»» options [any] true none none
»»»»»» value string true none For Image Question, you have to put link of Image in this field.
»»»»»» label string false none This field can be used when type is IMAGE to generate Image Question with label. Also, if you want to create Image Question with label, all options have to include their own labels.
»»»»» display_logic object false none Not used in v1.0.
»»»»» skip_logic [any] false none none
»»»»»» condition string false none Expression that match BranchRule.
»»»»»» goToAction string false none Not used in v1.0.
»»»»»» goToItemSequence integer false none If condition holds, then skip to sequence $goToItemSequence.

xor

Name Type Required Restrictions Description
»»»» anonymous

object false none none
»»»»» tag string true none none

xor

Name Type Required Restrictions Description
»»»» anonymous

object false none none
»»»»» tag string true none none
»»»»» options [any] true none none
»»»»»» value string true none none

xor

Name Type Required Restrictions Description
»»»» anonymous

object false none none
»»»»» tag string true none none
»»»»» low integer true none Min value of scale.
»»»»» high integer true none Max value of scale.
»»»»» lowLabel string false none Label of min value.
»»»»» highLabel string false none Label of max value.

xor

Name Type Required Restrictions Description
»»»» anonymous

object false none none
»»»»» tag string true none none
»»»»» isTime boolean false none Either isTime or isDate has to be true.
»»»»» isDate boolean false none Either isTime or isDate has to be true.
»»»»» isRange boolean false none none

xor

Name Type Required Restrictions Description
»» anonymous

object false none none
»»» title string false none Same with query.
»»» properties object false none none
»»»» display_logic object false none Not used in v1.0.

xor

Name Type Required Restrictions Description
»» anonymous

object false none none
»»» completionTitle string true none Title of completion message.
»»» completionDescription string false none none
»»» required boolean false none none
»»» type string true none none
»»» properties object false none Field for configurable values. This is not used for v1.0.

continued

Name Type Required Restrictions Description
» sequence integer true none Sequence of this item in a task.

Enumerated Values

Property Value
status DRAFT
status PUBLISHED
type SURVEY
type ACTIVITY
type QUESTION
type SECTION
type ACTIVITY
type CHOICE
type TEXT
type RANK
type SCALE
type DATETIME
tag RADIO
tag CHECKBOX
tag DROPDOWN
tag MULTIIMAGE
tag IMAGE
tag TEXT
tag RANK
tag SLIDER
tag DATETIME
type TAPPING_SPEED
type REACTION_TIME
type RANGE_OF_MOTION
type GAIT_AND_BALANCE
type GUIDED_BREATHING
type STROOP_TEST
type SPEECH_RECOGNITION
type MOBILE_SPIROMETRY
type SUSTAINED_PHONATION

Tasks




[
  {
    "revisionId": 0,
    "id": "string",
    "title": "string",
    "description": "string",
    "schedule": "0 0/1 * 1/1 * ? *",
    "startTime": "2019-08-24T14:15:22Z",
    "endTime": "2019-08-24T14:15:22Z",
    "validTime": 0,
    "status": "DRAFT",
    "type": "SURVEY",
    "items": [
      {
        "name": "string",
        "type": "QUESTION",
        "contents": {
          "title": "string",
          "explanation": "string",
          "required": true,
          "type": "CHOICE",
          "properties": {
            "tag": "RADIO",
            "options": [
              {
                "value": "string",
                "label": "string"
              }
            ],
            "display_logic": {},
            "skip_logic": [
              {
                "condition": "Or contains val4 1 notcontains val4 2",
                "goToAction": null,
                "goToItemSequence": 3
              }
            ]
          }
        },
        "sequence": 0
      }
    ]
  }
]

Properties

Name Type Required Restrictions Description
revisionId integer true none none
id string true none none
title string true none none
description string false none none
schedule string false none in cronQuartz format
startTime string(date-time) false none none
endTime string(date-time) false none If not exists, there's no expiration.
validTime integer false none Valid time of each task (minute-based).
status string true none none
type string true none none
items [any] true none none
» name string true none none
» type string true none Type of Item
» contents any true none According to the type, it will be changed.

oneOf

Name Type Required Restrictions Description
»» anonymous

object false none none
»»» title string true none Same with query.
»»» explanation string false none none
»»» required boolean false none none
»»» type string true none none
»»» properties object true none It depends on the value of 'type'.

oneOf

Name Type Required Restrictions Description
»»»» anonymous

object false none none
»»»»» tag string true none Only one option can be chosen for radio, dropdown, image. Multiple options can be chosen for checkbox, multi-image.
»»»»» options [any] true none none
»»»»»» value string true none For Image Question, you have to put link of Image in this field.
»»»»»» label string false none This field can be used when type is IMAGE to generate Image Question with label. Also, if you want to create Image Question with label, all options have to include their own labels.
»»»»» display_logic object false none Not used in v1.0.
»»»»» skip_logic [any] false none none
»»»»»» condition string false none Expression that match BranchRule.
»»»»»» goToAction string false none Not used in v1.0.
»»»»»» goToItemSequence integer false none If condition holds, then skip to sequence $goToItemSequence.

xor

Name Type Required Restrictions Description
»»»» anonymous

object false none none
»»»»» tag string true none none

xor

Name Type Required Restrictions Description
»»»» anonymous

object false none none
»»»»» tag string true none none
»»»»» options [any] true none none
»»»»»» value string true none none

xor

Name Type Required Restrictions Description
»»»» anonymous

object false none none
»»»»» tag string true none none
»»»»» low integer true none Min value of scale.
»»»»» high integer true none Max value of scale.
»»»»» lowLabel string false none Label of min value.
»»»»» highLabel string false none Label of max value.

xor

Name Type Required Restrictions Description
»»»» anonymous

object false none none
»»»»» tag string true none none
»»»»» isTime boolean false none Either isTime or isDate has to be true.
»»»»» isDate boolean false none Either isTime or isDate has to be true.
»»»»» isRange boolean false none none

xor

Name Type Required Restrictions Description
»» anonymous

object false none none
»»» title string false none Same with query.
»»» properties object false none none
»»»» display_logic object false none Not used in v1.0.

xor

Name Type Required Restrictions Description
»» anonymous

object false none none
»»» completionTitle string true none Title of completion message.
»»» completionDescription string false none none
»»» required boolean false none none
»»» type string true none none
»»» properties object false none Field for configurable values. This is not used for v1.0.

continued

Name Type Required Restrictions Description
» sequence integer true none Sequence of this item in a task.

Enumerated Values

Property Value
status DRAFT
status PUBLISHED
type SURVEY
type ACTIVITY
type QUESTION
type SECTION
type ACTIVITY
type CHOICE
type TEXT
type RANK
type SCALE
type DATETIME
tag RADIO
tag CHECKBOX
tag DROPDOWN
tag MULTIIMAGE
tag IMAGE
tag TEXT
tag RANK
tag SLIDER
tag DATETIME
type TAPPING_SPEED
type REACTION_TIME
type RANGE_OF_MOTION
type GAIT_AND_BALANCE
type GUIDED_BREATHING
type STROOP_TEST
type SPEECH_RECOGNITION
type MOBILE_SPIROMETRY
type SUSTAINED_PHONATION

TaskResult




{
  "revisionId": 0,
  "taskId": "string",
  "userId": "string",
  "startedAt": "2019-08-24T14:15:22Z",
  "submittedAt": "2019-08-24T14:15:22Z",
  "itemResults": [
    {
      "itemName": "string",
      "result": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
revisionId integer false none none
taskId string false none none
userId string false none none
startedAt string(date-time) false none none
submittedAt string(date-time) false none none
itemResults [any] false none none
» itemName string false none none
» result string false none none

TaskResults




[
  {
    "revisionId": 0,
    "taskId": "string",
    "userId": "string",
    "startedAt": "2019-08-24T14:15:22Z",
    "submittedAt": "2019-08-24T14:15:22Z",
    "itemResults": [
      {
        "itemName": "string",
        "result": "string"
      }
    ]
  }
]

Properties

Name Type Required Restrictions Description
revisionId integer false none none
taskId string false none none
userId string false none none
startedAt string(date-time) false none none
submittedAt string(date-time) false none none
itemResults [any] false none none
» itemName string false none none
» result string false none none

ItemResult




{
  "itemName": "string",
  "result": "string"
}

Properties

Name Type Required Restrictions Description
itemName string false none none
result string false none none

SkipLogic




{
  "condition": "Or contains val4 1 notcontains val4 2",
  "goToAction": null,
  "goToItemSequence": 3
}

Properties

Name Type Required Restrictions Description
condition string false none Expression that match BranchRule.
goToAction string false none Not used in v1.0.
goToItemSequence integer false none If condition holds, then skip to sequence $goToItemSequence.

InLabVisitReq




{
  "userId": "string",
  "checkedInBy": "string",
  "startTime": "2019-08-24T14:15:22Z",
  "endTime": "2019-08-24T14:15:22Z",
  "notes": "string"
}

Properties

Name Type Required Restrictions Description
userId string true none none
checkedInBy string true none none
startTime string(date-time) true none none
endTime string(date-time) true none none
notes string false none none

InLabVisitUpdateReq




{
  "userId": "string",
  "checkedInBy": "string",
  "startTime": "2019-08-24T14:15:22Z",
  "endTime": "2019-08-24T14:15:22Z",
  "notes": "string"
}

Properties

Name Type Required Restrictions Description
userId string true none none
checkedInBy string true none none
startTime string(date-time) true none none
endTime string(date-time) true none none
notes string false none none

InLabVisitRes




{
  "id": 0,
  "userId": "string",
  "checkedInBy": "string",
  "startTime": "2019-08-24T14:15:22Z",
  "endTime": "2019-08-24T14:15:22Z",
  "notes": "string",
  "filesPath": "in-lab-visit/u1234"
}

Properties

Name Type Required Restrictions Description
id integer true none none
userId string true none none
checkedInBy string true none none
startTime string(date-time) true none none
endTime string(date-time) true none none
notes string true none none
filesPath string true none none

Error




{
  "code": 0,
  "message": "string"
}

Properties

Name Type Required Restrictions Description
code integer(int32) true none none
message string true none none