URL for test server:  https://mobile-test.diaper-project.com:5001

URL for prod server:  https://mobile-prod.diaper-project.com:5001

Notes:

The API key is jus the API key.

If the Header needs Authentification, please use the "user log in" API first, the response body will have "authToken," as shown in the below image. Copy it in to the header, and add "Bearer" in front of it.

Server Info APIs

URL/api/monitoring
DescriptionMonitoring related info
MethodGET
Url Param--
Request Body Data

--

Response

{

api_env: "dev",

connected_db: "dev",

pipeline: "mobile"

}

200

          
Cookie

--

URL/api/version
DescriptionShow API Version
MethodGET
Url Param--
Request Body Data

--

Response

{version: "xxx"} - 200

Cookie

--


User Creation APIs

 

URL/api/users
DescriptionCreate a new user
MethodPUT
Content-typeapplication/json
Url Param---
Request Body Data
{
email: xxx,
firstName: xxx,
lastName: xxx,
surveyData: xxx
}
Response
Response BodyCode

{

message: "Password set email has been sent."

}

200

{

message: "Malformatted JSON"

}

400

{

message: "There was a problem sending the password set email. Please try again later."

}

500

{

message: "User already exists!"

}

500
Cookie---


User Authentication APIs


URL/api/auth
DescriptionUser login
MethodPOST
Content-typeapplication/json
Url Param--
Request Body Data
{
email: xxx,
password: xxx,
firstName: xxx,
lastName: xxx
}
Response
Response BodyCode

{

loginResponseType: “loginResponseTypeSuccess”,

message: "User successfully authenticated.",

accessToken: xxx,

email: xxx,

firstName: xxx,

lastName: xxx

}

201

{

loginResponseType: "loginResponseTypeInvalidPassword",

message: "Failed login",

displayMessage: "Incorrect email or password."

}

401

{

message: "There was a problem sending the password set email. Please try again later"

}

500

{

loginResponseType: "loginResponseTypePasswordNotSet",

message: "User password has not been set.",

displayMessage: "Please check your email for a link to set your account password."

}


Cookie

---



URL/api/users/<email>/resetpassword
DescriptionReset password with given new password
MethodPOST
Url Paramemail: email for the user to reset password
Request Body Data
{
password: xxx
}

Note: password field takes the new password to be reset, not the old password.
Response
Response BodyCode

{

message: "Successfully updated password"

}

200

{

message: "Invalid email address provided"

}

400

{

message: "Unauthorized: you do not have access to reset this user's password"

}

401
Cookie---



URL/api/users/<email>/requestpasswordreset
DescriptionSend password reset email
MethodPOST
Url Paramemail: email for the user to reset password
Request Body Data---
Response
Response BodyCode

{

message: "Password reset email has been sent."

}

200

{

message: "Invalid email address provided"

}

400

{

message: "There was a problem sending the password reset email. Please try again later"

}

500
Cookie---



URL/api/logout
DescriptionLog out user by deleting the user's access token
MethodDELETE
Url Param---
Request Body Data---
Response
Response BodyCode

{

message: "Successfully logged out"

}

200
Cookie---


Sample APIs

URL /api/samples/
Description

GET: Fetching all samples created from a user

PUT: Inserting a new sample [Poop Sample Response]

HeaderAPI_KEY, Authorization
Content-typemultipart/form-data
MethodPUT | GET
Url Param

--

Request Body Data

GET

---

PUT
{

sampleData: {

sampleBarcodeID: xxx,

milkBarcodeID:xxx,

surveyData: {...} 

},

image: xxx

}

Note: SampleData should send as form-data text, and the image should be form-data file.

Response

PUT

  • { message: “Sample data recorded!” } - 200: Success
  • { message: "Bad request: no image or sample data" } - 400
  • { message: "Bad request: no sample data"} - 401
  • { message: "Bad request: no barcode ID"} - 402
  • { message: "Bad request: no survey data"} - 403


GET
{ sampleList:
[

{

id: barcode id,

milk_id: milk id,

dateTime: timestamp,

surveyData: {},

readableSurveyData: {}, 

image_url: url of sample image,

email: xxx@gmail.com

},

{

...

},]

}
200: Success

