POST child weight - ocariot/api-gateway GitHub Wiki

Description

Register a new weight measurement and associate it to a Child.

Permissions:

  • Application users can register a Weight for any Child as long as it exists.

  • A Child can register a Weight just for herself.

  • An Educator can register a Weight for any Child who exists and belongs to one of their groups.

  • A Family user can register a Weight for any Child who exists and is associated with it.

Scope

measurements:create

URL

POST https://localhost/v1/children/{child_id}/weights

Parameters

child_id: string (A 24-byte hex ID)

Request body

{
  "timestamp": "2019-06-20T14:40:00Z",
  "value": 70.2,
  "unit": "kg",
  "body_fat": 20.1
}

Curl example

curl -X POST "https://localhost/v1/children/5a62be07d6f33400146c9b61/weights" -H "accept: application/json" -H "Authorization: Bearer YOUR_ACCESS_TOKEN" -H "Content-Type: application/json" -d "{"timestamp":"2019-06-20T14:40:00Z","value":55.2,"unit":"kg","body_fat":20.1}"

Response body

  • 201 Weight measurement saved sucessfully.

    {
      "id": "5a62be07de34500146d9c544",
      "timestamp": "2019-06-20T14:40:00Z",
      "value": 70.2,
      "unit": "kg",
      "body_fat": 20.1,
      "child_id": "5a62be07de34500146d9c544"
    }     
    
  • 207 Successful request, however, can have several status codes for the case of a list of submitted weight records.

    {
      "success": [
        {
          "code": 201,
          "item": {
            "id": "5db70ff1fce8d130bf48a9da",
            "timestamp": "2019-06-21T14:40:00.000Z",
            "value": 61.5,
            "unit": "kg",
            "child_id": "5a62be07d6f33400146c9b61",
            "body_fat": 19.3
          }
        }
      ],
      "error": [
        {
          "code": 409,
          "message": "Weight is already registered...",
          "item": {
            "timestamp": "2019-06-20T14:40:00.000Z",
            "value": 70.2,
            "unit": "kg",
            "child_id": "5a62be07d6f33400146c9b61",
            "body_fat": 20.1
          }
        }
      ]
    }
    
  • 400 Validation errors

    • Invalid JSON format

    • Invalid child id

    • Child does not exist

    • Missing fields

      • Example
        {
          "code": 400,
          "message": "Required fields were not provided...",
          "description": "timestamp, value, unit are required!"
        }
        
    • Invalid timestamp

    • Empty string

      • Example
        {
          "code": 400,
          "message": "One or more request fields are invalid...",
          "description": "unit must have at least one character!"
        }
        
    • Invalid string

      • Example
        {
          "code": 400,
          "message": "One or more request fields are invalid...",
          "description": "unit must be a string!"
        }
        
    • Negative number

      • Example
        {
          "code": 400,
          "message": "One or more request fields are invalid...",
          "description": "value can't be negative!"
        }
        
    • Invalid number

      • Example
        {
          "code": 400,
          "message": "One or more request fields are invalid...",
          "description": "value must be a valid number!"
        }
        
  • 401 Unauthorized Error

  • 403 Permission Error

  • 409 Conflict Error

  • 429 Too Many Requests Error

  • 500 Internal Server Error