# Pos 商品相關 API ## 文件異動紀錄 | Date | Description | | -------- | -------- | | 2021-08-27 | 初版內容 | | 2021-10-08 | 1. 增加環境說明<br>2. 調整部分說明方式<br>3. API驗證統一說明 | --- ## API 版本異動紀錄 | API Version | Update Description | Date | | -------- | -------- | -------- | | v1 | 初版 API | 2021-08-27 | --- ## 環境 * 測試環境 `https://carguru-shop-uat.kagulu.com` * 正式環境 `https://shop.carguru.com.tw` --- ## API 驗證 * 新芽端會提供測試環境及正式環境共兩組 API token * API共用同一環境的token 例如 `https://carguru-shop-uat.kagulu.com/backstage/api/XXX/YYY` 及 `https://carguru-shop-uat.kagulu.com/backstage/api/YYY/ZZZ` 共用測試環境的token 或是 `https://shop.carguru.com.tw/backstage/api/XXX/YYY` 及 `https://shop.carguru.com.tw/backstage/api/YYY/ZZZ` 共用正式環境的token * 請在 headers 增加 Key | Key Name | Data Type | Example | | -------- | -------- | -------- | | authentication | String | `ABCDEFK5654FEFE4584` | * 權限驗證錯誤 - API token 不正確 (HttpStatusCode: 401) ```json { "status": 401, "message": "token invalid", // 訊息 "data": null } ``` --- ## `/backstage/api/{API Version}/POS/sync/products` * Method: `POST` * 同步`商品`資料 一次限制最多 `1000` 筆資料 超出會回傳 `422` 錯誤訊息而不進行後續同步 * Body **v1 會強改為下架狀態 故 v1 中 `status` 可忽略** ```json { "products": [ { "mainCategoryCode": "string", // 主分類代碼 "subCategoryCode": "string", // 子分類代碼 "brandCode": "string", // 品牌分類代碼 "code": "string", // 商品代碼 *必填 "name": "string", // 商品名稱 "amount": 0, // 商品金額 "isInstallation": 0, // 是否包含安裝 0: 不含安裝 1: 含安裝 "status": 1 // 商品狀態 0: 下架 1: 上架 } ] } ``` * Responses * 成功 (HttpStatusCode: 200) ```json { "status": 200, // 200 代表成功 "message": "success", // 訊息 "data": { "data": { "create": [ "string" ], // 此次新增的商品代碼集合 "update": [ "string" ] // 此次更新的商品代碼集合 } } } ``` * 驗證錯誤 (HttpStatusCode: 422) ```json { "status": 422, // 422 "message": "部分資料有缺失", // 錯誤訊息 "data": null } ``` --- ## `/backstage/api/{API Version}/POS/sync/productStocks` * Method: `POST` * 同步`商品規格`資料 一次限制最多 `1000` 筆資料 超出會回傳 `422` 錯誤訊息而不進行後續同步 * Body ```json { "stocks": [ { "productCode": "string", // 商品代碼 *必填 "code": "string", // 貨號代碼 *必填 "color": "string", // 顏色 "size": "string", // 規格 "isOut": 0 // 是否補貨中 0: 非補貨中 1: 補貨中 } ] } ``` * Responses * 成功 (HttpStatusCode: 200) ```json { "status": 200, // 200 代表成功 "message": "success", // 訊息 "data": { "data": { "create": [ "string" ], // 此次新增的商品規格代碼集合 "update": [ "string" ] // 此次更新的商品規格代碼集合 } } } ``` * 驗證錯誤 (HttpStatusCode: 422) ```json { "status": 422, // 422 "message": "部分資料有缺失", // 錯誤訊息 "data": null } ``` --- ## `/backstage/api/{API Version}/POS/sync/mainCategories` * Method: `POST` * 同步`商品主分類`資料 一次限制最多 `1000` 筆資料 超出會回傳 `422` 錯誤訊息而不進行後續同步 * Body ```json { "categories": [ { "code": "string", // 分類代碼 *必填 "name": "string" // 分類名稱 } ] } ``` * Responses * 成功 (HttpStatusCode: 200) ```json { "status": 200, // 200 代表成功 "message": "success", // 訊息 "data": { "data": { "create": [ "string" ], // 此次新增的商品主分類代碼集合 "update": [ "string" ] // 此次更新的商品主分類代碼集合 } } } ``` * 驗證錯誤 (HttpStatusCode: 422) ```json { "status": 422, // 422 "message": "部分資料有缺失", // 錯誤訊息 "data": null } ``` --- ## `/backstage/api/{API Version}/POS/sync/subCategories` * Method: `POST` * 同步`商品子分類`資料 一次限制最多 `1000` 筆資料 超出會回傳 `422` 錯誤訊息而不進行後續同步 * body ```json { "categories": [ { "code": "string", // 分類代碼 *必填 "name": "string", // 分類名稱 "upperCategoryCode": "string" // 對應主分類代碼 *必填 } ] } ``` * Responses * 成功 (HttpStatusCode: 200) ```json { "status": 200, // 200 代表成功 "message": "success", // 訊息 "data": { "data": { "create": [ "string" ], // 此次新增的商品子分類代碼集合 "update": [ "string" ] // 此次更新的商品子分類代碼集合 } } } ``` * 驗證錯誤 (HttpStatusCode: 422) ```json { "status": 422, // 422 "message": "部分資料有缺失", // 錯誤訊息 "data": null } ``` --- ## `/backstage/api/{API Version}/POS/sync/brands` * Method: `POST` * 同步`商品品牌`資料 一次限制最多 `1000` 筆資料 超出會回傳 `422` 錯誤訊息而不進行後續同步 * Body ```json { "brands": [ { "code": "string", // 品牌分類代碼 *必填 "name": "string" // 品牌名稱 } ] } ``` * Responses * 成功 (HttpStatusCode: 200) ```json { "status": 200, // 200 代表成功 "message": "success", // 訊息 "data": { "data": { "create": [ "string" ], // 此次新增的品牌分類代碼代碼集合 "update": [ "string" ] // 此次更新的品牌分類代碼代碼集合 } } } ``` * 驗證錯誤 (HttpStatusCode: 422) ```json { "status": 422, // 422 "message": "部分資料有缺失", // 錯誤訊息 "data": null } ```