API說明文件
===
[TOC]
###### tags: `Smart Construction`
# Host
- Main Server
- Development: `http://localhost:3000/`
- Production: `http://35.221.204.113:3000/`
- Object Detection Server
- Production: `http://34.80.209.101:8000/predict`
# auth: 身份認證
## `POST`/auth/register : ==使用者註冊==
### Request
:::info
#### HEADERS
`Content-Type:application/json`
#### BODY
```json
{
"name": "Cody Chen",
"corporation": "臺大BIM中心",
"email": "cdxvy30@caece.net",
"password": "123",
}
```
:::
### Response
:::success
#### STATUS
`200`
#### HEADERS
`Content-Type:application/json`
#### BODY
```json
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJkNWIxZGNkOS0xNThlLTQ0MjYtOTAyZC04ZTY4MmZiOGNkM2QiLCJpYXQiOjE2NzM2MDYzNDEsImV4cCI6MTY3MzY5Mjc0MX0.Q7Z_dj6nuI1Gd2j6_UKjw4P8Ci8-sNUQ5r3S05c1Khg",
"user": {
"uuid": "d5b1dcd9-158e-4426-902d-8e682fb8cd3d",
"name": "Cody Chen",
"corporation": "臺大BIM中心",
"email": "cdxvy30@caece.net",
"permission": "訪客",
"job": "訪客"
}
}
```
:::
:::danger
#### STATUS
`401`
#### HEADERS
`Content-Type:application/json`
#### BODY
```json
{
"使用者已存在"
}
```
:::
## `POST`/auth/login : ==使用者登入==
### Request
:::info
#### HEADERS
`Content-Type:application/json`
#### BODY
```json
{
"email": "cdxvy30@caece.net",
"password": "123"
}
```
:::
### Response
:::success
#### STATUS
`200`
#### HEADERS
`Content-Type:application/json`
#### BODY
```json
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJkNWIxZGNkOS0xNThlLTQ0MjYtOTAyZC04ZTY4MmZiOGNkM2QiLCJpYXQiOjE2NzM2MDYzNDEsImV4cCI6MTY3MzY5Mjc0MX0.Q7Z_dj6nuI1Gd2j6_UKjw4P8Ci8-sNUQ5r3S05c1Khg",
"user": {
"uuid": "d5b1dcd9-158e-4426-902d-8e682fb8cd3d",
"name": "Cody Chen",
"corporation": "臺大BIM中心",
"email": "cdxvy30@caece.net",
"permission": "管理員",
"job": "開發人員"
}
}
```
:::
:::danger
#### STATUS
`401`
#### HEADERS
`Content-Type:application/json`
#### BODY
```json
{
"使用者不存在或密碼錯誤"
}
```
:::
## `POST`/auth/logout : ==使用者登出==
### Request
:::info
#### AUTHORIZATION
`Type:Bearer Token`
#### HEADERS
`Content-Type:application/json`
#### BODY
```json
{
"user_uuid": "d5b1dcd9-158e-4426-902d-8e682fb8cd3d"
}
```
:::
### Response
:::success
#### STATUS
`200`
#### HEADERS
`Content-Type:application/json`
#### BODY
```json
{
"您已登出"
}
```
:::
# users : 獲取使用者清單
## `GET`/users/all : ==[管理員]獲取所有使用者==
### Request
:::info
#### AUTHORIZATION
`Type:Bearer Token`
#### HEADERS
`Content-Type:application/json`
#### BODY
`NULL`
:::
### Response
:::success
#### STATUS
`200`
#### HEADERS
`Content-Type:application/json`
#### BODY
```json
[
{
"user_id": "41d4a21f-67f7-4bb4-a3c8-38585f20ded1",
"user_name": "林之謙",
"user_corporation": "臺大BIM中心",
"user_permission": "管理員",
"user_job": "教授"
},
...
]
```
:::
## `GET`/users/:corporation : ==[公司負責人]獲取公司內所有使用者==
### Request
:::info
#### AUTHORIZATION
Type: Bearer Token
#### HEADERS
`Content-Type:application/json`
#### BODY
`NULL`
#### PARAMETERS
`corporation`: String of corporation name.
:::
### Response
:::success
#### STATUS
`200`
#### HEADERS
`Content-Type:application/json`
#### BODY
```json
[
{
"user_id": "81c46dda-efab-462e-9845-2bd39ace8b33",
"user_name": "葉奕昌",
"user_corporation": "豐譽營造股份有限公司",
"user_permission": "專案管理員",
"user_job": "專任工程人員"
},
...
]
```
:::
# projects : 新增、獲取、刪除、編輯專案
## `POST`/projects : ==新增專案==
### Request
:::info
#### AUTHORIZATION
Type: Bearer Token
#### HEADERS
`Content-Type:multipart/form-data`
#### BODY
```json
{
"metadata": {
"name": "國立台灣大學人文館",
"address": "臺北市大安區新生南路三段",
"corporation": "豐譽營造股份有限公司",
"manager": "陳仁崇",
"inspector": "陳仁崇",
"email": "fyAdminA@gmail.com"
},
"project_thumbnail": file
}
```
:::
### Response
:::success
#### STATUS
`200`
#### HEADERS
`Content-Type:application/json`
#### BODY
```json
{
"path": "images/豐譽營造股份有限公司_國立台灣大學人文館_thumbnail.jpg",
"message": "新增成功"
}
```
:::
## `GET`/projects/all : ==[管理員]獲取所有專案==
## `GET`/projects/:corporation : ==獲取專案==
## `GET`/projects/thumbnail/:id : ==獲取專案縮圖==
## `DELETE`/projects/:id : ==刪除專案==(in progress)
## `PATCH`/projects/:id : ==編輯專案==(in progress)
# issues : 新增、獲取、刪除、編輯缺失
# manage : 管理使用者身份