---
# System prepended metadata

title: Scottish

---

# Scottish

[TOC]

## 共用
### 取得關鍵字搜尋結果
**Router Api Url :`/Token/create_ap_token`**
**Service Api Url : `/Token/create_ap_token`**
**Api 呼叫方式 : `POST`**
| Body 參數  | 格式 | 必填 |說明 |
| :- |:-:| :-:| -:|
| Section | string | * | 搜尋文字 |

**Response**
```bson 
{
   "Code": "1",
   "Result": [
      {
        ID:,
        Name:"",
      },
       ...
   ],
}
```

### 取得分類表
**Router Api Url :`classify`**
**Service Api Url : `classify`**
**Api 呼叫方式 : `GET`**

**Response**
```bson 
{
   "Code": "1",
   "Result": [
       {
          ID: <Unit.ID>,
          Name: <Unit.Name>,
          Item: [
              {
               ID: <MainClassify.ID>,
               Name: "",
               Item: [
                  {
                   ID: <SubClassify.ID>,
                   Name: "",
                  },
                  ...
               ]  
             },
             ...
         ]
      },
      ...
   ],
}
```

## 前台
### 取得熱門關鍵字
**Router Api Url :`front/hot/keywords`**
**Service Api Url : `front/hot/keywords`**
**Api 呼叫方式 : `GET`**
| Body 參數  | 格式 | 必填 |說明 |
| :- |:-:| :-:| -:|
| Count | int | * | 數量 |

**Response**
```bson
{
  "Code": 1,
  "Result": [
    {
      ID:"",
      Name:"",
    },
    ...
  ]
}
```

### 取得最新影音 TV
**Router Api Url :`front/newest/tv`**
**Service Api Url : `front/newest/tv`**
**Api 呼叫方式 : `GET`**

**Response**
```bson
{
  "Code": 1,
  "Result": "http://.."
}
```

### 取得關注話題
**Router Api Url :`front/news/top`**
**Service Api Url : `front/news/top`**
**Api 呼叫方式 : `GET`**

**Response**
```bson
{
  "Code": 1,
  "Result": {
     Newest: [
       {
         ID: "",
         Title: "",
       },
       ...
     ],
     Random: [
       {
         ID: "",
         Title: "",
       },
       ...
     ],
  }
}
```
### 取得關注話題(特定頁面)
**Router Api Url :`front/news/specific`**
**Service Api Url : `front/news/specific`**
**Api 呼叫方式 : `GET`**
| Body 參數  | 格式 | 必填 |說明 |
| :- |:-:| :-:| -:|
| Unit | int | * | 單元流水號 |

**Response**
```bson
{
  "Code": 1,
  "Result": [
       {
         ID: "",
         Title: "",
       },
       ...
    ],
}
```


### 取得新聞
**Router Api Url :`front/news/list`**
**Service Api Url : `front/news/list`**
**Api 呼叫方式 : `GET`**
| Body 參數  | 格式 | 必填 |說明 |
| :- |:-:| :-:| -:|
| Unit | int |  | 單元流水號 |
| MainClassify | int |  | 主分類流水號 |
| SubClassify | int |  | 子分類流水號 |
| Count | int | * | 數量 |

**Response**
```bson
{
  "Code": 1,
  "Result": [
    {
       ID:,
       Title: "",
       Author:"",
       PublishTime:"",
       Cover: {
         Url:"",
         Title:"",
       }
    },
    ...
  ]
}
```
> 流水號擇一必填

### 搜尋文章
**Router Api Url :`front/news/search`**
**Service Api Url : `front/news/search`**

**Api 呼叫方式 : `GET`**
| Body 參數  | 格式 | 必填 |說明 |
| :- |:-:| :-:| -:|
| Key | string |  | 搜尋文字 |
| Keywords| []int | | 關鍵字 |
| Unit | int | | 單元 |
| MainClassify | int| | 主分類 |
| SubClassify | int | | 子分類 |
 
