---
# System prepended metadata

title: 5.我的 API
tags: [NeutecLife App]

---

---
tags: NeutecLife App
---

# 5.我的 API




:::info
目錄：
<a href="https://hackmd.io/FStSBTFdRhac3tsDr8OyiA">0.登入功能相關 API 文件</a>
<a href="https://hackmd.io/coOyibBDRYqJpluQIQFYmg">1.首頁功能相關 API 文件</a>
<a href="https://hackmd.io/-A3kGYJ8SHyjegBROlwJow">2-1.分類列表：分類列表頁、借書＆歸還 API 文件</a>
<a href="https://hackmd.io/boCGrFpsR0CciLYEXS-kxw">2-2.分類列表：借物 API 文件</a>
<a href="https://hackmd.io/jBWDb0OaT_KV-_ducdzqsQ">2-3.分類列表：會議室＆英文課 API 文件</a>
<a href="https://hackmd.io/FhZ89ZDxSbOK8oYslEXuCA">3.最新消息 API 文件</a>
<a href="https://hackmd.io/SSAxobFGQEC8lyHiu485iQ">4.通知 API 文件</a>
<a href="https://hackmd.io/Fz8d0LtbS2iwhuI3QmmzYQ">5.我的 API 文件</a>

> [time=Jan 4, 2024]
* `更新`  Document init
> [time=Jul 29, 2024]
* `更新` 日期格式統一採用 yyyy/M/d
> [time=Jul 31, 2024]
* `更新` 設定頁新增accountInfo module
* `更新` returnWeekDay由Server端直接回傳中文
> [time=Aug 8, 2024]
* `更新` 圖片路徑將不帶入domain，App端將預設domain帶入
> [time=Aug 9, 2024]
* `更新` favoriteList與loanList更改type定義＆新增itemGroupId
> [time=Aug 14, 2024]
* `更新` favorite收藏功能修改，由App實做大部分的工，Server端僅透過minePage.favoriteList回傳
> [time=Nov 4, 2024]
* `新增` 所有websocket API皆可額外帶入timeout參數
> [time=Nov 5, 2024]
* `更新` accountInfo module 移除 isForceUpdatePassword 欄位，此參數改在handshake時給予
* `更新` loanList module 新增 loanDate 與 loanWeekDate 欄位
> [time=Nov 6, 2024]
* `更新` loanList module 移除 isFavorite
> [time=Jun 27, 2025]
* `更新` 將setting module更名，統一使用mineSetting做all, list & update動作

----
:::

#### Remark
```
所有websocket API皆可額外帶入timeout參數做測試用途：

參數名稱：timeout
值：0-9 代表延遲回應的秒數，可模擬網路不穩回應變慢的情況
   99 代表Server端出現未知的錯誤，可模擬Server端某功能出現異常的情況
   
 ```

### ❇️ minePage

URL: `wss://{domain name}/`

Method: `wss`

Descirption: `「我的」資訊頁`



