# PRJ User Dashboard API Manual ###### tags: `Dashboard` - **purpose:** used to get the most updated recommendation content of assigned uuid - **api endpoint:** **`https://ucrepg6n17.execute-api.ap-northeast-1.amazonaws.com/PRJ_Recommendation_Handler`** - **api key** `eh8fCiMmHvohrhPw4PdRfG90ggj1iw9QbzUY89s4w5E` - **request method:** **`POST`** - **most updated model version:** **`2021-04-12`** - **contents need to be assigned in headers:** 1. Content-Type: `application/json` 2. UUID: uuid of user 3. Version: current model version, only when current model version less than the most updated model version will this API return new recommendation content 4. Signature: encrypt uuid using api_key mentioned above - **sample code (Python 3)** ``` # set header format by bringing uuid of user, current model version of device and signature api_key = `eh8fCiMmHvohrhPw4PdRfG90ggj1iw9QbzUY89s4w5E` # $uuid: uuid of user # $model_version: version of recommendation model of device with format = yyyy-mm-dd # signature: created by api_key & uuid, used for authentication #how to create signature using api_key & uuid import hashlib, hmac, base64 message = bytes($uuid, 'utf-8') secret = bytes(api_key, 'utf-8') signature = base64.b64encode(hmac.new(secret, message, digestmod = hashlib.sha256).digest()).decode() # request with POST method import requests headers = {'Content-Type': 'application/json', 'UUID': $uuid, 'Version': $model_version, 'Signature': signature} endpoint = 'https://ucrepg6n17.execute-api.ap-northeast-1.amazonaws.com/PRJ_Recommendation_Handler' rs = requests.post(endpoint, headers = headers) response = rs.json() ``` - **response content** ``` { "result_code": (Required, type: int, status of result) "error_message": (Optional, type: str, only exists while result_code != 2001, error message) "content": (Optional, type: dict/json, only exists while result_code == 2001, content of recommendation) "latest_version": (Optional, type: str, only exists while result_code == 2001, the latest model version) "uuid": Optional, type: str, only exists while result_code == 2001, the uuid of requesting user) } ``` - **type of result_code** - `200`: model version was already up to date - **`2001`**: successfully return content of the latest model version(in this status, there exists `content` & `latest_version` , and exists no `error_meesage` in response content) - `400`: error request header format - `401`: authentication failure - `500`: internal error - `503`: request timeout - **sample of responding content** - 1. result_code == 2001: ``` headers = {'Content-Type': 'application/json', 'UUID': 'a78f3ddd16452ddc9b87f7d1b8b1cd68', 'Version': '2022-04-11', 'Signature': 'B5tbkXOnQK5IVROJh3XYS5+80RK5cVME+a5LL8ffdb0='} # make POST request rs = requests.post(endpoint, headers = headers) response = rs.json() ``` ``` # response content {'result_code': 2001, 'content': {'Label': 'Pic mode', 'Reminder': 'sRGB Mode'}, 'uuid': 'a78f3ddd16452ddc9b87f7d1b8b1cd68', 'latest_version': '2022-04-12'} ``` - 2. result_code == 200: ``` headers = {'Content-Type': 'application/json', 'UUID': 'a78f3ddd16452ddc9b87f7d1b8b1cd68', 'Version': '2022-04-12', 'Signature': 'B5tbkXOnQK5IVROJh3XYS5+80RK5cVME+a5LL8ffdb0='} # make POST request rs = requests.post(endpoint, headers = headers) response = rs.json() ``` ``` # response content {'result_code': 200, 'error_message': 'model already up tp date'} ``` - **valid uuids for testing** ``` 2179f02cc41412ac234e48a54368b2ef a78f3ddd16452ddc9b87f7d1b8b1cd68 a08ae84095b1acdefd7bab675f7670 3717a3e6e29b373fb2138e76c628b2d 2cf03f24d81d0f840e78649c6304f3d c5426941ce3ccc8afe47df69ce387d2 ```