# Z-axis API
# URL Path Documentation
## User
| 說明 | Method | Path | Body |
| -------- | -------- | -------- | - |
| 註冊使用者 | POST | /users/register | nickname, email, password |
| 登入使用者 | POST | /users/login | email, password |
| 取得使用者資料 | GET | /users/me |
| 變更使用者資料 | PATCH | /users/me | nickname, email |
| 變更使用者密碼 | PATCH | /users/updatePassword | oldPassword, newPassword, againPassword |
| 刪除使用者 | DELETE | /users/me |
## Issue
| 說明 | Method | Path | Params | Body |
| -------- | -------- | -------- | - | - |
| 創立留言箱 | POST | /issues | | title, description, beginDate, finishDate |
| 取得所有留言箱 | GET | /issues | |
| 取得單一留言箱 | GET | /issues/:issueURL | issueURL |
| 取得單一留言箱分析資料 | GET | /issues/data/:issueURL | issueURL |
| 編輯留言箱 | PATCH | /issues/:issueId | issueId | title, description, beginDate, finishDate
| 刪除留言箱 | DELETE | /issues/:issueId | issueId |
## Comment
| 說明 | Method | Path | Params | Body |
| -------- | -------- | -------- | - | - |
| 創立留言 | POST | /issues/:issueId/comments | issueId | nickname, content |
| 取得所有留言 | GET | /issues/:issueId/comments | issueId |
| 編輯留言 | PATCH | /issues/:issueId/comments/:commentId | issueId, commentId | nickname, content |
| 編輯回覆 | PATCH | /issues/:issueId/comments/:commentId/replies | issueId, commentId | reply |
| 置頂留言 | POST | /issues/:issueId/pinCommentOnTop | issueId |
| 按讚留言 | PATCH | /issues/:issueId/comments/:commentId/likes | issueId |
| 刪除留言 | DELETE | /issues/:issueId/comments/:commentId | issueId, commentId | |
## Guest
| 說明 | Method | Path |
| -------- | -------- | -------- |
| 註冊訪客 | POST | /guest |
## Test
開發中
## Lottery
開發中
## Questionnaire
開發中
# Request and Response
## baseURL
`https://ben6515.tw/api`
## 身份驗證
```javascript=
{
headers: {
'authorization': "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InpheGlzQGdtYWlsLmNvbSIsImlhdCI6MTYzMzUwNTc0MH0.MeG5g2v-fUfa4h9vLLc7zUwEGv5IgEMCYT75g3wnexY",
'guest-token': "728v1vnb"
}
}
```
## Users
### 註冊使用者
Request Example
```javascript=
{
"nickname": "zaxis",
"email": "zaxis@gmail.com",
"password": "zaxis2021"
}
```
Response Example
```javascript=
{
"ok": 1,
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InpheGlzQGdtYWlsLmNvbSIsImlhdCI6MTYzMzUwNTc0MH0.MeG5g2v-fUfa4h9vLLc7zUwEGv5IgEMCYT75g3wnexY"
"statusCode": 200
}
```
### 登入使用者
Request Example
```javascript=
{
"email": "zaxis@gmail.com",
"password": "zaxis2021"
}
```
Response Example
```javascript=
{
"ok": 1,
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InpheGlzQGdtYWlsLmNvbSIsImlhdCI6MTYzMzUwNTc0MH0.MeG5g2v-fUfa4h9vLLc7zUwEGv5IgEMCYT75g3wnexY"
"statusCode": 200
}
```
### 取得使用者資料
Response Example
```javascript=
{
"ok": 1,
"user": {
"id": 2,
"nickname": "angelina",
"email": "angelina@gmail.com"
},
"statusCode": 200
}
```
### 變更使用者資料
Request Example
```javascript=
{
"nickname": "zaxis",
"email": "zaxis@gmail.com",
}
```
Response Example
```javascript=
{
"ok": 1,
"message": "個人資訊更新成功",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InpheGlzQGdtYWlsLmNvbSIsImlhdCI6MTYzMzUwNTc0MH0.MeG5g2v-fUfa4h9vLLc7zUwEGv5IgEMCYT75g3wnexY"
"statusCode": 200
}
```
### 變更使用者密碼
Request Example
```javascript=
{
"oldPassword": "zaxis2021",
"newPassword": "zaxis2022",
"againPassword": "zaxis2022"
}
```
Response Example
```javascript=
{
"ok": 1,
"message": "密碼更新成功",
"statusCode": 200
}
```
### 刪除使用者
Response Example
```javascript=
{
"ok": 1,
"message": "刪除成功",
"statusCode": 200
}
```
## Issue
### 創立留言箱
Request Example
```javascript=
{
"title": "Z-axis 為您的演說帶來無限的可能",
"description": "在虛擬的網路世界中,Z-axis 將連結您(代表 x)與觀眾(代表 y)的即時多人互動,三方串連打造更加自由、更加立體的互動空間",
"beginDate": "2021-10-11",
"finishDate": "2021-10-13"
}
```
Response Example
```javascript=
{
"ok": 1,
"message": "新增成功",
"url": "fbf42f033f8db84de68bfd89b03656b4",
"issue": {
"UserId": 5
"beginDate": "2021-10-11T00:00:00.000Z"
"createdAt": "2021-10-06T07:39:00.778Z"
"description": "在虛擬的網路世界中,Z-axis 將連結您(代表 x)與觀眾(代表 y)的即時多人互動,三方串連打造更加自由、更加立體的互動空間"
"finishDate": "2021-10-13T00:00:00.000Z"
"id": 5
"title": "Z-axis 為您的演說帶來無限的可能"
"updatedAt": "2021-10-06T07:39:00.778Z"
}
"statusCode": 200
}
```
### 取得所有留言箱
Response Example
```javascript=
{
"ok": 1,
"issuesWithURL": [{
"issue": {
"id": 1,
"title": "祈念之樹留言箱",
"description": "你相信像樟樹祈念,願望就能成真嗎?有沒有什麼思念,害怕說出來?有沒有什麼秘密,想要坦白卻無法開口?有沒有什麼歉意懊悔,已經來不及表達?如果這棵樟樹此刻在面前,你會許下什麼願望?",
"beginDate": "2021-10-07T07:21:18.000Z",
"finishDate": "2021-10-11T07:21:18.000Z",
"isDeleted": false,
"topCommentId": null,
"createdAt": "2021-10-06T07:21:18.000Z",
"updatedAt": "2021-10-06T07:21:18.000Z",
"UserId": 1,
"Comments": [
{
"id": 1,
"nickname": "思念之人",
"content": "思念親像漂流的船隻,感情親像風中的樹影,寂寞陪孤單逗陣來戲弄,笑我找無愛的人",
"likesNum": 6,
"reply": null,
"replyCreateAt": null,
"createdAt": "2021-10-06T07:21:18.000Z",
"updatedAt": "2021-10-06T07:21:18.000Z",
"IssueId": 1,
"guestToken": "allen"
},
{
"id": 2,
"nickname": "Anonymous",
"content": "如果時光倒流回到從前,你是否聽見我的許願,心和心的距離,其實並不遙遠,等待的那個人,總有一天會出現",
"likesNum": 4,
"reply": null,
"replyCreateAt": null,
"createdAt": "2021-10-06T07:21:18.000Z",
"updatedAt": "2021-10-06T07:21:18.000Z",
"IssueId": 1,
"guestToken": "angelina"
}]
},
"url": "0e36ddb504d5ca0cf414fe0fd16fb9bf",
"commentCount": 2
}],
"statusCode": 200
}
```
### 取得單一留言箱
Response Example
```javascript=
{
"ok": 1,
"issue": {
"id": 1,
"title": "祈念之樹留言箱",
"description": "你相信像樟樹祈念,願望就能成真嗎?有沒有什麼思念,害怕說出來?有沒有什麼秘密,想要坦白卻無法開口?有沒有什麼歉意懊悔,已經來不及表達?如果這棵樟樹此刻在面前,你會許下什麼願望?",
"beginDate": "2021-10-07T07:21:18.000Z",
"finishDate": "2021-10-11T07:21:18.000Z",
"isDeleted": false,
"topCommentId": 0,
"createdAt": "2021-10-06T07:21:18.000Z",
"updatedAt": "2021-10-07T13:30:32.000Z",
"UserId": 1
},
"statusCode": 200
}
```
### 取得單一留言箱分析資料
Response Example
```javascript=
{
"ok": 1,
"data": [
{
"date": "2021-10-05",
"likes": 0,
"comments": 0,
"replies": 0
},{
"date": "2021-10-06",
"likes": 8,
"comments": 2,
"replies": 0
},{
"date": "2021-10-07",
"likes": 1,
"comments": 3,
"replies" 0
},{
"date": "2021-10-08",
"likes": 0,
"comments": 0,
"replies": 0
},{
"date": "2021-10-09",
"likes": 0,
"comments": 0,
"replies": 0
}],
"statusCode": 200
}
```
### 編輯留言箱
Request Example
```javascript=
{
"title": "Z-axis 為您的演說帶來無限的可能",
"description": "在虛擬的網路世界中,Z-axis 將連結您(代表 x)與觀眾(代表 y)的即時多人互動,三方串連打造更加自由、更加立體的互動空間",
"beginDate": "2021-11-13",
"finishDate": "2021-11-15"
}
```
Response Example
```javascript=
{
"ok": 1,
"message": "更新成功",
"statusCode": 200
}
```
### 刪除留言箱
Response Example
```javascript=
{
"ok": 1,
"message": "刪除成功",
"statusCode": 200
}
```
## Comment
### 創立留言
Request Example
```javascript=
{
"nickname": "夢幻旅人",
"content": "夢幻仙境~翡翠谷,穿過古隧道後,有超美的水簾瀑布,適合拍照打卡"
}
```
Response Example
```javascript=
{
"ok": 1,
"message": '新增留言成功',
"comment": {
"id": 4,
"nickname": "夢幻旅人",
"content": "夢幻仙境~翡翠谷,穿過古隧道後,有超美的水簾瀑布,適合拍照打卡",
"likesNum": 6,
"reply": null,
"replyCreateAt": null,
"createdAt": "2021-10-06T07:21:18.000Z",
"updatedAt": "2021-10-06T07:21:18.000Z",
"IssueId": 2,
"guestToken": "angelina"
},
"statusCode": 200
}
```
### 取得所有留言
Response Example
```javascript=
{ "ok": 1,
"comments": [
{
"id": 3,
"nickname": "秘境遊俠",
"content": "清水斷崖,可以體驗立槳 SUP,享受徜徉在太平洋上的壯闊景色","likesNum":2,"reply":"上個月剛好有去玩,立槳超好玩,教練很會拍照",
"replyCreateAt": "2021-10-06T07:21:18.000Z",
"createdAt": "2021-10-06T07:21:18.000Z",
"updatedAt": "2021-10-07T13:02:32.000Z",
"IssueId": 2,
"guestToken": "didi"
},{
"id": 4,
"nickname": "夢幻旅人",
"content": "夢幻仙境~翡翠谷,穿過古隧道後,有超美的水簾瀑布,適合拍照打卡",
"likesNum": 6,
"reply": null,
"replyCreateAt": null,
"createdAt": "2021-10-06T07:21:18.000Z",
"updatedAt": "2021-10-07T13:02:33.000Z",
"IssueId": 2,
"guestToken": "angelina"
}],
"statusCode": 200
}
```
### 編輯留言
Request Example
```javascript=
{
"nickname": "Octopus",
"content": "Swimming is great."
}
```
Response Example
```javascript=
{
"ok": 1,
"message": "編輯留言成功",
"statusCode": 200
}
```
### 編輯回覆
Request Example
```javascript=
{
"reply": "動物星球頻道很棒"
}
```
Response Example
```javascript=
{
"ok": 1,
"message": "編輯回覆成功",
"statusCode": 200
}
```
### 置頂留言
Response Example
```javascript=
{
"ok": 1,
"message": "置頂成功",
"statusCode": 200
}
```
### 按讚留言
Response Example
```javascript=
{
"ok": 1,
"message": "按讚成功",
"statusCode": 200
}
```
### 刪除留言
Response Example
```javascript=
{
"ok": 1,
"message": "刪除留言成功",
"statusCode": 200
}
```
## Guest
### 註冊訪客
Response Example
```javascript=
{
"ok": 1,
"message": "新增 guest 成功",
"guest":{
"id": 5,
"guestToken": "728v1vnb",
"updatedAt": "2021-10-06T08:04:03.236Z",
"createdAt": "2021-10-06T08:04:03.236Z"
},
"statusCode": 200
}
```