**Response**
```bson
{
  "Code": 1,
  "Result": [
    {
       ID:,
       Title: "",
       Abstract:"",
       PublishTime:"",
       Author: "",
       Unit:,
       CoverUrl: {
           Url:"",
           Title:""
       },
       Keywords: {
           <ID>: <Name>
       },
    },
    ...
  ]
}
```
### 取得內文
**Router Api Url :`front/news`**
**Service Api Url : `front/news`**
**Api 呼叫方式 : `GET`**
| Body 參數  | 格式 | 必填 |說明 |
| :- |:-:| :-:| -:|
| ID | int | * | 文章流水號 |

**Response**
```bson
{
  "Code": 1,
  "Result": {
       Title: "",
       PublishTime:"",
       Content:"",  
       Author: "",
       Cover: {
           Url:"",
           Title:"",
       },
       Keywords: {
          <ID>: <Name>
       },
  }
}
```


## 後台

### 取得新聞列表
**Router Api Url :`news/list`**
**Service Api Url : `news/list`**
**Api 呼叫方式 : `GET`**
| Header 參數  | 格式 | 必填 |說明 |
| :--- |:---:| :---:| ---:|
| ApiToken | string | * | 授權令牌 |

| Body 參數  | 格式 | 必填 |說明 |
| :--- |:---:| :---:| ---:|
| Title | string | | 標題 |
| Unit | int | | 主單元 |
| MainClassify | int || 主分類 |
| SubClassify| int|| 次分類|
| Keywords| []int || 關鍵字(選填時，Unit 為必填) |
| Status | int | | 文章狀態
| Author| string || 作者 |
| Operator | string || 更新人員 |
| Approver | string || 審核人員 |
| StartTime | string || 更新時間開始 | 
| EndTime | string || 更新時間結束 |
| Page | int | * | 頁數|
| Count| int| * | 數量|
> 文章狀態 → 1:退件 2:草稿 3:審核中 4:待發佈 5:已公開

**Response**

```bson
{
  "Code": "1",
  "Resutl": [
    {
      Title: "",
      Unit: ,
      MainClassify:,
      SubClassify:,
      Keywords: {
         <ID>:<Name>,
         ...
      },
      Hits: 0,
      PublishTime: "",
      UpdateTime: "",
      Author: "",
      Operator: "",
      ApproveID: 0, // 審核用的 ID
      Approver: "",
      Status:,
    },
    ...
  ],
}
```
> 專欄： Unit 強制給予

### 取得新聞
**Router Api Url :`news`**
**Service Api Url : `news`**
**Api 呼叫方式 : `GET`**
| Header 參數  | 格式 | 必填 |說明 |
| :--- |:---:| :---:| ---:|
| ApiToken | string | * | 授權令牌 |

| Body 參數  | 格式 | 必填 |說明 |
| :- |:-:| :-:| -:|
| ID | int | * | 新聞流水號 |

**Response**
```bson
{
   "Code": "1",
   "Result": {
       Author:"",
       Title:"",
       Abstract:"", // 描述
       Unit:0,
       MainClassify:0,
       SubClassify:0,
       VideoUrl:"",
       CoverUrl:"",
       CoverDesc:"",
       RssImgShow:,
       Keywords: {
           1: "A",
       },
       Content:"",
   }
}
```

### 新增新聞
**Router Api Url :`news`**
**Service Api Url : `news`**
**Api 呼叫方式 : `POST`**
| Header 參數  | 格式 | 必填 |說明 |
| :--- |:---:| :---:| ---:|
| ApiToken | string | * | 授權令牌 |

| Body 參數  | 格式 | 必填 |說明 |
| :- |:-:| :-:| -:|
| Author | string |* | 作者 |
| Title | string | * | 標題 |
| Abstract | string | * | 描述 |
| Unit| int | * | 單元 |
| MainClassify| int| * | 主分類 |
| SubClassify| int|| 子分類 |
| CoverUrl| string| * | 圖片位罝 |
| CoverDesc| string || 圖片描述 |
| RssImgShow| int | * | RSS 圖片顯示(1: 否 2: 是)|
| Keyword | []Any | * | 關鍵字 |
| Content| string | * | 內文 |
**Response**
```bson
{
   "Code": "1",
   "Result": null
}
```
> Keyword: 已建立的關鍵字給 int, 沒建立過的給 string

