# 廣告
---
API 清單
- 共用[APP/WEB]
- [廣告版位列表](#廣告版位列表)
- 廣告管理[WEB]
- [廣告商列表](#廣告商列表)
- [廣告類別預設版位列表](#廣告類別預設版位列表)
- [取得上傳網址](#取得上傳網址)
- [廣告管理列表](#廣告管理列表)
- [取得單一廣告管理明細](#取得單一廣告管理明細)
- [新增廣告](#新增廣告)
- [編輯廣告](#編輯廣告)
- [編輯廣告下架日期](#編輯廣告下架日期)
- [刪除廣告](#刪除廣告)
- [取得廣告統計](#取得廣告統計)
- 廣告[APP]
- [廣告投放](#廣告投放)
- [取得廣告明細](#取得廣告明細)
- [廣告點擊](#廣告點擊)
- [廣告觸及](#廣告觸及)
- [取得會員專屬廣告列表](#取得會員專屬廣告列表)
---
## 廣告版位列表
```url
GET /ads/positions
```
#### Request
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
```javascript
```
#### Response
欄位 | 型態 | 說明
--- | --- | ---
id | string | 版位id, <br/>MY_MEMBER_ONLY:我的-會員專屬<br/>MY_HEALTH_EDU:我的-防疫衛教<br/>MY_HEALTH_ANALYSIS:我的-健康分析<br/>MY_CONSULT:我的-諮詢回覆<br/>MY_REWARD:我的-點收記錄<br/>HEALTH_MEASURE:健康-量測分析<br/>HEALTH_SPORT:健康-運動分析<br/>HEALTH_DIET:健康-飲食分析<br/>HEALTH_REPORT:健康-健康報告<br/>HEALTH_TREND:健康-健康趨勢<br/>HEALTH_WOUND:健康-傷口記錄
description | string | 版位名稱(說明)
```javascript
{
"httpCode": 200,
"result": {
"data": [
{
"description": "我的-會員專屬",
"id": "MY_MEMBER_ONLY"
},
{
"description": "我的-防疫衛教",
"id": "MY_HEALTH_EDU"
},
...
]
}
}
```
## 廣告商列表
```url
GET /ads-mgmt/ad-tenant-list
```
#### Request
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
```javascript
```
#### Response
欄位 | 型態 | 說明
--- | --- | ---
id | string | 廣告商租戶id
name | string | 廣告商租戶名稱
tenantType | string | 租戶類別, DEALER: 經銷單位, HOSPITAL:醫療機構, WMT:緯創醫學, BUSINESS:企業客戶, AD:廣告商
industryTypeList | string array | 租戶業別列表, HEALTH_CHECK_CENTER:健檢中心, GYM:健身房, CLINIC:診所, REGIONAL_HOSPITAL:區域醫院, MEDICAL_CENTER:醫學中心, HEALTH_SUPPLEMENT:保健品業者, MEDICAL_DEVICE:醫療器材業者, CATERING:餐飲業者, CONSUMABLES:耗材業者, OTHER:其他
```javascript
{
"httpCode": 200,
"result": {
"data": [
{
"id": "7daf1fc2-e7e6-4642-90a8-ff11f0febbe2",
"name": "賣廣告的",
"tenantType": "AD",
"industryTypeList": [
"GYM",
"HEALTH_SUPPLEMENT"
]
},
{
"id": "71466c25-e4a5-46df-bdb0-46ed44fcd5cc",
"name": "opo2",
"tenantType": "BUSINESS",
"industryTypeList": [
"OTHER"
]
},
...
]
}
}
```
## 廣告類別預設版位列表
```url
GET /ads-mgmt/category-positions
```
#### Request
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
```javascript
```
#### Response
欄位 | 型態 | 說明
--- | --- | ---
category | string | 廣告類別, HEALTH_CHECK_CENTER:健檢中心, GYM:健身房, CLINIC:診所, REGIONAL_HOSPITAL:區域醫院, MEDICAL_CENTER:醫學中心, HEALTH_SUPPLEMENT:保健品業者, MEDICAL_DEVICE:醫療器材業者, CATERING:餐飲業者, CONSUMABLES:耗材業者, OTHER:其他
positions | string array | 版位id列表,
```javascript
{
"httpCode": 200,
"result": {
"data": [
{
"positions": [
"MY_HEALTH_EDU",
"MY_HEALTH_ANALYSIS",
"HEALTH_MEASURE",
"HEALTH_REPORT",
"HEALTH_TREND"
],
"category": "HEALTH_CHECK_CENTER"
},
...
]
}
}
```
## 取得上傳網址
```url
POST /ads-mgmt/get-upload-url
```
* 新增/編輯廣告時用來上傳縮圖, 廣告圖/影片, 廣告檔案(PDF)
#### Request
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
isMultipart | boolean | Y | false | 是否使用分段上傳
isThumbnail | boolean | Y | false | 上傳的是否為縮圖
fileName | String | Y | | 檔名,不包含副檔名,限制最多50字
fileType | String | Y | | 副檔名, 限制最多10字
totalPart | int | **N** (isMultipart=false)<br>**Y** (isMultipart=true) | | 總分塊數量,不可小於2
parts | Array [...part] | **N** (isMultipart=false)<br>**Y** (isMultipart=true) | | part 資訊
* part(Object)
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
chunkSize | int | Y | | 該 chunk 的大小, bytes
md5 | string | Y | | 該 part 的 md5
part | int | Y | | part number, 第幾塊 chunk
```javascript
// 單檔
{
"isMultipart": false,
"isThumbnail": false,
"fileName": "ad_bg_jp",
"fileType": "png"
}
// 分塊上傳
{
"isMultipart": true,
"isThumbnail": false,
"fileName": "giphy (7)",
"fileType": "mp4",
"totalPart": 2,
"parts": [
{
"chunkSize": 5242880,
"md5": "5AACA89868CD486D81192221CF9F9415",
"part": 1
},
{
"chunkSize": 3145728,
"md5": "5AACA89868CD486D81192221CF9F9415",
"part": 2
}
]
}
```
#### Response
* data
欄位 | 型態 | 說明
--- | --- | ---
objectKey | string | storage 中的 objectKey, **unique**
uploadId | string | 識別該次上傳的 uploadId
fileName | string | 名稱
fileType | string | 副檔名
url | string | 單檔上傳的時候,才會回傳該 url, 時效 3600 秒
parts | [...part] | multipart上傳各part的url
* part(Object)
欄位 | 型態 | 說明
--- | --- | ---
chunkSize | int | 該 chunk 的大小, bytes
md5 | string | 該 part 的 md5
part | int | part number, 第幾塊 chunk
url | string | 可上傳的 url, 時效 3600 秒
```javascript
// HttpStatus:422, 上傳的檔案類型不允許
{
"errorMsg": "SERVICE_ERROR.ADS_MGMT_UPLOAD_FILE_TYPE_NOT_ALLOWED",
"httpCode": 422
}
// HttpStatus: 200
// 單檔
{
"httpCode": 200,
"result": {
"data": {
"objectKey": "ads/9f9de11b-12b9-4964-bae8-3233e9da065b.png",
"uploadId": "11becd09-7571-4b0d-b8ee-cb3f09f66cf0",
"fileName": "ad_bg_jp",
"fileType": "png",
// 單檔 才有 url
"url": "http://192.168.100.239:12345/v1/AUTH_test/kmuh/ads%2F9f9de11b-12b9-4964-bae8-3233e9da065b.png?temp_url_sig=e61d9e721d860294bde4d0151e111ebf8ed57ed7&temp_url_expires=1554114780"
}
}
}
// 分塊上傳
{
"httpCode": 200,
"result": {
"data": {
"objectKey": "ads/f76adf26-1e22-4b18-980d-b9a68efc5171.mp4",
"uploadId": "53fde368-43d9-455f-a610-62091fc30be6",
"fileName": "giphy (7)",
"fileType": "mp4",
"parts": [
{
"chunkSize": 5242880,
"md5": "5AACA89868CD486D81192221CF9F9415",
"part": 1,
"url": "http://192.168.100.239:12345/v1/AUTH_test/kmuh_segments/ads%2Ff76adf26-1e22-4b18-980d-b9a68efc5171.mp4%2F1?temp_url_sig=796c52b00f75b62be658533b2fadbc7f14381e36&temp_url_expires=1554263771"
},
{
"chunkSize": 3145728,
"md5": "5AACA89868CD486D81192221CF9F9415",
"part": 2,
"url": "http://192.168.100.239:12345/v1/AUTH_test/kmuh_segments/ads%2Ff76adf26-1e22-4b18-980d-b9a68efc5171.mp4%2F2?temp_url_sig=ad71de81dfbcd94bce4a091f2630c6f1373ff3cd&temp_url_expires=1554263771"
}
]
}
}
}
```
## 廣告管理列表
```url
POST /ads-mgmt/list
```
#### Request
* query(查詢條件json)
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
onDateStart | string | | | 上架日期查詢起日, 格式為YYYY-MM-DD
onDateEnd | string | | | 上架日期查詢迄日, 格式為YYYY-MM-DD
industryType | string | | | 廣告商業別, 若查詢全部請帶入空字串"", HEALTH_CHECK_CENTER:健檢中心, GYM:健身房, CLINIC:診所, REGIONAL_HOSPITAL:區域醫院, MEDICAL_CENTER:醫學中心, HEALTH_SUPPLEMENT:保健品業者, MEDICAL_DEVICE:醫療器材業者, CATERING:餐飲業者, CONSUMABLES:耗材業者, OTHER:其他
status | string | | | 廣告上架狀態, 若查詢全部請帶入空字串"", NONE:未上架, ON:上架中, OFF:已下架
paymentStatus | string | | | 付費狀態, 若查詢全部請帶入空字串"", NONE:不需計費, UNPAID:未付費, PAID:已付費
name | string | | | 關鍵字, 查詢廣告標題或廣告商名稱
positions | string array | | | 廣告版位id列表, 若查詢全部請帶入空陣列[]
* pagination(分頁json)
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
current | int | | 1 | 當前頁數
pageSize | int | | 10 | 每頁結果數量,-1 為顯示所有
* sorter(排序json), 預設是用更新時間降序排列
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
field | string | | updateTime | 排序欄位,可排序欄位有updateTime, tenantName, onDate, offDate, paymentStatus, status
order | string | | desc | 生序或降序
```javascript
{
"query": {
"onDateStart": null,
"onDateEnd": null,
"industryType": "",
"status": null,
"paymentStatus": null,
"name": null,
"positions":[
"HEALTH_MEASURE",
"MY_REWARD"
]
},
"pagination": {
"current": 1,
"pageSize": 10
},
"sorter": {
"field": "updateTime",
"order": "desc"
}
}
```
#### Response
欄位 | 型態 | 說明
--- | --- | ---
id | string | 廣告id
tenantId | string | 廣告商租戶id
tenantName | string | 廣告商租戶名稱
title | string | 廣告標題
adType | string | 廣告類型, URL:連結, FILE:檔案, IMAGE:圖片, CONTENT:文字內容
thumbnailObjectKey | string | storage中的縮圖objectKey
objectKey | string | adType為FILE或IMAGE時, 表示storage 中的 objectKey, adType為URL時, 表示連結的網址
contentType | string | MineType 格式
content | string | adType為CONTENT時所填入的文字內容
onDate | Date | 上架日期
offDate | Date | 下架日期
exposureLevel | string | 曝光等級, NORMAL:一般, HIGH:高
paymentStatus | string | 付費狀況, NONE:不需計費, UNPAID:未付費, PAID:已付費
status | string | 上架狀態, NONE:未上架, ON:上架中, OFF:已下架
thumbnailUrl | string | 可 download 的 縮圖url, 時效 3600 秒
url | string | adType為FILE或IMAGE時,可 download 的 url, 時效 3600 秒, adType為URL時, 表示連結的網址
industryTypeList | json array | 廣告商租戶的業別列表, HEALTH_CHECK_CENTER:健檢中心, GYM:健身房, CLINIC:診所, REGIONAL_HOSPITAL:區域醫院, MEDICAL_CENTER:醫學中心, HEALTH_SUPPLEMENT:保健品業者, MEDICAL_DEVICE:醫療器材業者, CATERING:餐飲業者, CONSUMABLES:耗材業者, OTHER:其他
categoryList | json array | 廣告類別列表, HEALTH_CHECK_CENTER:健檢中心, GYM:健身房, CLINIC:診所, REGIONAL_HOSPITAL:區域醫院, MEDICAL_CENTER:醫學中心, HEALTH_SUPPLEMENT:保健品業者, MEDICAL_DEVICE:醫療器材業者, CATERING:餐飲業者, CONSUMABLES:耗材業者, OTHER:其他
positionList | string array | 廣告版位列表
createTime | int | 建立時間
updateTime | int | 最後更新時間
* json of industryTypeList/categoryList
欄位 | 型態 | 說明
--- | --- | ---
category | string | 廣告/業別 id
description | string | 廣告/業別名稱(說明)
```javascript
{
"httpCode": 200,
"result": {
"data": [
{
"id": "df2e6892-9ee2-4aab-9990-c5a62d618be2",
"tenantId": "7daf1fc2-e7e6-4642-90a8-ff11f0febbe2",
"tenantName": "賣廣告的",
"title": "TEST-AD-2",
"adType": "URL",
"thumbnailObjectKey": "abcd",
"objectKey": "https://www.google.com",
"onDate": 1630425600000,
"offDate": 1635609600000,
"exposureLevel": "NORMAL",
"paymentStatus": "UNPAID",
"status": "NONE",
"thumbnailUrl": null,
"url": null,
"industryTypeList": [
{
"category": "GYM",
"description": "健身房"
},
{
"category": "HEALTH_SUPPLEMENT",
"description": "保健品業者"
}
],
"categoryList": [
{
"category": "GYM",
"description": "健身房"
},
{
"category": "HEALTH_SUPPLEMENT",
"description": "保健品業者"
}
],
"positionList": [
"HEALTH_MEASURE",
"MY_REWARD"
]
}
],
"pagination": {
"current": 1,
"pageSize": 10,
"total": 1
},
"sorter": {
"field": "updateTime",
"order": "desc"
},
"total": 1
}
}
```
## 取得單一廣告管理明細
```url
POST /ads-mgmt/info
```
#### Request
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
id | string | Y | | 廣告id
```javascript
{
"id": "df2e6892-9ee2-4aab-9990-c5a62d618be2"
}
```
#### Response
欄位 | 型態 | 說明
--- | --- | ---
id | string | 廣告id
tenantId | string | 廣告商租戶id
tenantName | string | 廣告商租戶名稱
title | string | 廣告標題
adType | string | 廣告類型, URL:連結, FILE:檔案, IMAGE:圖片, CONTENT:文字內容
thumbnailObjectKey | string | storage中的縮圖objectKey
objectKey | string | adType為FILE或IMAGE時, 表示storage 中的 objectKey, adType為URL時, 表示連結的網址
contentType | string | MineType 格式
content | string | adType為CONTENT時所填入的文字內容
onDate | Date | 上架日期
offDate | Date | 下架日期
exposureLevel | string | 曝光等級, NORMAL:一般, HIGH:高
paymentStatus | string | 付費狀況, NONE:不需計費, UNPAID:未付費, PAID:已付費
status | string | 上架狀態, NONE:未上架, ON:上架中, OFF:已下架
thumbnailUrl | string | 可 download 的 縮圖url, 時效 3600 秒
url | string | adType為FILE或IMAGE時,可 download 的 url, 時效 3600 秒, adType為URL時, 表示連結的網址
industryTypeList | json array | 廣告商租戶的業別列表, HEALTH_CHECK_CENTER:健檢中心, GYM:健身房, CLINIC:診所, REGIONAL_HOSPITAL:區域醫院, MEDICAL_CENTER:醫學中心, HEALTH_SUPPLEMENT:保健品業者, MEDICAL_DEVICE:醫療器材業者, CATERING:餐飲業者, CONSUMABLES:耗材業者, OTHER:其他
categoryList | json array | 廣告類別列表, HEALTH_CHECK_CENTER:健檢中心, GYM:健身房, CLINIC:診所, REGIONAL_HOSPITAL:區域醫院, MEDICAL_CENTER:醫學中心, HEALTH_SUPPLEMENT:保健品業者, MEDICAL_DEVICE:醫療器材業者, CATERING:餐飲業者, CONSUMABLES:耗材業者, OTHER:其他
positionList | string array | 廣告版位列表
createTime | int | 建立時間
updateTime | int | 最後更新時間
* json of industryTypeList/categoryList
欄位 | 型態 | 說明
--- | --- | ---
category | string | 廣告/業別 id
description | string | 廣告/業別名稱(說明)
```javascript
// HttpStatus:400, 資料不存在
{
"errorMsg": "API_ERROR.NOT_EXIST",
"httpCode": 400
}
// HttpStatus:200
{
"httpCode": 200,
"result": {
"data": {
"id": "df2e6892-9ee2-4aab-9990-c5a62d618be2",
"tenantId": "7daf1fc2-e7e6-4642-90a8-ff11f0febbe2",
"tenantName": "賣廣告的",
"title": "TEST-AD-2",
"adType": "URL",
"thumbnailObjectKey": "abcd",
"objectKey": "https://www.google.com",
"onDate": 1630425600000,
"offDate": 1635609600000,
"exposureLevel": "NORMAL",
"paymentStatus": "UNPAID",
"status": "NONE",
"thumbnailUrl": null,
"url": "https://www.google.com",
"industryTypeList": [
{
"category": "GYM",
"description": "健身房"
},
{
"category": "HEALTH_SUPPLEMENT",
"description": "保健品業者"
}
],
"categoryList": [
{
"category": "GYM",
"description": "健身房"
},
{
"category": "HEALTH_SUPPLEMENT",
"description": "保健品業者"
}
],
"positionList": [
"HEALTH_MEASURE",
"HEALTH_SPORT",
"MY_HEALTH_EDU",
"MY_REWARD"
]
}
}
}
```
## 新增廣告
```url
POST /ads-mgmt/add
```
#### Request
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
tenantId | string | Y | | 廣告商租戶id
title | string | Y | | 廣告標題, 限制最多30字
adType | string | Y | | 廣告類型, URL:連結, FILE:檔案, IMAGE:圖片, CONTENT:文字內容
thumbnailObjectKey | string | Y | | 縮圖objectKey, 先取得縮圖上傳網址並上傳成功,取其 objectKey。
objectKey | string | **Y**(adType= URL/FILE/IMAGE) | | 若adType為FILE/IMAGE, 先取得上傳網址並上傳成功,取其 objectKey。若adType為URL則直接存放URL網址
contentType | string | | | MineType
content | string | **Y**(adType=CONTENT) | | adType為CONTENT時所填入的文字內容, 限制最多500字
onDate | string | | | 上架日期, 日期格式為YYYY-MM-DD
offDate | string | | | 下架日期, 日期格式為YYYY-MM-DD
exposureLevel | string | Y | | 曝光等級, NORMAL:一般, HIGH:高
paymentStatus | string | Y | | 付費狀況, NONE:不需計費, UNPAID:未付費, PAID:已付費
categoryList | string array | Y | | 廣告類別列表, HEALTH_CHECK_CENTER:健檢中心, GYM:健身房, CLINIC:診所, REGIONAL_HOSPITAL:區域醫院, MEDICAL_CENTER:醫學中心, HEALTH_SUPPLEMENT:保健品業者, MEDICAL_DEVICE:醫療器材業者, CATERING:餐飲業者, CONSUMABLES:耗材業者, OTHER:其他
positionList | string array | Y | | 廣告版位列表
isMultipart | boolean | N | | adType=FILE/IMAGE時, 上傳的檔案是否分塊上傳,預設為 false
totalPart | int | **N** (isMultipart=false)<br>**Y** (isMultipart=true) | | 總分塊數量,不可小於2
uploadId | string | **N** (isMultipart=false)<br>**Y** (isMultipart=true) | | 從 /ads-mgmt/get-upload-url 取得的 uploadId
isThumbnailMultipart | boolean | N | | 縮圖上傳時是否分塊上傳,預設為 false
thumbnailTotalPart | int | **N** (isThumbnailMultipart=false)<br>**Y** (isThumbnailMultipart=true) | | 縮圖上傳的總分塊數量,不可小於2
thumbnailUploadId | string | **N** (isThumbnailMultipart=false)<br>**Y** (isThumbnailMultipart=true) | | 從 /ads-mgmt/get-upload-url 取得的 uploadId
```javascript
{
"tenantId": "7daf1fc2-e7e6-4642-90a8-ff11f0febbe2",
"title": "TEST-AD-1",
"adType": "URL",
"thumbnailObjectKey": "ads/thumbnail/1edd53d8-329b-49f3-bd36-8dc89bfad05c.jpg",
"objectKey": "https://www.google.com",
"contentType": null,
"content": null,
"onDate": "2021-08-28",
"offDate": null,
"exposureLevel": "NORMAL",
"paymentStatus": "NONE",
"categoryList": [
"GYM",
"HEALTH_SUPPLEMENT"
],
"positionList": [
"MY_MEMBER_ONLY",
"MY_HEALTH_EDU",
"MY_HEALTH_ANALYSIS",
"MY_REWARD",
"HEALTH_MEASURE",
"HEALTH_SPORT",
"HEALTH_REPORT",
"HEALTH_TREND"
],
"isMultipart": false,
"totalPart": null,
"uploadId": null,
"isThumbnailMultipart": false,
"thumbnailTotalPart": null,
"thumbnailUploadId": null
}
```
#### Response
欄位 | 型態 | 說明
--- | --- | ---
id | string | 廣告id
tenantId | string | 廣告商租戶id
title | string | 廣告標題
adType | string | 廣告類型, URL:連結, FILE:檔案, IMAGE:圖片, CONTENT:文字內容
thumbnailObjectKey | string | storage中的縮圖objectKey
objectKey | string | adType為FILE或IMAGE時, 表示storage 中的 objectKey, adType為URL時, 表示連結的網址
contentType | string | MineType 格式
content | string | adType為CONTENT時所填入的文字內容
onDate | Date | 上架日期
offDate | Date | 下架日期
exposureLevel | string | 曝光等級, NORMAL:一般, HIGH:高
paymentStatus | string | 付費狀況, NONE:不需計費, UNPAID:未付費, PAID:已付費
status | string | 上架狀態, NONE:未上架, ON:上架中, OFF:已下架
createTime | int | 建立時間
updateTime | int | 最後更新時間
```javascript
{
"httpCode": 200,
"result": {
"data": {
"id": "df2e6892-9ee2-4aab-9990-c5a62d618be2",
"tenantId": "7daf1fc2-e7e6-4642-90a8-ff11f0febbe2",
"title": "TEST-AD-1",
"adType": "URL",
"thumbnailObjectKey": "abcd",
"objectKey": "https://www.google.com",
"onDate": 1630425600000,
"exposureLevel": "NORMAL",
"paymentStatus": "NONE",
"status": "NONE",
"createTime": 1630549208878,
"updateTime": 1630549208878,
"creator": "a1131b35-dab0-4593-899b-9485356e02d4"
}
}
}
```
## 編輯廣告
```url
POST /ads-mgmt/update
```
#### Request
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
id | string | Y | | 廣告id
tenantId | string | Y | | 廣告商租戶id
title | string | Y | | 廣告標題, 限制最多30字
adType | string | Y | | 廣告類型, URL:連結, FILE:檔案, IMAGE:圖片, CONTENT:文字內容
thumbnailObjectKey | string | Y | | 縮圖objectKey, 先取得縮圖上傳網址並上傳成功,取其 objectKey。
objectKey | string | **Y**(adType= URL/FILE/IMAGE) | | 若adType為FILE/IMAGE, 先取得上傳網址並上傳成功,取其 objectKey。若adType為URL則直接存放URL網址
contentType | string | | | MineType
content | string | **Y**(adType=CONTENT) | | adType為CONTENT時所填入的文字內容, 限制最多500字
onDate | string | | | 上架日期, 日期格式為YYYY-MM-DD
offDate | string | | | 下架日期, 日期格式為YYYY-MM-DD
exposureLevel | string | Y | | 曝光等級, NORMAL:一般, HIGH:高
paymentStatus | string | Y | | 付費狀況, NONE:不需計費, UNPAID:未付費, PAID:已付費
categoryList | string array | Y | | 廣告類別列表, HEALTH_CHECK_CENTER:健檢中心, GYM:健身房, CLINIC:診所, REGIONAL_HOSPITAL:區域醫院, MEDICAL_CENTER:醫學中心, HEALTH_SUPPLEMENT:保健品業者, MEDICAL_DEVICE:醫療器材業者, CATERING:餐飲業者, CONSUMABLES:耗材業者, OTHER:其他
positionList | string array | Y | | 廣告版位列表
isMultipart | boolean | N | | adType=FILE/IMAGE時, 上傳的檔案是否分塊上傳,預設為 false
totalPart | int | **N** (isMultipart=false)<br>**Y** (isMultipart=true) | | 總分塊數量,不可小於2
uploadId | string | **N** (isMultipart=false)<br>**Y** (isMultipart=true) | | 從 /ads-mgmt/get-upload-url 取得的 uploadId
isThumbnailMultipart | boolean | N | | 縮圖上傳時是否分塊上傳,預設為 false
thumbnailTotalPart | int | **N** (isThumbnailMultipart=false)<br>**Y** (isThumbnailMultipart=true) | | 縮圖上傳的總分塊數量,不可小於2
thumbnailUploadId | string | **N** (isThumbnailMultipart=false)<br>**Y** (isThumbnailMultipart=true) | | 從 /ads-mgmt/get-upload-url 取得的 uploadId
```javascript
{
"id": "df2e6892-9ee2-4aab-9990-c5a62d618be2",
"tenantId": "7daf1fc2-e7e6-4642-90a8-ff11f0febbe2",
"title": "TEST-AD-1",
"adType": "URL",
"thumbnailObjectKey": "ads/thumbnail/1edd53d8-329b-49f3-bd36-8dc89bfad05c.jpg",
"objectKey": "https://www.google.com",
"contentType": null,
"content": null,
"onDate": "2021-08-28",
"offDate": null,
"exposureLevel": "NORMAL",
"paymentStatus": "NONE",
"categoryList": [
"GYM",
"HEALTH_SUPPLEMENT"
],
"positionList": [
"MY_MEMBER_ONLY",
"MY_HEALTH_EDU",
"MY_HEALTH_ANALYSIS",
"MY_REWARD",
"HEALTH_MEASURE",
"HEALTH_SPORT",
"HEALTH_REPORT",
"HEALTH_TREND"
],
"isMultipart": false,
"totalPart": null,
"uploadId": null,
"isThumbnailMultipart": false,
"thumbnailTotalPart": null,
"thumbnailUploadId": null
}
```
#### Response
欄位 | 型態 | 說明
--- | --- | ---
id | string | 廣告id
tenantId | string | 廣告商租戶id
title | string | 廣告標題
adType | string | 廣告類型, URL:連結, FILE:檔案, IMAGE:圖片, CONTENT:文字內容
thumbnailObjectKey | string | storage中的縮圖objectKey
objectKey | string | adType為FILE或IMAGE時, 表示storage 中的 objectKey, adType為URL時, 表示連結的網址
contentType | string | MineType 格式
content | string | adType為CONTENT時所填入的文字內容
onDate | Date | 上架日期
offDate | Date | 下架日期
exposureLevel | string | 曝光等級, NORMAL:一般, HIGH:高
paymentStatus | string | 付費狀況, NONE:不需計費, UNPAID:未付費, PAID:已付費
status | string | 上架狀態, NONE:未上架, ON:上架中, OFF:已下架
createTime | int | 建立時間
updateTime | int | 最後更新時間
```javascript
// HttpStatus:400, 資料不存在
{
"errorMsg": "API_ERROR.NOT_EXIST",
"httpCode": 400
}
// HttpStatus:422, 不允許編輯已下架的廣告
{
"errorMsg": "SERVICE_ERROR.ADS_MGMT_UPDATE_OFF_AD_NOT_ALLOWED",
"httpCode": 422
}
// HttpStatus:200
{
"httpCode": 200,
"result": {
"data": {
"id": "df2e6892-9ee2-4aab-9990-c5a62d618be2",
"tenantId": "7daf1fc2-e7e6-4642-90a8-ff11f0febbe2",
"title": "TEST-AD-1",
"adType": "URL",
"thumbnailObjectKey": "abcd",
"objectKey": "https://www.google.com",
"onDate": 1630425600000,
"exposureLevel": "NORMAL",
"paymentStatus": "NONE",
"status": "NONE",
"createTime": 1630549208878,
"updateTime": 1630549208878,
"creator": "a1131b35-dab0-4593-899b-9485356e02d4"
}
}
}
```
## 編輯廣告下架日期
```url
POST /ads-mgmt/update-off
```
#### Request
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
id | string | Y | | 廣告id
offDate | string | | | 下架日期, 日期格式為YYYY-MM-DD
```javascript
{
"id": "df2e6892-9ee2-4aab-9990-c5a62d618be2",
"offDate": "2021-10-30"
}
```
#### Response
欄位 | 型態 | 說明
--- | --- | ---
id | string | 廣告id
tenantId | string | 廣告商租戶id
title | string | 廣告標題
adType | string | 廣告類型, URL:連結, FILE:檔案, IMAGE:圖片, CONTENT:文字內容
thumbnailObjectKey | string | storage中的縮圖objectKey
objectKey | string | adType為FILE或IMAGE時, 表示storage 中的 objectKey, adType為URL時, 表示連結的網址
contentType | string | MineType 格式
content | string | adType為CONTENT時所填入的文字內容
onDate | Date | 上架日期
offDate | Date | 下架日期
exposureLevel | string | 曝光等級, NORMAL:一般, HIGH:高
paymentStatus | string | 付費狀況, NONE:不需計費, UNPAID:未付費, PAID:已付費
status | string | 上架狀態, NONE:未上架, ON:上架中, OFF:已下架
createTime | int | 建立時間
updateTime | int | 最後更新時間
```javascript
// HttpStatus:400, 資料不存在
{
"errorMsg": "API_ERROR.NOT_EXIST",
"httpCode": 400
}
// HttpStatus:422, 不允許編輯已下架的廣告
{
"errorMsg": "SERVICE_ERROR.ADS_MGMT_UPDATE_OFF_AD_NOT_ALLOWED",
"httpCode": 422
}
// HttpStatus:200
{
"httpCode": 200,
"result": {
"data": {
"id": "df2e6892-9ee2-4aab-9990-c5a62d618be2",
"tenantId": "7daf1fc2-e7e6-4642-90a8-ff11f0febbe2",
"title": "TEST-AD-1",
"adType": "URL",
"thumbnailObjectKey": "abcd",
"objectKey": "https://www.google.com",
"onDate": 1630425600000,
"exposureLevel": "NORMAL",
"paymentStatus": "NONE",
"status": "NONE",
"createTime": 1630549208878,
"updateTime": 1630549208878,
"creator": "a1131b35-dab0-4593-899b-9485356e02d4"
}
}
}
```
## 刪除廣告
```url
POST /ads-mgmt/delete
```
#### Request
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
id | string | Y | | 廣告id
```javascript
{
"id": "df2e6892-9ee2-4aab-9990-c5a62d618be2"
}
```
#### Response
欄位 | 型態 | 說明
--- | --- | ---
count | int | 刪除筆數, > 0 表示成功刪除
```javascript
// HttpStatus:400, 資料不存在
{
"errorMsg": "API_ERROR.NOT_EXIST",
"httpCode": 400
}
// HttpStatus:422, 不允許刪除廣告(上架中, 已下架)
{
"errorMsg": "SERVICE_ERROR.ADS_MGMT_DELETE_AD_NOT_ALLOWED",
"httpCode": 422
}
// HttpStatus:200
{
"httpCode": 200,
"result": {
"data": {
"count": 1
}
}
}
```
## 取得廣告統計
```url
POST /ads-mgmt/ad/statistics
```
#### Request
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
adId | string | Y | | 廣告id
position | string | | | 廣告版位
```javascript
{
"adId": "ddb19c99-dd16-46b9-883e-92446070761b",
"position": "MY_MEMBER_ONLY"
}
```
#### Response
欄位 | 型態 | 說明
--- | --- | ---
adInfo | json | 廣告info json
reachInfo | json | 廣告曝光分析json
clickInfo | json | 廣告點擊分析json
* adInfo (廣告info json)
欄位 | 型態 | 說明
--- | --- | ---
id | string | 廣告id
tenantId | string | 廣告商租戶id
tenantName | string | 廣告商租戶名稱
title | string | 廣告標題
adType | string | 廣告類型, URL:連結, FILE:檔案, IMAGE:圖片, CONTENT:文字內容
thumbnailObjectKey | string | storage中的縮圖objectKey
objectKey | string | adType為FILE或IMAGE時, 表示storage 中的 objectKey, adType為URL時, 表示連結的網址
contentType | string | MineType 格式
content | string | adType為CONTENT時所填入的文字內容
onDate | Date | 上架日期
offDate | Date | 下架日期
exposureLevel | string | 曝光等級, NORMAL:一般, HIGH:高
paymentStatus | string | 付費狀況, NONE:不需計費, UNPAID:未付費, PAID:已付費
status | string | 上架狀態, NONE:未上架, ON:上架中, OFF:已下架
thumbnailUrl | string | 可 download 的 縮圖url, 時效 3600 秒
url | string | adType為FILE或IMAGE時,可 download 的 url, 時效 3600 秒, adType為URL時, 表示連結的網址
industryTypeList | json array | 廣告商租戶的業別列表, HEALTH_CHECK_CENTER:健檢中心, GYM:健身房, CLINIC:診所, REGIONAL_HOSPITAL:區域醫院, MEDICAL_CENTER:醫學中心, HEALTH_SUPPLEMENT:保健品業者, MEDICAL_DEVICE:醫療器材業者, CATERING:餐飲業者, CONSUMABLES:耗材業者, OTHER:其他
categoryList | json array | 廣告類別列表, HEALTH_CHECK_CENTER:健檢中心, GYM:健身房, CLINIC:診所, REGIONAL_HOSPITAL:區域醫院, MEDICAL_CENTER:醫學中心, HEALTH_SUPPLEMENT:保健品業者, MEDICAL_DEVICE:醫療器材業者, CATERING:餐飲業者, CONSUMABLES:耗材業者, OTHER:其他
positionList | string array | 廣告版位列表
createTime | int | 建立時間
updateTime | int | 最後更新時間
* json of industryTypeList/categoryList
欄位 | 型態 | 說明
--- | --- | ---
category | string | 廣告/業別 id
description | string | 廣告/業別名稱(說明)
* reachInfo (活動曝光分析json)
欄位 | 型態 | 說明
--- | --- | ---
totalCount | int | 總曝光人數
totalTimes | int | 總曝光人次
totalMaleCount | int | 總男性曝光人數
totalFemaleCount | int | 總女性曝光人數
totalMaleTimes | int | 總男性曝光人次
totalFemaleTimes | int | 總女性曝光人次
totalMaleCountRate | double | 總男性人數佔比
totalFemaleCountRate | double | 總女性人數佔比
totalMaleTimesRate | double | 總男性人次佔比
totalFemaleTimesRate | double | 總女性人次佔比
details | json array | 年齡統計 json array
* clickInfo (活動點擊分析json)
欄位 | 型態 | 說明
--- | --- | ---
totalCount | int | 總點擊人數
totalTimes | int | 總點擊人次
totalMaleCount | int | 總男性點擊人數
totalFemaleCount | int | 總女性點擊人數
totalMaleTimes | int | 總男性點擊人次
totalFemaleTimes | int | 總女性點擊人次
totalMaleCountRate | double | 總男性人數佔比
totalFemaleCountRate | double | 總女性人數佔比
totalMaleTimesRate | double | 總男性人次佔比
totalFemaleTimesRate | double | 總女性人次佔比
clickRate | double | 點擊率, 點擊率 = 點擊人數/曝光人數
details | json array | 年齡統計 json array
* details (json array of reachInfo, clickInfo, registerInfo, signInInfo)
欄位 | 型態 | 說明
--- | --- | ---
ageLevel | string | 年齡level
label | string | 年齡區間顯示(標X軸)
maleCount | int | 男性人數
femaleCount | int | 女性人數
maleTimes | int | 男性人次
femaleTimes | int | 女性人次
```javascript
{
"httpCode": 200,
"result": {
"data": {
"adInfo": {
"id": "ddb19c99-dd16-46b9-883e-92446070761b",
"tenantId": "858b7fbb-3ba0-4d49-9882-c893a1ef07dc",
"tenantName": "緯緯醫學",
"title": "no會員",
"adType": "CONTENT",
"thumbnailObjectKey": "ads/5ce7968b-f7ad-41cd-ab40-6ca139859062.jpg",
"objectKey": "ads/5ce7968b-f7ad-41cd-ab40-6ca139859062.jpg",
"content": "除了會員 全都有",
"onDate": 1630425600000,
"offDate": 1633017600000,
"exposureLevel": "NORMAL",
"paymentStatus": "NONE",
"status": "OFF",
"createTime": 1631004064206,
"updateTime": 1633109400068,
"thumbnailUrl": "http://10.31.104.23/swift/v1/AUTH_test/kmuh/ads/5ce7968b-f7ad-41cd-ab40-6ca139859062.jpg?temp_url_sig=c961a97edc05d156c07caed44dd59d9429bf8771&temp_url_expires=1655375956",
"url": null,
"industryTypeList": [
{
"category": "OTHER",
"description": "其他"
}
],
"positionList": [
"HEALTH_MEASURE",
"HEALTH_REPORT",
"HEALTH_SPORT",
"HEALTH_TREND",
"MY_CONSULT",
"MY_HEALTH_ANALYSIS",
"MY_HEALTH_EDU",
"MY_REWARD"
],
"categoryList": [
{
"category": "CLINIC",
"description": "診所"
},
{
"category": "GYM",
"description": "健身房"
},
{
"category": "HEALTH_CHECK_CENTER",
"description": "健檢中心"
},
{
"category": "HEALTH_SUPPLEMENT",
"description": "保健品業者"
},
{
"category": "MEDICAL_CENTER",
"description": "醫學中心"
},
{
"category": "MEDICAL_DEVICE",
"description": "醫療器材業者"
},
{
"category": "REGIONAL_HOSPITAL",
"description": "區域醫院"
}
]
},
"reachInfo": {
"totalCount": 2,
"totalTimes": 687,
"totalMaleCount": 2,
"totalFemaleCount": 0,
"totalMaleTimes": 687,
"totalFemaleTimes": 0,
"totalMaleCountRate": 100.0,
"totalFemaleCountRate": 0.0,
"totalMaleTimesRate": 100.0,
"totalFemaleTimesRate": 0.0,
"details": [
{
"ageLevel": "level1",
"label": "30歲以下",
"maleCount": 1,
"femaleCount": 0,
"maleTimes": 100,
"femaleTimes": 0
},
{
"ageLevel": "level2",
"label": "30-39歲",
"maleCount": 1,
"femaleCount": 0,
"maleTimes": 587,
"femaleTimes": 0
},
{
"ageLevel": "level3",
"label": "40-49歲",
"maleCount": 0,
"femaleCount": 0,
"maleTimes": 0,
"femaleTimes": 0
},
{
"ageLevel": "level4",
"label": "50-59歲",
"maleCount": 0,
"femaleCount": 0,
"maleTimes": 0,
"femaleTimes": 0
},
{
"ageLevel": "level5",
"label": "60歲以上",
"maleCount": 0,
"femaleCount": 0,
"maleTimes": 0,
"femaleTimes": 0
}
]
},
"clickInfo": {
"totalCount": 1,
"totalTimes": 97,
"totalMaleCount": 1,
"totalFemaleCount": 0,
"totalMaleTimes": 97,
"totalFemaleTimes": 0,
"totalMaleCountRate": 100.0,
"totalFemaleCountRate": 0.0,
"totalMaleTimesRate": 100.0,
"totalFemaleTimesRate": 0.0,
"clickRate": 50.0,
"details": [
{
"ageLevel": "level1",
"label": "30歲以下",
"maleCount": 0,
"femaleCount": 0,
"maleTimes": 0,
"femaleTimes": 0
},
{
"ageLevel": "level2",
"label": "30-39歲",
"maleCount": 1,
"femaleCount": 0,
"maleTimes": 97,
"femaleTimes": 0
},
{
"ageLevel": "level3",
"label": "40-49歲",
"maleCount": 0,
"femaleCount": 0,
"maleTimes": 0,
"femaleTimes": 0
},
{
"ageLevel": "level4",
"label": "50-59歲",
"maleCount": 0,
"femaleCount": 0,
"maleTimes": 0,
"femaleTimes": 0
},
{
"ageLevel": "level5",
"label": "60歲以上",
"maleCount": 0,
"femaleCount": 0,
"maleTimes": 0,
"femaleTimes": 0
}
]
}
}
}
}
```
## 廣告投放
```url
POST /ad/push
```
* 此API會將取得的廣告算入觸及, 所以不需要call /ad/reach API
#### Request
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
tenantId | string | | | 租戶id, 若不帶入, 則會由userToken帶入
position | string | Y | | 廣告版位id
```javascript
{
"tenantId": "7daf1fc2-e7e6-4642-90a8-ff11f0febbe2",
"position": "MY_HEALTH_EDU"
}
```
#### Response
欄位 | 型態 | 說明
--- | --- | ---
id | string | 廣告id
tenantName | string | 廣告商租戶名稱
title | string | 廣告標題
adType | string | 廣告類型, URL:連結, FILE:檔案, IMAGE:圖片, CONTENT:文字內容
thumbnailObjectKey | string | storage中的縮圖objectKey
objectKey | string | adType為FILE或IMAGE時, 表示storage 中的 objectKey, adType為URL時, 表示連結的網址
thumbnailUrl | string | 可 download 的 縮圖url, 時效 3600 秒
url | string | adType為FILE或IMAGE時,可 download 的 url, 時效 3600 秒, adType為URL時, 表示連結的網址
```javascript
{
"httpCode": 200,
"result": {
"data": {
"id": "df2e6892-9ee2-4aab-9990-c5a62d618be2",
"tenantName": "賣廣告的",
"title": "TEST-AD-2",
"adType": "URL",
"thumbnailObjectKey": "abcd",
"objectKey": "https://www.google.com",
"thumbnailUrl": "http://192.168.101.120/swift/v1/AUTH_test/kmuh/abcd?temp_url_sig=157c26821ed477e5c63bf2d254c424cdeca1d890&temp_url_expires=1631005142",
"url": "https://www.google.com"
}
}
}
```
## 取得廣告明細
```url
POST /ad/info
```
* adType若為CONTENT, 會需要call此API,取得內容明細
* 此API已包含廣告點擊, 不需再call /ad/click API
#### Request
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
id | string | Y | | 廣告id
position | string | Y | | 廣告版位id
```javascript
{
"id": "df2e6892-9ee2-4aab-9990-c5a62d618be2",
"position": "MY_HEALTH_EDU"
}
```
#### Response
欄位 | 型態 | 說明
--- | --- | ---
id | string | 廣告id
tenantName | string | 廣告商租戶名稱
title | string | 廣告標題
adType | string | 廣告類型, URL:連結, FILE:檔案, IMAGE:圖片, CONTENT:文字內容
thumbnailObjectKey | string | storage中的縮圖objectKey
objectKey | string | adType為FILE或IMAGE時, 表示storage 中的 objectKey, adType為URL時, 表示連結的網址
contentType | string | MineType 格式
content | string | adType為CONTENT時所填入的文字內容
thumbnailUrl | string | 可 download 的 縮圖url, 時效 3600 秒
url | string | adType為FILE或IMAGE時,可 download 的 url, 時效 3600 秒, adType為URL時, 表示連結的網址
```javascript
// HttpStatus:400, 資料不存在
{
"errorMsg": "API_ERROR.NOT_EXIST",
"httpCode": 400
}
// HttpStatus:200
{
"httpCode": 200,
"result": {
"data": {
"id": "df2e6892-9ee2-4aab-9990-c5a62d618be2",
"tenantName": "賣廣告的",
"title": "TEST-AD-2",
"adType": "URL",
"thumbnailObjectKey": "abcd",
"objectKey": "https://www.google.com",
"onDate": 1630425600000,
"offDate": 1635609600000,
"exposureLevel": "NORMAL",
"paymentStatus": "UNPAID",
"status": "NONE",
"thumbnailUrl": "http://192.168.101.120/swift/v1/AUTH_test/kmuh/abcd?temp_url_sig=157c26821ed477e5c63bf2d254c424cdeca1d890&temp_url_expires=1631005142",
"url": "https://www.google.com"
}
}
}
```
## 廣告點擊
```url
POST /ad/click
```
* adType若為URL/FILE/IMAGE時, 若不call /ad/info API而直接跳轉URL/下載檔案/開啟大圖時, 需先call 此API以計算廣告點擊
#### Request
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
id | string | Y | | 廣告id
position | string | Y | | 廣告版位id
```javascript
{
"id": "df2e6892-9ee2-4aab-9990-c5a62d618be2",
"position": "MY_HEALTH_EDU"
}
```
#### Response
欄位 | 型態 | 說明
--- | --- | ---
id | string | 廣告id
```javascript
// HttpStatus:400, 資料不存在
{
"errorMsg": "API_ERROR.NOT_EXIST",
"httpCode": 400
}
// HttpStatus:200
{
"httpCode": 200,
"result": {
"data": {
"id": "df2e6892-9ee2-4aab-9990-c5a62d618be2"
}
}
}
```
## 廣告觸及
```url
POST /ad/reach
```
* 此API為會員專屬廣告列表所用, 在會員廣告專屬列表時, 由APP控制在廣告呈現給使用者時, call此API計算廣告觸及
#### Request
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
id | string | Y | | 廣告id
position | string | Y | | 廣告版位id
```javascript
{
"id": "df2e6892-9ee2-4aab-9990-c5a62d618be2",
"position": "MY_HEALTH_EDU"
}
```
#### Response
欄位 | 型態 | 說明
--- | --- | ---
id | string | 廣告id
```javascript
// HttpStatus:400, 資料不存在
{
"errorMsg": "API_ERROR.NOT_EXIST",
"httpCode": 400
}
// HttpStatus:200
{
"httpCode": 200,
"result": {
"data": {
"id": "df2e6892-9ee2-4aab-9990-c5a62d618be2"
}
}
}
```
## 取得會員專屬廣告列表
```url
GET /ad/member-only
```
* 此API的廣告列表不會算入觸及, 需要APP控制再call /ad/reach API
#### QueryString of API
欄位 | 型態 | 必填 | 預設 | 說明
---|---|---|---|---
tenantId | string | | | 租戶id, 在多租戶情況下,可指定某個租戶下的會員專屬廣告, 若不傳入此參數,會查詢此使用者所有租戶下的會員專屬廣告
#### Response
欄位 | 型態 | 說明
--- | --- | ---
id | string | 廣告id
tenantName | string | 廣告商租戶名稱
title | string | 廣告標題
adType | string | 廣告類型, URL:連結, FILE:檔案, IMAGE:圖片, CONTENT:文字內容
thumbnailObjectKey | string | storage中的縮圖objectKey
objectKey | string | adType為FILE或IMAGE時, 表示storage 中的 objectKey, adType為URL時, 表示連結的網址
thumbnailUrl | string | 可 download 的 縮圖url, 時效 3600 秒
url | string | adType為FILE或IMAGE時,可 download 的 url, 時效 3600 秒, adType為URL時, 表示連結的網址
```javascript
{
"httpCode": 200,
"result": {
"data": [
{
"id": "df2e6892-9ee2-4aab-9990-c5a62d618be2",
"tenantName": "賣廣告的",
"title": "TEST-AD-2",
"adType": "URL",
"thumbnailObjectKey": "abcd",
"objectKey": "https://www.google.com",
"thumbnailUrl": "http://192.168.101.120/swift/v1/AUTH_test/kmuh/abcd?temp_url_sig=157c26821ed477e5c63bf2d254c424cdeca1d890&temp_url_expires=1631005142",
"url": "https://www.google.com"
}, ...
]
}
}
```