---
# System prepended metadata

title: Yake Mobile API

---

# Yake Mobile API
&nbsp;
資料更新時間：2024/04/1
## 異動內容(2024/04/1)
1.authTokene改authorization
2.關鍵字查詢Menber的response漏了一個firstOperationDate
3.更新使用者個人資訊，新增type， 9:首次記錄日期(firstOperationDate)

## 名詞定義
 * User：醫生、美容師
 * Member：會員、顧客、病患

## Server統一回傳格式
``` json
// status : 0成功、1失敗、2token過期
//response of successful request:
{
  "status": "0",
  "data": {
    //API 回傳內容
  },
  "message": "" // Or optional success message
}

//response of failed request:
{
  "status": "1",
  "data": null, // Or optional success message
  "message": "Error Message"  // Error Message
}
```


## User

### [POST] /user/Login
>說明：
>首次當入的話，參數帶account、passWord、serialNumber，Responses收到loginToken跟authToken。
>之後登入，參數帶account、passWord、loginToken，Responses收到authToken。

##### Headers
> 無

##### Paremeters
>|name|type|data type|description|
> |-|-|-|-|
> |account|required|String|帳號|
> |passWord|required|String|密碼|
> |serialNumber|optional|String|序號|
> |loginToken|optional|String|loginToken|

##### Responses
``` json
//如果參數收到serialNumber，就回傳loginToken跟authToken。
//如果參數收到loginToken，就回傳loginToken。
{
    "loginToken" : "loginToken", // 後需登入，使用的token
    "authorization" : "authorization", // 後續call api時，提server辨識身份。
}
```

### [GET] /user/getOTP
##### Headers
>|name|type|data type|description|
> |-|-|-|-|
> |authorization|required|String|驗證使用者身份|

##### Paremeters
>無

##### Responses
``` json
{
    "otp" : "123456",
}
```
&nbsp;

## Member 查詢

### [GET] /member/searchByMemberData 個資查詢Menber
> 說明：
> 依照給的參數條件去做搜尋。參數name、phone、birthDay、memberID，同時只會存在一種。
> 有可能比對到多人，所以回傳MemberData array，MemberData只包含使用者的基本資料(List頁面呈現)
> MemberData如Responses所示。

##### Headers
>|name|type|data type|description|
> |-|-|-|-|
> |authorization|required|String|驗證使用者身份|

##### Paremeters
>|name|type|data type|description|
> |-|-|-|-|
> |name|optional|String|會員姓名|
> |phone|optional|String|電話|
> |birthDay|optional|String|生日(yyyy/mm/dd)|
> |memberID|optional|String|編號|

##### Responses
> 參數name、phone、birthDay、memberID，同時只會存在一種
> 有可能比對到多人，所以回傳MemberData array
> MemberData只包含使用者的基本資料(List頁面呈現)
``` json
[
    {
        "memberID" : "memberID",
        "name" : "memberName",
        "gender" : 1,
        "birthDay" : "yyyy/mm/dd",
        "mobile" : "member手機",
        "phone" : "member電話",
        "height" : 170.2,    //Double
        "weight" : 50.1,     //Double
        "addredss" : "member住址",
        "firstOperationDate" : "yyyy/mm/dd",
    }
]
```


---

### [GET] /member/searchByKeyWord 關鍵字查詢Menber
> 說明：
> 相較於searchByMemberData回傳的的MemberData，關鍵字查詢需要多給relatvie以利List畫面呈現
> keyword、searchType 希望也一並附在Responses
##### Headers
>|name|type|data type|description|
> |-|-|-|-|
> |authorization|required|String|驗證使用者身份|

##### Paremeters
>|name|type|data type|description|
> |-|-|-|-|
> |type|required|Int|查詢標的，0：事件紀錄、1：施作紀錄、2：購買紀錄、3：備註紀錄、4：施作產品紀錄、5：施作材料紀錄|
> |keyWord|required|String|關鍵字|


##### Responses
``` json
{
    "keyword": "痘疤",
    "searchType": 1, // 1：施作紀錄
    "result": [{
        "memberID" : "memberID",
        "name" : "memberName",
        "gender" : 1,
        "birthDay" : "yyyy/mm/dd",
        "mobile" : "member手機",
        "phone" : "member電話",
        "height" : 170.2,
        "weight" : 50.1,
        "addredss" : "member住址",
        "firstOperationDate" : "yyyy/mm/dd",
        "relative": "因為什麼原因，施作痘疤修復療程，然後怎樣怎樣"
    },]
}
```


---