### 編輯新聞
**Router Api Url :`news`**
**Service Api Url : `news`**
**Api 呼叫方式 : `PUT`**
| Header 參數  | 格式 | 必填 |說明 |
| :--- |:---:| :---:| ---:|
| ApiToken | string | * | 授權令牌 |

| Body 參數  | 格式 | 必填 |說明 |
| :- |:-:| :-:| -:|
| ID | int | * | 新聞流水號 |
| Author | string |  | 作者 |
| Title | string |  | 標題 |
| Abstract | string |  | 描述 |
| Unit| int |  | 單元 |
| MainClassify| int |  | 主分類 |
| SubClassify| int || 子分類 |
| CoverUrl| string |  | 圖片位罝 |
| CoverDesc| string || 圖片描述 |
| RssImgShow| int |  | RSS 圖片顯示|
| Keyword | []int |  | 關鍵字 |
| Content| string |  | 內文 |
| Status | int | * | 狀態 |

**Response**
```bson
{
   "Code": "1",
   "Result": null
}
```
> 文章狀態 → 2:草稿 3:審核中

### 刪除新聞
**Router Api Url :`news`**
**Service Api Url : `news`**
**Api 呼叫方式 : `DELETE`**
| Header 參數  | 格式 | 必填 |說明 |
| :--- |:---:| :---:| ---:|
| ApiToken | string | * | 授權令牌 |

| Body 參數  | 格式 | 必填 |說明 |
| :- |:-:| :-:| -:|
| ID | []int | * | 新聞流水號 |

**Response**
```bson
{
   "Code": "1",
   "Result": null
}
```

### 取得待審核數量
**Router Api Url :`underAudit`**
**Service Api Url : `underAudit`**

**Event：`UnderAuditNumber`**

**Protocol :`socket.io`**
| Header 參數  | 格式 | 必填 |說明 |
| :--- |:---:| :---:| ---:|
| ApiToken | string | * | 授權令牌 |

**Response**
```bson
{
  "Code": "1",
  "Resutl": {
    <單元 ID>: <數量>,
    <單元 ID>: <數量>,
    <單元 ID>: <數量>
  }  
}
```

### 取得新聞審核紀錄
**Router Api Url :`news/audit`**
**Service Api Url : `news/audit`**
**Api 呼叫方式 : `GET`**
| Header 參數  | 格式 | 必填 |說明 |
| :--- |:---:| :---:| ---:|
| ApiToken | string | * | 授權令牌 |

| Body 參數  | 格式 | 必填 |說明 |
| :- |:-:| :-:| -:|
| ID | int | * | 新聞流水號 |

**Response**
```bson 
{
   "Code": "1",
   "Result": [
      {
         Sender:"",
         SendTime:"",
         Approver:"",
         ApproverTime: "",
         Status: ,
         Remark:""
      },
      ...
   ],
}
```
> 紀錄本身會依建立時的 ID 排序 ASC，即第 0 筆資料為第一次審核

### 新聞審核
**Router Api Url :`news/audit`**
**Service Api Url : `news/audit`**
**Api 呼叫方式 : `PUT`**
| Header 參數  | 格式 | 必填 |說明 |
| :--- |:---:| :---:| ---:|
| ApiToken | string | * | 授權令牌 |

| Body 參數  | 格式 | 必填 |說明 |
| :- |:-:| :-:| -:|
| ID | int | * | 新聞流水號 |
| Remark | string || 審核備註 |
| Status | int | * | 狀態 |
| PublishTime | string |  | 公開時間 |

**Response**
```bson
{
   "Code": "1",
   "Result": null
}
```

### 取得審核紀錄列表
**Router Api Url :`news/audit/list`**
**Service Api Url : `news/audit/list`**
**Api 呼叫方式 : `GET`**
| Header 參數  | 格式 | 必填 |說明 |
| :--- |:---:| :---:| ---:|
| ApiToken | string | * | 授權令牌 |

| Body 參數  | 格式 | 必填 |說明 |
| :--- |:---:| :---:| ---:|
| Title | string | | 標題 |
| Unit | int || 主單元|
| MainClassify | int || 主分類 |
| SubClassify| int|| 次分類|
| Keywords| []int || 關鍵字 |
| Status | int | | 文章狀態
| Author| string || 作者 |
| Sender| string || 送審人 |
| StartTime| string | | 更新開始時間 |
| EndTime| string | | 更新結束時間 |
| Page | int | * | 頁數|
| Count| int| * | 數量|
> 文章狀態 → 1:退件 3:審核中 4:待發佈 