URL/api/sample/<sample_id>(deprecated)
DescriptionFetching the image of a Specific Sample Response
URL /api/sample/<barcode_id>
DescriptionFetching a specific sample with barcode id
HeaderAPI_KEY, Authorization
MethodGET
Url Param

<barcode_id> : ID for the sample to update (string) 

Request Body Data

--

Response

{ sample: { id: xxx, dateTime: xxx, hasPict: xxx, hasSurvey: xxx, hasContainer: xxx } }
200: Success

{ message: ”sample id is invalid” }
400: Invalid


{ message: ”This user does not have access to this sample data” }
403: Unauthorized

{ message: ”No such sample exists” }
404: Resource Not Found



URL /api/sample/<barcode_id>/image
DescriptionFetching the image of a specific sample 
HeaderAPI_KEY, Authorization
MethodGET
Url Param

<barcode_id> : ID for the sample to update (string) 

Request Body Data

--

Response

image/png

200:Succeed


{ message: ”This user does not have access to this sample data” }
403: Unauthorized

{ message: ”No such sample exists” }
404: Resource Not Found




URL /api/sample/count_this_week
DescriptionReturn the total number the user uploaded this week
HeaderAPI_KEY, Authorization
MethodGET
Url Param
Request Body Data

--

Response

{ "sampleCount": int } - 200



URL /api/sample/<barcode_id>/updatesurvey 
DescriptionUpdate survey for the given sample id
Content-Typemultipart/form-data
HeaderAPI_KEY, Authorization
MethodPUT
Url Param

<barcode_id> : ID for the sample to update (string)

Request Body Data

surveyData: list of new survey data

Response

{message: "Bad request: no survey data to update"} - 404

{message: "sample id is invalid"} - 400

{message: "successfully updated survey data"} - 200

URL /api/sample/count_total
DescriptionReturn the total number of samples the user uploaded
HeaderAPI_KEY, Authorization
MethodGET
Url Param--
Request Body Data

--

Response

{ "sampleCount": int } - 200


Survey APIs

URL /api/sendAfterBirthSurvey
Descriptionsend the infant after birth qualtrics survey to the email specified
HeaderAPI_KEY, Authorization
MethodPOST
Url Param --
Request Body Data



Response

{message: "Email is sent"} - 200

{message: "There was a problem sending the email. Please try again later"} - 500

URL /api/survey/questions
DescriptionReturns the sample survey when 'main_survey' is passed in as survey_name
HeaderAPI_KEY, Authorization
MethodGET
Url Param survey_name
Request Body Data

--

Response

{questionsList: [{
"questionId": "questionDiet",
"questionText": "Whatwasyourbaby'sdiettoday?",
"questionType": "questionTypeSingleSelect",
"responses": [

Unknown macro: { "responseId"}

,
...
...
...
]}




 

URL /api/survey
DescriptionPlace a survey into the database in order to be retrieved by the application in the future
HeaderAPI_KEY, Authorization
MethodPUT
Url Paramsurvey_name
Request Body Data

Survey to placed in the database

Response
{
"message": "Incorrect API key provided."
}
{
"message": "Survey stored!"
}, 200
If survey name not passed in,
{
"message"="Please pass in survey name to create a survey"
}, 400
Sample


Upload APIs (they are in the code, but neither mobile nor dashboard uses them)


URL /api/upload/
Description

GET: Fetching all uploaded species reads

PUT: Upload a species read

HeaderAPI_KEY, Authorization
Content-typeraw
MethodPUT | GET
Url Param

--

Request Body Data

GET

---

PUT

{        "barcode_id":"XXXXX",
        "sample_id":"XXXX",
        "sample_species_read": {
                "Actinotignum_timeonense": "XX",
                "Aeriscardovia_aeriphila": "X",

                ...
                }
}


Response

PUT

  • { message: “file uploaded” } - 200: Success


GET

{
        "file_list": [
                {
                        "_id": "XXXX",
                        "date_time": "XXXXXXX",
                        "email": "diapertestemail@gmail.com",
                        "sample_id": "XXX",
                        "sample_species_read": {
                                "Actinotignum_timeonense": "XX",
                                "Aeriscardovia_aeriphila": "XX",

                                ...
                         }
                },

                ...
         ],
         "num": XX
}


200: Success



  • No labels