### [POST][multipart] /member/searchByPhoto 基礎照片查詢Menber
##### Headers
>|name|type|data type|description|
> |-|-|-|-|
> |authorization|required|String|驗證使用者身份|

##### Paremeters
>|name|type|data type|description|
> |-|-|-|-|
> |photo|required|multipart/form-data|照片檔(PNG)|

##### Responses
> 同searchByMemberData的回傳


---

### [GET] /member/getMemberDetail 取得Member所有資料
##### Headers
>|name|type|data type|description|
> |-|-|-|-|
> |authorization|required|String|驗證使用者身份|

##### Paremeters
>|name|type|data type|description|
> |-|-|-|-|
> |memberID|required|Int|memberID|

##### Responses
``` json
    {
        "memberID" : "memberID",
        "name" : "memberName",
        "gender" : 1,
        "birthDay" : "yyyy/mm/dd",
        "mobile" : "member手機",
        "phone" : "member電話",
        "height" : 170.2,
        "weight" : 50.1,
        "addredss" : "member住址",
        "firstOperationDate" : "yyyy/mm/dd",
        "eventRecord" : [  //事件紀錄
            {
                "eventId":123,   //事件ID
                "name":"事件名稱",
                "content":"事件描述內容....",
            },
        ],
        "operationRecord" : [  //操作紀錄
            {
                "operationId":123,   //操作紀錄ID
                "name":"施作方式",
                "date":"yyyy/mm/dd", //施作日期
                "method":"施作方法",
                "material":"使用材料",
                "materialCosts":2000, //材料費用
                "operationCosts":20000, //施作費用
            },
        ],
        "purchaseRecord" : [  //購買紀錄
            {
                "purchaseId":123,   //購買紀錄ID
                "name":"產名稱",
                "date":"yyyy/mm/dd", //購買日期
                "count":5, //購買數量
                "unitPrice":500, //單價
                "totalPrice":2500, //總價
            },
        ],
        "note" : "備註備註",  //備註
        "basicPhoto" : "basicPhoto", // 基礎照片網址
        "photo" : [ // 其他照片網址
            {
                "photoId":123,   //購買紀錄ID
                "url":"photo_url", //相片網址
                "date":"yyyy/mm/dd", //相片日期
                "description":"ＸＸＸ手術", //相片描述
            },
        ],
    }
```


---

## MemberData 更新

### [POST][multipart] /member/updateMemberPhoto 更新基礎照片
##### Headers
>|name|type|data type|description|
> |-|-|-|-|
> |authorization|required|String|驗證使用者身份|

##### Paremeters
>|name|type|data type|description|
> |-|-|-|-|
> |memberID|required|Int|memberID|
> |photo|required|multipart/form-data|照片檔(PNG) |


##### Responses
``` json
{
  "status": "success", // or "error"
  "message": "" /* Or optional success message */
}
```

---

### [POST] /member/updateMemberData 更新使用者個人資訊
##### Headers
>|name|type|data type|description|
> |-|-|-|-|
> |authorization|required|String|驗證使用者身份|

##### Paremeters
>|name|type|data type|description|
> |-|-|-|-|
> |memberID|required|Int|memberID|
> |type|required|Int|更改標的，0：姓名、1：手機、2：市話、3：生日、4：身高、5：體重、6：住址、7：性別、8：備註、9:首次記錄日期(firstOperationDate)|
> |content|required|String|回傳內容，如果是性別，會回傳Int。身高、體重會回傳Double|

##### Responses
``` json
{
  "status": "success",
  "data": null,
  "message": ""
}
```

### [POST] /member/updateEventRecord 更新事件紀錄
##### Headers
>|name|type|data type|description|
> |-|-|-|-|
> |authorization|required|String|驗證使用者身份|

##### Paremeters
>|name|type|data type|description|
> |-|-|-|-|
> |memberID|required|Int|memberID|
> |eventId|required|String| 事件ID|
> |name|required|String|事件名稱|
> |content|required|String|事件描述內容|


##### Responses
``` json
{
  "status": "success",
  "data": null,
  "message": ""
}
```


### [POST] /member/updateOperationRecord 更新操作紀錄
##### Headers
>|name|type|data type|description|
> |-|-|-|-|
> |authorization|required|String|驗證使用者身份|

##### Paremeters
>|name|type|data type|description|
> |-|-|-|-|
> |memberID|required|Int|memberID|
> |operationId|required|String| operationId|
> |name|required|String|施作方式|
> |date|required|String|yyyy/mm/dd 施作日期|
> |method|required|String|施作方法|
> |material|required|String|使用材料|
> |materialCosts|required|Int|材料費用|
> |operationCosts|required|Int|施作費用|