**Response**
```bson
{
  "Code": "1",
  "Resutl": [
    {
      Title: "",
      Unit: ,
      MainClassify:,
      SubClassify:,
      Keywords: {
         <ID>:<Name>,
         ...
      },
      UpdateTime: "",
      Author: "",
      Sender: "",
      Status:,
    },
    ...
  ],
}
```

### 取得關鍵字列表
**Router Api Url :`keywords`**
**Service Api Url : `keywords`**
**Api 呼叫方式 : `GET`**
| Header 參數  | 格式 | 必填 |說明 |
| :--- |:---:| :---:| ---:|
| ApiToken | string | * | 授權令牌 |

| Body 參數  | 格式 | 必填 |說明 |
| :--- |:---:| :---:| ---:|
| Section | string | | 關鍵字 |

**Response**
```bson
{
  "Code": "1",
  "Resutl": [
    {
      ID:,
      Name:,
      CountOf: {
         <UnitID>: <Num>,
         ...
      },
      CreateTime:,
    },
    ...
  ],
}
```

### 新增關鍵字
**Router Api Url :`keyword`**
**Service Api Url : `keyword`**
**Api 呼叫方式 : `POST`**
| Header 參數  | 格式 | 必填 |說明 |
| :--- |:---:| :---:| ---:|
| ApiToken | string | * | 授權令牌 |

| Body 參數  | 格式 | 必填 |說明 |
| :--- |:---:| :---:| ---:|
| Name | string | * | 關鍵字 |

**Response**
```bson
{
  "Code": "1",
  "Resutl": null
}
```

### 編輯關鍵字
**Router Api Url :`keyword`**
**Service Api Url : `keyword`**
**Api 呼叫方式 : `PUT`**
| Header 參數  | 格式 | 必填 |說明 |
| :--- |:---:| :---:| ---:|
| ApiToken | string | * | 授權令牌 |

| Body 參數  | 格式 | 必填 |說明 |
| :--- |:---:| :---:| ---:|
| ID | int | * | 關鍵字水流號 |
| Name | string | * | 關鍵字 |

**Response**
```bson
{
  "Code": "1",
  "Resutl": null,
}
```

### 刪除關鍵字
**Router Api Url :`keyword`**
**Service Api Url : `keyword`**
**Api 呼叫方式 : `DELETE`**
| Header 參數  | 格式 | 必填 |說明 |
| :--- |:---:| :---:| ---:|
| ApiToken | string | * | 授權令牌 |

| Body 參數  | 格式 | 必填 |說明 |
| :--- |:---:| :---:| ---:|
| ID | int | * | 關鍵字水流號 |


**Response**
```bson
{
  "Code": "1",
  "Resutl": null,
}
```

### 上傳圖片
**Router Api Url :`image`**
**Service Api Url : `image`**
**Api 呼叫方式 : `POST`**
| Header 參數  | 格式 | 必填 |說明 |
| :--- |:---:| :---:| ---:|
| ApiToken | string | * | 授權令牌 |

| Body 參數  | 格式 | 必填 |說明 |
| :- |:-:| :-:| -:|
| File | file | * | 檔案|
```bson
{
   "Code": "1",
   "Result": "https://tp-dev-tsna.s3-ap-northeast-1.amazonaws.com/article/1/1_zXuj6k.png"
}
```
> 用於處理內文中的圖片

### 刪除圖片
**Router Api Url :`image/del`**
**Service Api Url : `image/del`**
**Api 呼叫方式 : `POST`**
| Header 參數  | 格式 | 必填 |說明 |
| :--- |:---:| :---:| ---:|
| ApiToken | string | * | 授權令牌 |

| Body 參數  | 格式 | 必填 |說明 |
| :- |:-:| :-:| -:|
| Path |  string | * | 圖片路徑 |
> Domain: `https://tp-dev-tsna.s3-ap-northeast-1.amazonaws.com/article/`
> Path: `1/1_zXuj6k.png` 
```bson
{
   "Code": "1",
   "Result": null
}
```