**Request** 
| Parameter    | Type     | Require | Description |
| -----------  | -------- | ------- | ----------- |
| requestId    | string   | Y       | 對話id       |
| page         | string   | Y       | 手機畫面名稱  |
| module       | string   | Y       | 功能區塊名稱  |
| type         | string   | Y       | 資料處理型態  |
| data         | object   | Y       | 資料參數     |
```json=
{
  "requestId": "64d94767-c926-6156-44a5-8bf08a3691d4",
  "page": "minePage",
  "module": "all",
  "type": "select",
  "data": {
      
  }
}
```
**Response**
| Parameter | Type     | Require | Description |
| --------- | -------- | ------- | ----------- |
| requestId | string   |    Y    | 對話id  |
| status    | int      |    Y    | [狀態代碼](#狀態代碼) |
| page      | string   |    Y    | 手機畫面名稱  |
| info      | array    |    Y    | 手機畫面資訊 |
| module    | string   |    Y    | 手機畫面區塊名稱 |
| status    | int      |    Y    | [狀態代碼](#狀態代碼) |
| type      | string   |    Y    | 資料處理型態 |
| num       | int      |    Y    | 資料筆數 |
| data      | array    |    Y    | 資料內容陣列 |

<br>

**Response loanList module 我的借用清單**
| Parameter   | Type     | Require | Description |
| ----------- | -------- | ------- | ----------- |
| functionId | int      | Y       | 分類列表id<br>（1書籍、3其他設備、5電動、6露營裝備、7桌遊、8其他）  |
| itemId      | int      | Y       | 書籍/物品id |
| loanDate    | string   | Y       | 借用(或預約)起始日期  |
| loanWeekDay | string   | Y       | 借用(或預約)起始日期是星期幾(中文 日～六)  |
| returnDate  | string   | Y       | 歸還日期  |
| returnWeekDay| string  | Y       | 歸還日期是星期幾(中文 日～六)  |
| leftDays    | int      | Y       | 剩餘幾天要歸還  |
| loanStatus  | int      | Y       | 借用狀態<br>1:書籍排隊中<br>2:書籍/物品借用中 <br>3:物品已預約(時間尚未超過預約起始日)<br>4:書籍/物品已逾期<br>5:書籍/物品已歸還<br><br>API排序order by loanStatus ASC, updateTime DESC |
| title       | string   | Y       | 借用項目標題  |
| iconUrl     | string   | Y       | 借用項目圖片連結  |

<br>

**Response favoriteList module 收藏(我的最愛)清單**
| Parameter   | Type     | Require | Description |
| ----------- | -------- | ------- | ----------- |
| type        | int      | Y       | 項目型態<br>1:書籍/物品<br> <font color=lightgray>[Phase2] 2:活動/意見調查</font> |
| id       | int   | Y       | 如果type == 1 or 2，id代表itemId<br><font color=lightgray>[Phase2] 若type==2，id代表eventId</font> |
| functionId| int    | Y  | 分類列表id(1~8固定：1書籍、2會議室、3其他設備、4英文課、5電動、6露營裝備、7桌遊、8其他)|
| title       | string   | Y       | 借用項目標題(書名/品名/活動名稱) |
| subtitle    | string   | Y       | functionId為1＝author(書籍作者)；<br>functionId為3~8＝clubName(物品所屬的社團名稱)<br><font color=lightgray>|
| iconUrl     | string   | Y       | 借用項目圖片連結  |


<br>

**Response mineSetting module 我的設定**
| Parameter   | Type     | Require | Description |
| ----------- | -------- | ------- | ----------- |
| isPushNewItem| bool    | Y       | 是否開啟書籍/物品新上架推播通知(false:不開啟 true:開啟)<br><b>預設開啟</b>  |
| isPushClockIn| bool    | Y       | 是否開啟到班推播通知(false:不開啟 true:開啟)<br><b>預設開啟</b>   |
| quickEntrance | array  | Y       | 快速入口功能id (依照分類列表8項功能id)<br>1:書籍<br>2:會議室<br>3:其他設備<br>4:英文課<br>5:電玩<br>6:露營裝備<br>7:桌遊<br>8:其他  |


mineSetting 執行「設定」動作請參照下方[minePage-mineSetting 設定動作](#❇%EF%B8%8F-minePage-mineSetting-設定動作)  
    
<br>

**Response accountInfo module 帳號資訊**
| Parameter | Type   | Require | Description |
| --------- | -------| ------- | ----------- |
| workNo    | string | Y       | 員工工號<br>(Ex:NE097) |
| name      | string | Y       | 員工英文全名<br>(Ex:Bruce Huang) |
| imgUrl    | string | Y       | 員工照片路徑 |
| datetime  | string | Y       | 資料發佈時間 |


```json=
{
  "requestId": "64d94767-c926-6156-44a5-8bf08a3691d4",
  "status": 200,
  "page": "minePage",
  "info": [
    {
      "module": "loanList",
      "status": 200,
      "type":"list",
      "num": 2,
      "data": [
                {
                  "functionId":1,
                  "itemId":1,
                  "loanDate":"",
                  "loanWeekDay":"",
                  "returnDate":"",
                  "returnWeekDay":"",
                  "leftDays":0,
                  "loanStatus":1,
                  "title":"無腦理財術，小資大翻身！",
                  "iconUrl":"/book/1.png"
                },
                {
                  "functionId":1,
                  "itemId":3,
                  "loanDate":"2024/1/3",
                  "loanWeekDay":"一",
                  "returnDate":"2024/1/13",
                  "returnWeekDay":"三",
                  "leftDays":5,
                  "loanStatus":2,
                  "title":"哈利波特-神秘的魔法石",
                  "iconUrl":"/book/3.png"
                },
                {
                  "functionId":6,
                  "itemId":2,
                  "loanDate":"2024/1/5",
                  "loanWeekDay":"一",
                  "returnDate":"2024/1/19",
                  "returnWeekDay":"三",
                  "leftDays":2,
                  "loanStatus":3,
                  "title":"全自動戶外野營帳篷",
                  "iconUrl":"/item/2.png"
                },
                {
                  "functionId":6,
                  "itemId":5,
                  "loanDate":"2024/1/3",
                  "loanWeekDay":"一",
                  "returnDate":"2024/1/16",
                  "returnWeekDay":"三",
                  "leftDays":-1,
                  "loanStatus":4,
                  "title":"折疊野餐桌",
                  "iconUrl":"/item/5.png"
                },
                {
                  "functionId":6,
                  "itemId":5,
                  "loanDate":"2023/11/12",
                  "loanWeekDay":"一",
                  "returnDate":"2023/11/18",
                  "returnWeekDay":"三",
                  "leftDays":0,
                  "loanStatus":5,
                  "title":"折疊野餐桌",
                  "iconUrl":"/item/5.png"
                }
      ],
      "datetime":"2024/1/17 10:00:01"
    },
    {
      "module": "favoriteList",
      "status": 200,
      "type":"list",
      "num": 2,
      "data": [
                {
                  "type":1,
                  "functionId":1,
                  "id":1,
                  "title":"無腦理財術，小資大翻身！",
                  "subTitle":"林大維",
                  "iconUrl":"/book/1.png"
                },
                {
                  "type":1,
                  "functionId":6,
                  "id":1,
                  "title":"全自動戶外野營帳篷",
                  "subTitle":"露營社",
                  "iconUrl":"/item/1.png"
                }
      ],
      "datetime":"2024/1/17 10:00:01"
    },
    {
      "module": "mineSetting",
      "status": 200,
      "type":"list",
      "num": 1,
      "data": [
                {
                  "isPushNewItem":true,
                  "isPushClockIn":true,
                  "quickEntrance":[7,1,3,6,5,4]
                }
      ]
    },
    {
      "module": "accountInfo",
      "status": 200,
      "type": "list",
      "num": 1,
      "data": [
        {
          "workNo":"NE097",
          "name":"Bruce Huang",
          "imgUrl":"/member/member.jsp?u=7e662482-b98a-4542-811e-8c2e8b88823d"
        }
      ],
      "datetime":"2024/1/17 10:00:01"
    }
  ],
  "datetime": "2023/11/1 12:38:11"
 }
```

<br>

### ❇️ minePage-favorite

URL: `wss://{domain name}/`

Method: `wss`

Descirption: `「我的」資訊頁-收藏/取消收藏動作`

#### Remark
```
1.收藏有異動時，API僅回傳minePage.favoriteList。
```

**Request 新增收藏** 
| Parameter    | Type     | Require | Description |
| -----------  | -------- | ------- | ----------- |
| requestId    | string   | Y       | 對話id       |
| page         | string   | Y       | 手機畫面名稱  |
| module       | string   | Y       | 功能區塊名稱  |
| type         | string   | Y       | 資料處理型態  |
| data         | object   | Y       | 資料參數     |
| itemId       | int      | Y       | 書籍/物品id  |

```json=
{
  "requestId": "64d94767-c926-6156-44a5-8bf08a3691d4",
  "page": "minePage",
  "module": "favorite",
  "type": "insert",
  "data": {
      "itemId":1
  }
}
```

<br>

**Response 新增收藏**
| Parameter | Type   | Require | Description |
| --------- | -------| ------- | ----------- |
| requestId | string |    Y    | 對話id  |
| status    | number |    Y    | [狀態代碼](#狀態代碼) |
| page      | string |    Y    | 手機畫面名稱  |
| info      | string |    Y    | 手機畫面資訊 |
| module    | string |    Y    | 手機畫面區塊名稱 |
| status    | number |    Y    | [狀態代碼](#狀態代碼) |
| type      | string |    Y    | 資料處理型態 |
| num       | int    |    Y    | 資料筆數 |
| data      | array  |    Y    | 資料內容陣列 |
| type      | int    |    Y    | 項目型態<br>1:書籍/物品<br> <font color=lightgray>[Phase2] 2:活動/意見調查</font> |
| functionId | int      | Y       | 分類列表id<br>（1書籍、3其他設備、5電動、6露營裝備、7桌遊、8其他）  |
| id       | int   | Y       | 如果type == 1 or 2，id代表itemId<br><font color=lightgray>[Phase2] 若type==2，id代表eventId</font> |
| title     | string  |   Y    | 借用項目標題(書名/品名/活動名稱) |
| subtitle  | string  |   Y    | functionId為1＝author(書籍作者)；<br>functionId為3~8＝clubName(物品所屬的社團名稱)<br>|
| iconUrl   | string  |   Y    | 借用項目圖片連結  |

```json=
{
  "requestId": "64d94767-c926-6156-44a5-8bf08a3691d4",
  "status": 200,
  "page": "minePage",
  "info": [
    {
      "module": "favoriteList",
      "status": 200,
      "type":"add",
      "num": 1,
      "data": [
                {
                  "type":1,
                  "functionId":1,
                  "id":1,
                  "title":"無腦理財術，小資大翻身！",
                  "subTitle":"林大維",
                  "iconUrl":"/book/1.png"
                }
      ],
      "datetime":"2023/11/1 12:38:11"
    }
  ],
  "datetime": "2023/11/1 12:38:11"
 }
```

<br>


**Request 取消收藏** 
| Parameter    | Type     | Require | Description |
| -----------  | -------- | ------- | ----------- |
| requestId    | string   | Y       | 對話id       |
| page         | string   | Y       | 手機畫面名稱  |
| module       | string   | Y       | 功能區塊名稱  |
| type         | string   | Y       | 資料處理型態  |
| data         | object   | Y       | 資料參數     |
| itemId       | int      | Y       | 書籍/物品id   |

```json=
{
  "requestId": "64d94767-c926-6156-44a5-8bf08a3691d4",
  "page": "minePage",
  "module": "favorite",
  "type": "delete",
  "data": {
      "itemId":1
  }
}
```
<br>

**Response 取消收藏**
| Parameter   | Type     | Require | Description |
| ----------- | -------- | ------- | ----------- |
| requestId | string | Y | 對話id  |
| status    | number | Y | [狀態代碼](#狀態代碼) |
| page      | string | Y | 手機畫面名稱  |
| info      | string | Y | 手機畫面資訊 |
| module    | string | Y | 手機畫面區塊名稱 |
| status    | number | Y | [狀態代碼](#狀態代碼) |
| type      | string | Y | 資料處理型態 |
| num       | int    | Y | 資料筆數 |
| data      | array  | Y | 資料內容陣列 |
| type        | int      | Y       | 項目型態<br>1:書籍/物品<br> <font color=lightgray>[Phase2] 2:活動/意見調查</font> |
| functionId | int      | Y       | 分類列表id<br>（1書籍、3其他設備、5電動、6露營裝備、7桌遊、8其他）  |
| id       | int   | Y       | 如果type == 1 or 2，id代表itemId<br><font color=lightgray>[Phase2] 若type==2，id代表eventId</font> |
| title       | string   | Y       | 借用項目標題(書名/品名/活動名稱) |
| subtitle    | string   | Y       | functionId為1＝author(書籍作者)；<br>functionId為3~8＝clubName(物品所屬的社團名稱)|
| iconUrl     | string   | Y       | 借用項目圖片連結  |
```json=
{
  "requestId": "64d94767-c926-6156-44a5-8bf08a3691d4",
  "status": 200,
  "page": "minePage",
  "info": [
    {
      "module": "favoriteList",
      "status": 200,
      "type":"remove",
      "num": 1,
      "data": [
                {
                  "type":1,
                  "functionId":1,
                  "id":1,
                  "title":"無腦理財術，小資大翻身！",
                  "subTitle":"林大維",
                  "iconUrl":"/book/1.png"
                }
      ],
      "datetime":"2023/11/1 12:38:11"
        
    }
  ],
  "datetime": "2023/11/1 12:38:11"
 }
```

<br>



### ❇️ minePage-mineSetting 設定動作

URL: `wss://{domain name}/`

Method: `wss`

Descirption: `「我的」資訊頁-設定(新書通知、新活動通知＆快速入口)動作`

#### Remark
```
Server端若遇到該使用者是全新無設定資料時，需給予預設值：
1. "isPushNewItem":true
2. "isPushClockIn":true
3. "quickEntrance":[1,2,3,4,5,6,7,8]
```

**Request** 
| Parameter    | Type     | Require | Description |
| -----------  | -------- | ------- | ----------- |
| requestId    | string   | Y       | 對話id       |
| page         | string   | Y       | 手機畫面名稱  |
| module       | string   | Y       | 功能區塊名稱  |
| type         | string   | Y       | 資料處理型態  |
| data         | object   | Y       | 資料參數     |
| isPushNewItem| bool     |         | 是否開啟書籍/物品新上架通知 (false:關閉 true:開啟)     |
| isPushClockIn| bool    |        | 是否開啟到班推播通知(false:不開啟 true:開啟)<br>   |
| quickEntrance| array    |         | 快速入口順序(至少4個，最多8個) 功能id (依照分類列表8項功能id)<br>1:書籍<br>2:會議室<br>3:其他設備<br>4:英文課<br>5:電玩<br>6:露營裝備<br>7:桌遊<br>8:其他    |

```json=
{
  "requestId": "64d94767-c926-6156-44a5-8bf08a3691d4",
  "page": "minePage",
  "module": "mineSetting",
  "type": "update",
  "data": {
      "isPushNewItem":true,
      "isPushClockIn":true,
      "quickEntrance":[2,3,5,4]
  }
}
```
**Response**
| Parameter | Type     | Require | Description |
| --------- | -------- | ------- | ----------- |
| requestId | string   | Y | 對話id  |
| status    | int      | Y | [狀態代碼](#狀態代碼) |
| page      | string   | Y | 手機畫面名稱  |
| info      | array    | Y | 手機畫面資訊 |
| module    | string   | Y |手機畫面區塊名稱 |
| status    | int      | Y | [狀態代碼](#狀態代碼) |
| type      | string   | Y | 資料處理型態 |
| num       | int      | Y | 資料筆數 |
| data      | array    | Y | 資料內容陣列 |
| isPushNewItem| bool     |         | 是否開啟書籍/物品新上架通知 (false:關閉 true:開啟)     |
| isPushClockIn| bool    |        | 是否開啟到班推播通知(false:不開啟 true:開啟)<br>   |
| quickEntrance| array    |         | 快速入口順序(至少4個，最多8個) 功能id (依照分類列表8項功能id)<br>1:書籍<br>2:會議室<br>3:其他設備<br>4:英文課<br>5:電玩<br>6:露營裝備<br>7:桌遊<br>8:其他    |
```json=
{
  "requestId": "64d94767-c926-6156-44a5-8bf08a3691d4",
  "status": 200,
  "page": "minePage",
  "info": [
    {
      "module": "mineSetting",
      "status": 200,
      "type":"list",
      "num": 1,
      "data": [
                {
                    "isPushNewItem":true,
                    "isPushClockIn":true,
                    "quickEntrance":[2,3,5,4]
                }
      ],
      "datetime":"2023/11/1 12:38:11"
    }
  ],
  "datetime": "2023/11/1 12:38:11"
 }
```

<br>

---

<br>

<iframe src="https://hackmd.io/zqx1OcNuTKSHCI89YIHMOw?view" width="100%" height="500"></iframe>

<!--
### 狀態代碼

| status | description |
| -----  |-------------|
| 200    | Success |
| 1001   | Not found this page or module. |
| 1003   | Not found this DATA. |
| 1004   | DATA parameter error. |
| 1005   | Data processing error. |
| 1006   | 您輸入的帳號或密碼錯誤，請重新輸入 |
| 1008   | Your account has been logged in another device. |
| 1009   | Touch too fast. |
| 1010   | Unknow error. |
| 1011   | 身份驗證失敗，請重新登入 |
| 1012   | Blacklist. |
| 1013   | Not found this lastId. |
| 1014   | 已超過書籍借用2本上限 |
| 1015   | 此書籍正在借閱中，借閱失敗 |
| 1016   | 書籍有人排隊預約，展延失敗 |
| 1017   | 時段衝突，此時段已有人預約 |
| 1018   | 物品已進入借用狀態，無法取消 |
| 1030   | 已有他人在此時段預約\r請重新選擇起訖時間 |
| 1031   | 會議時段衝突\r請重新選擇循環時段 |

<br>

### socket對話資料處理型態
| type   | description |
| -----  |-------------|
| select | App端請求「顯示用」資料。<br>ex:需要顯示書籍列表時。 |
| insert | App端請求「新增」動作。<br>ex:使用者按下借用按鈕時。 |
| update | App端請求「更新」動作。<br>ex:使用者更換快速入口項目時。 |
| delete | App端請求「刪除」動作。<br>ex:使用者按下取消收藏按鈕時。 |
| list   | Server端請求刷新整個區塊資料，或僅告知事件已處理完成。<br>ex:需要顯示書籍列表時。 |
| add    | Server端請求新增資料到區塊中。<br>ex:當後台新增了一筆通知時。 |
| modify | Server端請求更新畫面中的某筆資料。<br>ex:當後台修改了某一筆已發出通知的錯字時。 |
| remove | App端請求「刪除」動作。<br>ex:大樓消防演練通知會在演練結束後自動在App端移除消失。  |


-->