---
# System prepended metadata

title: API 命名規則

---

# API 命名規則

[TOC]

## 格式範例：

### Production API Prefix

**https://greenboxapiprod.azurewebsites.net/api**

### Stage API Prefix

**https://gb-dev-4.azurewebsites.net/api**

### API 功能
- Method: **GET** | **POST**
- Endpoint: 
- Query
  - Parameter1
  - Parameter2 (optional)
- Body (JSON)
  ```
  ```
- Response (GET)
  ```
  ```
- Response (POST)
  ```
  {
    Code: string,
    Message: string,
    Data: {}
  }
  ```


## 定義
### 商品分類（產線）
```
單品-產地直送: 0
快速到貨: 2
箱類: 5
生鮮肉舖: 7
粥寶寶: 9
```
### 溫層 (TemperatureType)
```
常溫: 1
冷藏: 2
冷凍: 3
```
### 訂單狀態 (OrderStatus)
```
處理中: 0
已出貨: 1
已送達: 2
已取消: 3
```
### 性別 (Sex)
```
女: 0
男: 1
```
### Datetime 格式
```
string: YYYY-MM-DDTHH:mm:ss
```
### 商品卡片（簡易商品資訊）
```
{
  ProductId: int,
  Name: string,
  Pictures: [string(URL)], // 圖片數量(全部)(絕對路徑(https://.....))
  MinPrice: int,
  CategoryType: int,
  TemperatureType: int,
  IsAvailable: boolean
}
```
### 商品規格及庫存
```
{
  ProductId: int,
  ProductDetailId: int,
  CategoryType: int,
  SubCategoryType: int,
  TemperatureType: int,
  Unit: int,     (x)
  Module: string,  (包)
  Detail: string, (x 包 (oo 入))
  Price: int,
  DiscountPrice: int | null,
  StockCount: int,
  IsShipping: boolean,
  IsAvailable: boolean,
  HasTax: boolean,
  ExportStartDate: DateTime | null,
  ExportEndDate: DateTime | null,
  StartTime: DateTime | null,
  EndTime: DateTime | null,
  IsLimitedOnePackForOneAccount: bool,  限購一組
  VIPLevelId: int[], 
  BoxWeeklyType: int,  箱類(1:單週/2:雙週)
}
```
### 商品評論
```
{
  CommentId: int,
  MemberName: string,
  Ranking: int,
  Content: string,
  CreateDate: Datetime,
}
```
### 收件人資料
```
{
  ReceiverId : int,
  ZipCode : string,
  Name : string,
  City : string,
  District : string,
  Address : string,
  Mobile : string,

  [收件人姓名]: string,
  [收件人電話]: string,
  [收件人郵遞區號]: string, // Additional
  [收件人地址-縣市]: string,
  [收件人地址-鄉鎮市區]: string,
  [收件人地址]: string,
  [收件人電話]: string
}
```
### 會員資料
```
{
  MemberId : int, 
  Account: string
  Name : string | null,
  Sex: int | null,
  Email: string | null,
  Birthday: Datetime | null,
  VipLevelId : int,
  VipLevelName : string,
  Avatar : string(URL), // 絕對路徑(https://.....),
  OrderRemarks : int,
  Bonus : int,
  Redpoint : int,
  CouponCount : int,
  VoucherCount : int,
  Receivers :收件人資料

  [會員id]: int,
  [帳號]: string,
  [姓名]: string,
  [性別]: int,
  [信箱]: string,
  [生日]: Datetime,
  [會員等級id]: int,
  [會員等級名稱]: int,
  [頭像]: string,
  [備註]: string,
  [購物金]: int,
  [紅利點數]: int,
  [優惠卷數量]: int,
  [兌換卷數量]: int,
  [常用收件人]: [
    收件人資料
  ],
}
```
### 購物金紀錄
```
{
  Bonus : string,
  OrderNumber : string | null,
  Remark : string | null,
  CreateTime : DateTime

  [金額]: int(signed),
  [訂單編號]: int | null,
  [備註]: string | null,
  [時間]: Date(String | int),
}
```
### 紅利點數紀錄
```
{
  Redpoint : string,
  OrderNumber : string | null,
  Remark : string,
  CreateTime : DateTime

  [金額]: int(signed),
  [訂單編號]: int | null,
  [備註]: string | null,
  [使用期限]: Date(String | int),
  [時間]: Date(String | int),
}
```
### 優惠卷
```
{
  CouponId: int,
  Name: string,
  Count: int,
  Discount: decimal,
  IsPercent: bool, (0: number, 1: percent)
  StartTime: DateTime,
  EndTime: DateTime,
  PriceLimit: int | null,
  CategoryLimit: int[] | null,
  ProductLimit: int[] | null

  [優惠卷id]: int,
  [優惠卷名稱]: string,
  [優惠卷數量]: int, // 重複的卷
  [優惠金額]: float,
  [優惠權重]: float,
  [使用期限-開始]: Date(String | int),
  [使用期限-結束]: Date(String | int),
  [訂單金額限制]: int | null,
  [商品分類限制]: int[] | null,
  [商品限制]: int[] | null,
}
```
### 商品規格預覽
```
{
  ProductId: int,
  ProductDetailId: int,
  Name: string,
  Picture: string,
  Detail: string, (xx組(x包/斤)),
  Module: string,
  Price: int,
  Quantity: int

  [商品id]: int,
  [商品規格id]: int,
  [商品名稱]: string,
  [商品圖片]: string(URL),
  [商品規格描述（數量）]: int,
  [商品規格描述（單位）]: string,
  [商品價格]: int,
  [商品數量]: int,
}
```
### ATM資料
```
{
  BankCode: string,
  Account: string,
  ExpireDate: string

  [銀行代碼]: string,
  [匯款虛擬帳號]: string,
  [繳款期限]: string,
}
```
### 簡易訂單資訊
```
{
  OrderNumber: string,
  PaymentType: int,
  PaymentStatus: int, (1:未付款, 2:已付款)
  OrderStartDate: DateTime,
  OrderEndDate: DateTime,
  CreateDate: DateTime,
  Sub_week: int,
  Subscribe: int,
  ProductsPreview: ProductsPreview{}
  [訂單編號]: int,
  [付款方式]: int,
  [付款狀態]: int,
  [出貨起始日期]: DateTime,
  [出貨結束日期]: DateTime,
  [訂單建立日期]: DateTime,
  [箱類訂單目前週數]: int,
  [箱類訂單總週數]: int,
  [商品資訊]: 商品規格預覽(第一筆)
  
}
```
### 詳細訂單資訊
[ATM資料](#ATM資料)
[收件人資料](#收件人資料)
[商品規格預覽](#商品規格預覽)
```
{
  OrderNumber: string,
  Status: int,
  CreateDate: DateTime,
  PaymentType: int,
  DeliveryNumber: string,
  DeliveryType: int,
  DeliveryPicture: string,
  TotalPrice: int,
  DiscountPrice: int,
  DeliveryCharge: int,
  ShippingFee: int,
  InvoiceNumber: string,
  OrderStartDate: DateTime,
  OrderEndDate: DateTime,
  PaymentStatus: int, (1:未付款, 2:已付款)
  IsPauseable: bool, 
  ATM: ATM?,
  Receiver: Receiver,
  ProductsPreview: [ProductsPreview{}]
  [訂單編號]: int,
  [訂單狀態]: int,
  [訂購日期]: Date(String | int),
  [付款方式]: int,
  [物流編號]: int,
  [物流方式]: int,
  [訂單金額]: int,
  [折扣金額]: int,
  [物流代收費]: int,
  [運費]: int,
  [發票號碼]: string,
  [出貨時間]: DateTime,
  [付款狀態]: int,
  [是否可暫停之訂單]: bool,
  [ATM資料]: ATM資料,
  [收件人資料]: 收件人資料,
  [商品資訊]: [商品規格預覽]
}
```
### 購物車商品
[商品規格及庫存](#商品規格及庫存)

```
{
  CartItem: 商品規格及庫存,
  Quantity: int,
}
```

## 商品
	
### 首頁輪播圖
- Method:  **GET**
- Endpoint: /Home/Banners
- Response
  ```
  [
    {
      MobileBanner: String(URL),
      MobileBanner2x: String(URL),
      MobileBanner3x: String(URL),
      MobileBanner4x: String(URL)
    }
  ]

### 各產線輪播圖
- Method:  **GET**
- Endpoint: /Home/Banners
- Query
    - CategoryType: int
- Response
  ```
  [
    {
      MobileBanner: String(URL),
      MobileBanner2x: String(URL),
      MobileBanner3x: String(URL),
      MobileBanner4x: String(URL)
    }
  ]
  ````
	
### 商品分類
- Method:  **GET**
- Endpoint: /Product/Category
- - Query
- Response
  ```
    [
        {
            Type: int,
            TypeName: string,
            SubCategorys: [
                {
                    SubType: int,
                    SubTypeName: string
                }
            ]
        }
    ]
  ```
	
### 商品子分類
- Method:  **GET**
- Endpoint: /Product/SubCategory
- - Query
  - Category: int (商品分類)
- Response
  ```
  [
    {
      SubType: int, ( > 0)
      SubTypeName: string
    }
  ]
  ```

### 商品清單(V1)
- Method:  **GET**
- Endpoint: /Product/List
- Query (不帶 Query, 回傳首頁主打商品)
  - Category: int (商品分類)
  - SubCategory: int (商品子分類)(可為null,則不包含子分類)
- Response
  ```
  [
    簡易商品資訊
  ]
  ```

  \# [簡易商品資訊](#商品卡片（簡易商品資訊）)

  
### 商品關鍵字列表
- Method:  **GET**
- Endpoint: /Product/Keywords
- Response
  ```
  [
    {
      Name: string,
    }
  ]
  ```
### 箱類頁面資料
- Method:  **GET**
- Endpoint: /Product/Box
- Response
  ```
    {
      SubType: int, 
      Menu: [string],   // 當週、下週
      Wording:
      [
          {
              Header: string,
              Body: [string],
          }
      ]
    }
    
  ```  

### 商品搜尋
- Method:  **GET**
- Endpoint: /Product/Search
- Query
  - SearchString: string
- Response
  ```
  [
    簡易商品資訊
  ]
  ```

  \# [簡易商品資訊](#商品卡片（簡易商品資訊）)
  
### 商品資訊（詳細商品資訊）
- Method:  **GET**
- Endpoint: /Product/Data
- Query
  - ProductId: int
- Response
  ```
  {
    ProductId: int,
    Name: string,
    Pictures: [string(URL)], // 圖片數量(全部)(絕對路徑(https://.....))
    MinPrice: int,
    MaxPrice: int,
    CategoryType: int,
    TemperatureType: int,
    Module: string,
    OriginPlace: string,
    Ranking: float, (eg. x.x)
    ShippingFee: int,
    ShippingThreshold: int,
	Remind: string,
    Spec: string,
    Preserve: string,
    Content: string(HTML),
    PlaceStory: string(HTML),
    CommentCount: int,
    SoldCount: int,
    ProductDetail: [string] // 規格（eg. x包（x入））
  }
  ```
### 商品規格及庫存列表
- Method:  **GET**
- Endpoint: /Product/Detail
- Query
  - ProductId: int
- Response
  ```
    [
        {
            ProductId: int,
            ProductDetailId: int,
            CategoryType: int,
            SubCategoryType: int,
            TemperatureType: int,
            Module: string,
            Detail: string,
            Price: int,
            DiscountPrice: int?,
            StockCount: int,
            IsShipping: bool,
            IsAvailable: bool,
            HasTax: bool,
            ExportStartDate: DateTime?,
            ExportEndDate: DateTime?,
            StartTime: DateTime?,
            EndTime: DateTime?,
            MinimumPrice: int (滿額限購商品 >0須判斷),
            IsLimitedOnePackForOneAccount: bool (超殺商品)
            VIPLevelId: [int]
        }
    ]
  ```

  \# [商品規格及庫存](#商品規格及庫存)

### 檢查商品庫存
- Method: **POST**
- Endpoint: /Product/Stock
- Body (JSON)
  ```
  {
      CartData: [
        ProductDetailId: int
      ]
  }
  ```
- Response
  ```
  {
    Code: string,
    Message: string,
    Data: [
        {
            ProductDetailId: int,
            ProductName: string,
            ProductDetailName: string,
            StockCount: int,
        }
    ]
  }
  ```
  - Code
    - SUCCESS

### 檢查箱類價格(身分驗證)
- Method: **POST**
- Endpoint: /Product/BoxProperty
- Body (JSON)
  ```
  {
      CartData: [
        ProductDetailId: int
      ]
  }
  ```
- Response
    ```
    {
        Code: string,
        Message: string,
        Data: [
            {
                ProductDetailId: int,
                Price: int
            }
        ]
    }
    ```
    - Code
        - SUCCESS

### 商品評論列表
- Method:  **GET**
- Endpoint: /Product/Comments
- Query
  - ProductId: int
  - Page: int,
  - Size: int
- Response
  ```
  [
    商品評論
  ]
  ```

  \# [商品評論](#商品評論)
## 結帳購物車
### 產線運費（免運條件）
- Method:  **GET**
- Endpoint: /Product/Shipping
- Query (不帶Query, 列出全部)
  - Category: int
- Response
  ```
  [
    {
      CategoryType: int,
      ShippingFee: int,
      ShippingThreshold: int,
      OutTaiwan: boolean,
    }
  ]
  ```
### 結帳加購
- Method:  **Post**
- Endpoint: /Order/ExtraProduct
- Body (JSON)
  ```
  [
    {
        "CartItem": {
            "ProductId": int,
            "ProductDetailId": 55023,
            "CategoryType": 9,
            "SubCategoryType": 2,
            "TemperatureType": 3,
            "Module": "組",
            "Detail": "1組(2入，150克/入)",
            "Price": 160,
            "DiscountPrice": 160,
            "StockCount": 1912,
            "IsShipping": false,
            "IsAvailable": true,
            "HasTax": true,
            "ExportStartDate": "2021-03-16T00:00:00",
            "ExportEndDate": null,
            "Name": "大寶寶 金時瓜瓜鯛魚粥",
            "Picture": "https://greenbox.azureedge.net//upload/Product_3033/202005200917141.jpg"
        },
        "Quantity": 1
    }
  ]
  ```
- Response
  ```
  [
    {
        "ProductId": 57890,
        "ProductDetailId": 82493,
        "CategoryType": 9,
        "SubCategoryType": 5,
        "TemperatureType": 3,
        "Name": "超值加購 小寶寶-南瓜米糊",
        "Picture": "https://greenbox.tw//upload/Product_3033/202009251011401.png",
        "Unit": 1,
        "Module": "組",
        "Detail": "3入，90克/入",
        "Price": 120,
        "DiscountPrice": 100,
        "StockCount": 23,
        "IsShipping": false,
        "IsAvailable": true,
        "HasTax": true,
        "ExportStartDate": "2021-10-07T00:00:00",
        "ExportEndDate": null
    }
  ]
  ```

  \# [加購](#加購)
  
  
  
### 折扣碼（身份驗證）
- Method: **POST**
- Endpoint: /Order/PromoCode
- Body (JSON)
  ```
  {
    PromoCode: string,
    ShoppingCart: [
      購物車商品
    ]
  }
  ```
- Response
  ```
  {
    Code: string,
    Message: string,
    Data: {
      Discount: int,
    }
  }
  ```
  - Code
    - SUCCESS

    - ERROR_NOT_FOUND
    - ERROR_NOT_YET
    - ERROR_EXPIRED
    - ERROR_NOT_AVAILABLE
    - ERROR_INVALID_FORMAT
    - ERROR_SPECIFIC_PRODUCT
    - ERROR_SPECIFIC_CATEGORY
    - ERROR_PRICE_LIMIT
    - ERROR_USED

  \# [購物車商品](#購物車商品)

### 物流及付款方式列表
- Method: **POST**
- Endpoint: /Order/Options
- Body (JSON)
  ```
  [
    購物車商品
  ]
  ```
- Response
  ```
  {
    Code: string,
    Message: string,
    Data: {
      Delivery:[
        {
          Type: int,
          Name: string,
          Payment:[
            {
              Type: int,
              Name: string,
              Fee: int
            }
          ]
        }
      ]
      全部舉例出來
      [物流方式]: [
        {
          [物流方式]: int,
          [物流名稱]: string,
          [物流代收費]: int,
          [付款方式]: [
            {
              [付款方式]: int,
              [付款名稱]: string,
            }
          ]
        }
      ],
    }
  }
  ```
  \# [購物車商品](#購物車商品)

### 離島及當日配狀態
- Method: **GET**
- Endpoint: /Order/AddressStatus?ZipCode=
- Query
- Response
  ```
  {
    IsOutTaiwan: boolean,
    IsSameDay: boolean
  }
  ```
  \# [購物車商品](#購物車商品)
  
### 離島及當日配狀態
- Method: **POST**
- Endpoint: /Order/AddressStatus_v2?ZipCode=
- Query
  - CartData : []
- Response
  ```
  {
    IsOutTaiwan: boolean,
    IsSameDay: boolean,
    LastArrivalTime: string
  }
  ```
  \# [購物車商品](#購物車商品)
  
### 常用收件人（身份驗證）
- Method: **GET**
- Endpoint: /Member/CommonReceiver
- Response
  ```
  [
    收件人資料
  ]
  ```
  \# [收件人資料](#收件人資料)

### 加入常用收件人（身份驗證）
- Method: **POST**
- Endpoint: /Member/CommonReceiver
- Body (JSON)
  ```
  {
    收件人資料,
    IsDefaultAddress: bool
  }
  ```
- Response
  ```
  {
    Code: string,
    Message: string,
    Data: {
        ReceiverId: int
    }
  }
  ```
  - Code
    - SUCCESS
    - ERROR_OUT_OF_NUMBER

  \# [收件人資料](#收件人資料)
  
### 更新常用收件人（身份驗證）
- Method: **PUT**
- Endpoint: /Member/CommonReceiver
- Body (JSON)
  ```
  {
    收件人資料
    IsDefaultAddress: bool
  }
  ```
- Response
  ```
  {
    Code: string,
    Message: string,
    Data: null
  }
  ```
  - Code
    - SUCCESS
    - ERROR_NOT_FOUND

  \# [收件人資料](#收件人資料)
  
### 刪除常用收件人（身份驗證）
- Method: **DELETE**
- Endpoint: /Member/CommonReceiver
- Query
  - ReceiverId : int
- Response
  ```
  {
    Code: string,
    Message: string,
    Data: null
  }
  ```
  - Code
    - SUCCESS
    - ERROR_NOT_FOUND

### 運費（身份驗證）
- Method: **POST**
- Endpoint: /Order/ShippingFee
- Body (JSON)
    ```
    [購物車資料]
    ```
- Response
    ```
    {
        TotalInnerLandShipping: number,
        TotalOuterLandShipping: number,
        SameDayDiscount: number,
        SameDayDescription: number,
        DetailInfo:[
            {
                CategoryType: int,
                TemperatureType: int,
                InnerLandShipping: int,
                OuterLandShipping: int,
                Description: string
            }
        ]
        [一般運費]: number,
        [離島運費]: number,
        [當日配運費]: number,
        [當日配說明]: String,
        [詳細資訊]: [{
            [產線]: int,
            [溫層]: int,
            [一般運費]: number,
            [離島運費]: number,
            [說明]: String
        }]
    }
    ```
    
  - Code
     - SUCCESS

  \# [購物車商品](#購物車商品)

### 結帳並取得付款資訊（身份驗證）
- Method: **POST**
- Endpoint: /Order/Checkout
- Body (JSON)
  ```
  {
    CartData: [購物車資料],    
    MemberReceiver: {收件人資訊},
    Buyer:{
      Name: string,
      Mobile: string
    },
    Discount: {
      Total: int,
      // 金額
      Bonus: int,
      Coupon: int (?)
      Redpoint: int,
      Promo: int, (?)
      // 碼
      PromoCode: string,
      CouponId: int,
    },
    Invoice: {
      Type: int, (0: 捐贈發票, 1: 二聯式, 2: 三聯式)
      Email: string,
      CarrierType: int, (2: 自然人載具, 3: 手機載具)
      CarrierNumber: string,
      CompanyName: string,
      CompanyUniformNumber: string, 統編
      CompanyEmail: string,
      CompanyReceiverName: string,
      CompanyCounty: string,
      CompanyDistrict: string,
      CompanyAddress: string
    },
    FamiPickUpReturn: {
        ReturnCode:"api9101",
        Message:"",
        Data:{
            "CvsTemp":"mvlbyid15hrdicyjs5cpkmer",
            "StoreId":"017897",
            "Name":"全家大溪三本店",
            "Addr":"桃園市大溪區仁善街182﹑186號",
            "Items":[
                {
                "ChanItem":"9",
                "ReservedNo":"21090300000007825966",
                "OrderDate":"2021-09-17",
                "ShipDate":"2021-09-18"
                }
            ]
        }
    },
    TotalPrice: int,
    DeliveryType: int,(1: 自取, 3: 黑貓, 4: 全家)
    ReceiveType: int, (1: 13時前, 2: 14時~18時, 5:當日配)
    PaymentType: int, (0: 信用卡, 2: 貨到付款, 3: 現金自取)
    SingleItemArrivedType: int(0: 不指定, 1: 平日收貨, 2: 假日收貨)
    Remark: string,
    IsDisplayBuyerName: int, (0: 不顯示購買者, 1: 送禮顯示購買者),
    IsCollectByGuard: int, (0: 否, 1: 是)
    IsContactReceiver: int,(0: 否, 1: 是)
    IsRecycle: int, (0: 否, 1: 是)
    OrderOrigin: int, (1: 前台, 2: 後台, 3: APP)
  }
  ```
- Response
  ```
  {
    Code: string,
    Message: string,
    Data: {
      EcpayToken: string, (跟綠界有關才會有值)
      OrderNumber: string 
    }
  }
  ```
  - Code
    - SUCCESS

    - ERROR_NOT_AVAILABLE_STOCK (庫存不足)
    - ERROR_CALCULATE (金額比對錯誤)
    - ERROR_OFF_SHELF (產品已下架)

  \# [購物車商品](#購物車商品)
  \# [收件人資料](#收件人資料)

### 產生全家電子地圖所需資料
- Method: **Post**
- Endpoint: Order/FamiOrderDetail
- Body (JSON)
  ```
  [
    {
        "CartItem": {
            "ProductId": 44249,
            "ProductDetailId": 55023,
            "CategoryType": 9,
            "SubCategoryType": 2,
            "TemperatureType": 3,
            "Module": "組",
            "Detail": "1組(2入，150克/入)",
            "Price": 160,
            "DiscountPrice": 160,
            "StockCount": 1912,
            "IsShipping": false,
            "IsAvailable": true,
            "HasTax": true,
            "ExportStartDate": "2021-03-16T00:00:00",
            "ExportEndDate": null,
            "Name": "大寶寶 金時瓜瓜鯛魚粥",
            "Picture": "https://greenbox.azureedge.net//upload/Product_3033/202005200917141.jpg"
        },
        "Quantity": 1
    }
  ]
  ```
- Response
  ```
  {
    "CvsName": "greenbox.tw",
    "CvsLink": "https://gb-dev-4.azurewebsites.net/api/Order/FamiOrderReceive",
    "CvsTemp": "0d4ac3b888c6458d",
    "Cvsid": "0",
    "Exchange": "true",
    "RcvOldStoreId": null,
    "Items": [
        {
            "ParentId": "567",
            "EshopId": "0001",
            "ChanItem": "9",
            "EshopType": "9",
            "Length": 30.0,
            "Wide": 30.0,
            "High": 45.0,
            "Weight": 0.0,
            "Qty": 1,
            "StartDate": "2021-09-17",
            "EndDate": "2021-09-19"
        }
    ]
  }
  ```

### 取得全家門市資訊
- Method: **Get**
- Endpoint: Order/FamiStoreInfo
- Query
   - cvsTemp: string,
- Response
  ```
  {
    Code: string,
    Message: string,
    Data: {
        ReturnCode:"api9101",
        Message:"",
        Data:{
            "CvsTemp":"mvlbyid15hrdicyjs5cpkmer",
            "StoreId":"017897",
            "Name":"全家大溪三本店",
            "Addr":"桃園市大溪區仁善街182﹑186號",
            "Items":[
                {
                "ChanItem":"9",
                "ReservedNo":"21090300000007825966",
                "OrderDate":"2021-09-17",
                "ShipDate":"2021-09-18"
                }
            ]
        }
    }
  }
  ```
  - Code
    - SUCCESS
    - ERROR_NOT_EXIST (門市資訊不存在)

### ATM紀錄（身份驗證）
- Method: **POST**
- Endpoint: /Order/EcPayATM
- Body (JSON)
    ```
    {
        MerchantTradeNo: string,
        RtnMsg: string,
        RtnCode: int,
        TradeNo: string,
        TradeAmt: decimal,
        TradeDate: string,
        BankCode: string,
        vAccount: string,
        ExpireDate: string
    }
    ```

### 重新刷卡並取得付款資訊（身份驗證）
- Method: **POST**
- Endpoint: /Order/RePayCheckout
- Body (JSON)
    ```
    {
        OrderNumber: string,
        OrderOrigin: int, (1: 前台, 2: 後台, 3: APP)
    }
    ```
- Response
  ```
  {
    Code: string,
    Message: string,
    Data: {
      EcpayToken: string
    }
  }
  ```
  - Code
    - SUCCESS


### 依照主單編號查詢訂單資訊
- Method: **GET**
- Endpoint: /Order/Checkout
- Query
  - OrderNumber
- Response
  ```
  [
      {
          ProfilePicture: string,
          OrderNumber: string,
          OrderDetail: 
          {
              PaymentType: string,
              DeliveryType: string,
              CreateDate: DateTime,
              OrderItemList: string
          }
      }
  ]
  ```
  - Code
    - SUCCESS

    - ERROR_NOT_EXISTED // 無此訂單編號


## 會員
### 會員資料（身份驗證）
- Method: **GET**
- Endpoint: /Member/Data
- Response
  ```
  會員資料
  ```

  \# [會員資料](#會員資料)
### 購物金紀錄（身份驗證）
- Method:  **GET**
- Endpoint: /Member/Bonus
- Query
   - Page: int,
   - Size: int
- Response
  ```
  [
    購物金紀錄
  ]
  ```
  \# [購物金紀錄](#購物金紀錄)
### 紅利點數紀錄（身份驗證）
- Method:  **GET**
- Endpoint: /Member/Redpoint
- Query
   - Page: int,
   - Size: int
- Response
  ```
  {
    RedpointRecord: [紅利點數紀錄],
    ExpiringPoint: int,
    ExpiringTime: DateTime,
  }
  ```
  \# [紅利點數紀錄](#紅利點數紀錄)

### 優惠卷列表（身份驗證）
- Method:  **GET**
- Endpoint: /Member/Coupon
- Query
   - Page: int,
   - Size: int
- Response
  ```
  [
    優惠卷
  ]
  ```
  \# [優惠卷](#優惠卷)

### 兌換卷列表（身份驗證）
- Method:  **GET**
- Endpoint: /Member/Voucher
- Query
   - Page: int
   - Size: int
- Response
  ```
  [
      {
          TicketId: int,
          Name: string,
          Quantity: int,
          ProductId: int,
          ProductDetailId: int,
          ProductPrice: int,
          ProductImage: string(URL),
          ProductDetail: string,
          ProductCategoryType: int,
          ProductTemperatureType: int,
          ProductExportStartDate: DateTime,
          ProductExportEndDate: DateTime,
      }
  ]
  ```

  \# [簡易商品資訊](#商品卡片簡易商品資訊)

  \# [商品規格及庫存](#商品規格及庫存)

### 訂單資訊（身份驗證）
- Method:  **GET**
- Endpoint: /Member/OrderData
- Query
  - OrderStatus: int, 
    (0:處理中,1:已出貨,2:已送達,3:已取消)
  - Page: int,
  - Size: int
- Response
  ```
  [
      簡易訂單資訊
  ]
  ```
    \# [簡易訂單資訊](#簡易訂單資訊)
    
### 訂單資訊（身份驗證）
- Method:  **GET**
- Endpoint: /Member/OrderDetail
- Query
  - OrderNumber: string
- Response
  ```
  [
      詳細訂單資訊
  ]
  ```

  \# [詳細訂單資訊](#詳細訂單資訊)
### 更改密碼（身份驗證）
- Method: **POST**
- Endpoint: /Member/ResetPassword
- Body (JSON)
  ```
  {
    NewPassword: string
    [新密碼]: string,
    [設備識別（IMEI...）]: string,
  }
  ```
- Response
  ```
  {
    Code: string,
    Message: string,
    Data: {}
  }
  ```
  - Code
    - SUCCESS
    - ERROR_NOT_FOUND (查無使用者)

### 會員資料設定（身份驗證）
- Method: **PUT**
- Endpoint: /Member/Data
- Body (JSON)
  ```
  {
    Name: string,
    Email: string,
    Sex: int (女 0, 男 1),
    Birth: string(YYYY-MM-DD),
    Receipt: string,

    [姓名(暱稱)]: string, (optional)
    [Email]: string, (optional)
    [性別]: int, (optional)
    [生日]: Date(String | int), (optional)
    [載具]: String, (optional)
  }
  ```
- Response
  ```
  {
    Code: string,
    Message: string,
    Data: {}
  }
  ```
  - Code
    - SUCCESS
    - ERROR
### 登入
- Method: **POST**
- Endpoint: /Token/SignInFrontEnd
- Body (JSON)
  ```
  {
    Username: string,
    Password: string,
    DeviceToken: string

    [帳號（手機號碼）]: string,
    [密碼]: string, // Hash
    [設備識別（IMEI...）]: string, (defer...)
  }
  ```
- Response
  ```
  {
    Code: string,
    Message: string,
    Data: {
      AccessToken: string,
      RefreshToken: string,
      ExpireDate: Datetime,
    }
  }
  ```
  - Code
    - SUCCESS
    - ERROR // 帳號對、密碼錯誤
    - ERROR_USER_DISABLED // 停用（黑名單）
    - ERROR_USER_DELETED  // 已刪除
    - ERROR_USER_NOT_EXISTED // 使用者不存在

### 刷新Token（身份驗證）
- Method: **GET**
- Endpoint: /Token/Refresh
- Query
  - RefreshToken: string
- Response
  ```
  {
    Code: string,
    Message: string,
    Data: {
      AccessToken: string,
      RefreshToken: string,
      ExpireDate: Datetime,
    }
  }
  ```
  - Code
    - SUCCESS

    - ERROR_TOKEN_NOT_EXISTED // Refresh Token 不存在

### 傳送手機驗證碼
- Method: **POST**
- Endpoint: /Member/SendCode
- Body (JSON)
  ```
  {
    Mobile: string,
    [手機號碼]: string,
  }
  ```
- Response
  ```
  {
    Code: string,
    Message: string,
    Data: {
        ExpireDate: Datetime,
    }
  }
  ```
  - Code
    - SUCCESS
    - ERROR_USER_EXISTED

### 驗證手機驗證碼
- Method: **POST**
- Endpoint: /Member/VerifiedCode
- Body (JSON)
  ```
  {
    Mobile: string,
    Code: string
    [手機號碼]: string,
    [手機驗證碼]: string,
  }
  ```
- Response
  ```
  {
    Code: string,
    Message: string,
    Data: {
      VerifiedId: int,
    }
  }
  ```
  - Code
    - SUCCESS
    - ERROR_VERIFY_FAIL (驗證碼失效or錯誤)

### 註冊（手機驗證碼）
- Method: **POST**
- Endpoint: /Member/SignUp
- Body (JSON)
  ```
  {
    Account: string,
    VerifiedId: int,
    VerifiedCode: string,
    Password: string (hash),
    Name: string,
    Email: string | null,
    Sex: int (女 0, 男 1)  | null,
    Birthday: string(YYYY-MM-DD)  | null

    [帳號（手機號碼）]: string,
    [驗證碼token]: int,
    [驗證碼]: string,
    [密碼]: string, // Hash?
    [姓名(暱稱)]: string,
    [Email]: string, (optional)
    [性別]: int, (optional)
    [生日]: Date(String | int), (optional)
  }
  ```
- Response
  ```
  {
    Code: string,
    Message: string,
    Data: {}
  }
  ```
  - Code
    - SUCCESS
    - ERROR_VERIFY_FAIL (驗證失敗)
    - ERROR_INSERT_FAIL (新增會員失敗)

### 忘記密碼
- Method: **GET**
- Endpoint: /Member/ForgotPassword
- Query
  - Mobile: string
- Response
  ```
  {
    Code: string,
    Message: string,
    Data: {}
  }
  ```
  - Code
    - SUCCESS

    - ERROR_USER_DISABLED // 停用（黑名單）
    - ERROR_USER_DELETED  // 已刪除
    - ERROR_USER_NOT_EXISTED // 使用者不存在

### 取得會員訊息分類（身份驗證）
- Method: **GET**
- Endpoint: /Notification/Categories
- Response
  ```
  [
      {
          Id: int,
          UnReadCount: int,
          
          [分類Id]: int,
          [分類未讀數量]: int,
      },
  ]
  ```
### 取得會員訊息項目（身份驗證）
- Method: **GET**
- Endpoint: /Notification/Items
- Query
  - CategoryId: int
  - Page: int
  - Size: int
- Response
  ```
  [
      {
          NotificationId:int,
          Code: string,
          Header: string,
          Body: string,
          Image: string,
          OrderNumber: string,
          IsRead: boolean,
          SentTime: datetime
          
          [訊息Id]: int,
          [路徑參數]: string,
          [標題]: string,
          [內容]: string,
          [圖片]: string,
          [訂單編號]: string, (路徑為null,才會有值)
          [已讀]: boolean,
          [發送時間]: datetime (排序最新在前) 
      },
  ]
  ```
  
### 新增DeviceToken（身份驗證）
- Method: **POST**
- Endpoint: FCM/Token
- Query
  - DeviceToken: string
- Response
  ```
  {
    Code: string,
    Message: string,
    Data: {}
  }
  ```

  - Code
    - SUCCESS

### 刪除DeviceToken（身份驗證）
- Method: **POST**
- Endpoint: FCM/DeleteToken
- Response
  ```
  {
    Code: string,
    Message: string,
    Data: {}
  }
  ```
  - Code
    - SUCCESS

### 2022新農食運動資料（身份驗證）
- Method: **GET**
- Endpoint: NewFarming/Data
- Response
  ```
  {
      IsSignin: bool, [是否簽到]
      OrderCount: int, [活動期間成立訂單總數]
      Ticket: int, [抽獎券]
      Prize: int, [總獎金池]
      Products: [   
         {
             ProductId: int,
             ProductDetailId: int,
             Name: string,
             Picture: string,
             SoldOutPicture: string,
             IsSoldOut: bool
             Price: int,
             DiscountPrice: int,
             SearchString: string
         }
      ]
  },
  ```
  
### 2022新農食運動簽到（身份驗證）
- Method: **POST**
- Endpoint: NewFarming/Signin
- Response
  ```
  {
    Code: string,
    Message: string,
    Data: {
        Point: int [簽到紅利]
        Prize: int [總獎金池]
    }
  }
  ```
  - Code
    - SUCCESS
    - ERROR_RECORD_EXISTED