##### Responses
``` json
{
  "status": "success",
  "data": null,
  "message": ""
}
```

### [POST] /member/updatePurchaseRecord 更新購買紀錄
##### Headers
>|name|type|data type|description|
> |-|-|-|-|
> |authorization|required|String|驗證使用者身份|

##### Paremeters
>|name|type|data type|description|
> |-|-|-|-|
> |memberID|required|Int|memberID|
> |purchaseId|required|String| 購買紀錄ID|
> |name|required|String|產品名稱|
> |date|required|String|yyyy/mm/dd 購買日期|
> |count|required|Int|購買數量|
> |unitPrice|required|Int|單價|
> |totalPrice|required|Int|總價|

##### Responses
``` json
{
  "status": "success",
  "data": null,
  "message": ""
}
```


##### Headers
>|name|type|data type|description|
> |-|-|-|-|
> |authorization|required|String|驗證使用者身份|

##### Paremeters
>|name|type|data type|description|
> |-|-|-|-|
> |memberID|required|Int|memberID|
> |type|required|Int|更改標的，0：事件紀錄、1：施作紀錄、2：購買紀錄、3：備註紀錄|
> |recordID|required|String| 如果是事件就是事件ID，施作紀錄就是施作紀錄ID，以此類推。(備註紀錄沒有ID，所以填寫null)|
> |content|required|String|如果事件紀錄就會是回傳事件紀錄的格式，以此類推|

##### Responses
``` json
{
  "status": "success",
  "data": null,
  "message": ""
}
```




## MemberData 刪除照片

### [GET] /member/deleteMemberPhoto
##### Headers
>|name|type|data type|description|
> |-|-|-|-|
> |authorization|required|String|驗證使用者身份|

##### Paremeters
>|name|type|data type|description|
> |-|-|-|-|
> |memberID|required|Int|memberID|
> |photoID|required|String|要刪除的photoID|


##### Responses
``` json
{
  "status": "success", // or "error"
  "message": "" /* Or optional success message */
}
```

---

## MemberData 新增

### [POST][multipart] /member/add 新增使用者
##### Headers
>|name|type|data type|description|
> |-|-|-|-|
> |authorization|required|String|驗證使用者身份|

##### Paremeters
>|name|type|data type|description|
> |-|-|-|-|
> |memberData|required|JsonString|會員資料，範例如下|
> |basicPhoto|required|multipart/form-data|照片檔(PNG) |


```json
//會員資料JsonString
{
        "name" : "memberName",
        "gender" : 1,
        "birthDay" : "yyyy/mm/dd",
        "mobile" : "member手機",
        "phone" : "member電話",
        "height" : 172.0,   //Double
        "weight" : 55.0,    //Double
        "addredss" : "member住址",
        "firstOperationDate" : "yyyy/mm/dd",
        "eventRecord" : [  //事件紀錄
            {
                "eventId":123,   //事件ID
                "name":"事件名稱",
                "content":"事件描述內容....",
            },
        ],
        "operationRecord" : [  //操作紀錄
            {
                "operationId":123,   //操作紀錄ID
                "name":"施作方式",
                "date":"yyyy/mm/dd", //施作日期
                "method":"施作方法",
                "material":"使用材料",
                "materialCosts":2000, //材料費用
                "operationCosts":20000, //施作費用
            },
        ],
        "purchaseRecord" : [  //購買紀錄
            {
                "purchaseId":123,   //購買紀錄ID
                "name":"產名稱",
                "date":"yyyy/mm/dd", //購買日期
                "count":5, //購買數量
                "unitPrice":500, //單價
                "totalPrice":2500, //總價
            },
        ],
        "note" : "備註備註",  //備註
        "photo" : [ // 其他照片網址
            {
                "photoId":123,   //購買紀錄ID
                "url":"photo_url", //相片網址
                "date":"yyyy/mm/dd", //相片日期
                "description":"ＸＸＸ手術", //相片描述
            },
        ],
    }
```

##### Responses
``` json
{
  "status": "success",
  "data": null,
  "message": ""
}
```

---





### [POST][multipart] /member/addMemberPhoto  新增照片
##### Headers
>|name|type|data type|description|
> |-|-|-|-|
> |authorization|required|String|驗證使用者身份|

##### Paremeters
>|name|type|data type|description|
> |-|-|-|-|
> |date|required|String|yyyy/mm/dd|
> |description|required|String|相片描述|
> |photo|required|multipart/form-data|照片檔(PNG) |
##### Responses
``` json
{
  "status": "success",
  "data": null,
  "message": ""
}
```

---




