---
# System prepended metadata

title: Rakmao Purchase Order Open API

---

# Rakmao Purchase Order Open API

## Preparing Connection

### Rakmao Environment
| Name       | Endpoint                          |
| ---------- | --------------------------------- |
| Test       | https://rakmao-api-test.builk.com |
| Production | https://api.rakmao.com            | 

### RakmaoPO Environment
| Name       | Endpoint                          |
| ---------- | --------------------------------- |
| Test       | https://rakmao-po-api-test.builk.com |
| Production | https://api-po.rakmao.com | 

### Rakmao Standard Object
 > ทุกๆ Response จาก Rakmao Buyer Center จะประกอบด้วย สาม Parameter หลักดังนี้

| Parameter   | Description                                                                                | Schema |
| ----------- | -----------------  | ------ |
| data        | ผลลัพท์ของการทำงานใน API ผลลัพท์ความเป็นไปได้ประกอบด้วย null, object, array, string ,number และ boolean | object |
| status      | สถานะของการทำงานใน API ผลลัพท์ความเป็นไปได้ประกอบด้วย 2xx, 4xx และ 5xx |  number |
| message     | ข้อความอธิบายผลลัพท์ของการทำงานใน API โดยเป็นคู่บงชี้กับ parameter `status` หากเป็นหมวด 2XX จะตอบกลับเป็น `success` และ หมวดอื่นๆจะตอบเป็นคำอธิบายอย่างสั้น    | string |

> หมายเหตุ ในกรณีที่ status บงชี้ในหมวดหมู่ 4XX ผู้ทำการร้องของสามารถจัดการปัญหาได้ด้วยตนเองตาม error case ที่ list ไว้ให้ (จะดำเนินการในภายหลัง) และ ในกรณีที่ status บงชี้ในหมวดหมู่ 5XX โปรดแจ้งให้ทางผู้พัฒนาให้ทราบโดยเร็วที่สุด

**Example Response** 
```json
{
  "status": 200,
  "message": "Success",
  "data": some object ..
}
```
### Rakmao MasterData (Enum)
#### POStatusEnum
 

| Name               | Value |
| ------------------ | ----- |
| Preview            | 1     |
| Complete           | 2     |
| Draft              | 3     |
| PendingPayment     | 4     |
| BuyerReject        | -1    |
| BuyerCancel        | -2    |
| SellerReject       | -3    |
| SellerRequestCancel| -4    |
| SellerCancel       | -5    |
| AllCancel          | -6    |
| BuyerRequestCancel | -7    |

#### PoCreateTypeEnum
 

| Name               | Value |
| ------------------ | ----- |
| Rakmao             | 1     |
| Attachment         | 2     |
| DirectPO           | 3     |



### Rakmao Authentication 
 > ทุกๆ Request ที่ทำการติดต่อกับ Rakmao Buyer Center ต้องแนบ Header ประกอบมาด้วยเสมอ ซึ่งประกอบไปด้วย
 > Header Key : `Authorization` และ Header Value : `Bearer *access_token*`
 > โดย *access_token* จะกล่าวถึงในหัวข้อ [Rakmao Request and Refersh Authorization](#Rakmao-Request-and-Refersh-Authorization)

Example : ` Authorization : Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 `
หรือผลลัพท์ Request ดังภาพ

![](https://i.imgur.com/pwUKaTf.png)
 
### Rakmao Request Authorization 
#### Rqeuest Path `/api/v1/Authentication/RequestAPIToken`
> การ Request Authorization หรือการ Login ในที่นี้จะไม่สามารถใช้ User/Password และวิธีทั่วไปในการใช้งานเว็บไซต์ www.rakmao.com ให้ทำตามวิธีดังต่อไปนี้
> 1. นำ authen_string ที่ได้รับจากการลงทะเบียน (หมายเหตุ แจ้งให้ผู้พัฒนาลงทะเบียนให้) แนบลงในส่วนของ body ของ request 
> 2. ทำการร้องขอ Method POST ไปที่ `{baseUrl}/api/v1/Authentication/RequestAPIToken` (หมายเหตุ baseUrl ในที่นี้หมายถึง Endpoint ในส่วน [Rakmao Environment](#Rakmao-Environment))
> 
> หมายเหตุ authen_string ได้จากการนำ user/password ไปประกอบในรูปแบบ json และทำการ encoding ด้วย method base64, Example `{"UserName":"your-username","Password":"your-password"}`


**Body Request**

| Parameter                 | Description                            | Schema              |
| ------------------------- | -------------------------------------- | ------------------- |
| authenString (*required*) | authen string ที่ได้รับจากการลงทะเบียน | string (plain/text) |

**Data Response**

| Parameter   | Description        | Schema |
| ----------- | -----------------  | ------ |
| token        | token สำหรับแนบ ใน Header      | string |
| refreshToken        | token สำหรับ ในการร้องขอสิทธิ์ใหม่อีกครั้งหลังจากหมดอายุ      | string |
| expiration        | วันที่และเวลาหมดอายุของ token ที่ร้องขอ      | DateTime |

**Example Request**
```    
"authString..."

```

**Example Response**
```json
{
  "status": 200,
  "message": "Success",
  "data": {
      "token": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.****",
      "refreshToken": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.****",
      "expiration": 1613978508
  }
}
```
### Rakmao Renew Authorization 
#### Rqeuest Path `/api/v1/Authentication/RenewAPIToken`
> การ Renew Authorization คือการออก Token ใหม่โดยใช้สิทธ์ล่าสุดที่เคยได้รับ (หมายเหตุ ต้องเป็น refreshToken ล่าสุดเท่านั้น)
> 1. นำ refreshToken ที่ได้รับจากการ Rquest Authorization แนบลงในส่วนของ body ของ request 
> 2. ทำการร้องขอ Method POST ไปที่ `{baseUrl}/api/v1/Authentication/RenewAPIToken` (หมายเหตุ baseUrl ในที่นี้หมายถึง Endpoint ในส่วน [Rakmao Environment](#Rakmao-Environment))
> 

**Body Request**

| Parameter                 | Description                            | Schema              |
| ------------------------- | -------------------------------------- | ------------------- |
| refreshToken (*required*) | refreshToken ที่ได้รับจากการ login ครั้งล่าสุด | string (plain/text) |

**Data Response**

| Parameter   | Description        | Schema |
| ----------- | -----------------  | ------ |
| token        | token สำหรับแนบ ใน Header      | string |
| refreshToken        | token สำหรับ ในการร้องขอสิทธิ์ใหม่อีกครั้งหลังจากหมดอายุ      | string |
| expiration        | วันที่และเวลาหมดอายุของ token ที่ร้องขอ      | DateTime |

**Example Request**
```    
"refreshToken..."

```

**Example Response**
```json
{
  "status": 200,
  "message": "Success",
  "data": {
      "token": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.****",
      "refreshToken": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.****",
      "expiration": 1613978508
  }
}
```
##  Buyer API 
### `POST /api/v1/Buyer`

> สำหรับให้ Buyer สร้าง เอกสาร po โดยจะได้เป็น Po status Draft

**Body Request**

| Parameter             |      Required      | Description                | Schema          |
| --------------------- |:------------------:| -------------------------- | --------------- |
| CreateByUserId        | :heavy_check_mark: | User ref id                | string          |
| CreateByUserName      | :heavy_check_mark: |                            | string          |
| OrgId                 | :heavy_check_mark: | OrgId ที่ออกโดยระบบ Rakmao | guid            |
| OrgName               | :heavy_check_mark: |                            | string          |
| RfqId                 | :heavy_check_mark: |                            | guid            |
| QuotationId           | :heavy_check_mark: |                            | guid            |
| ProjectId             | :heavy_check_mark: |                            | guid            |
| ProjectName           | :heavy_check_mark: |                            | string          |
| VendorId              | :heavy_check_mark: |                            | guid            |
| VendorName            | :heavy_check_mark: |                            | string          |
| DocumentFileUrl       |                    |                            | string          |
| ContactName           | :heavy_check_mark: |                            | string          |
| ContactPhone          | :heavy_check_mark: |                            | string          |
| Address               | :heavy_check_mark: |                            | string          |
| Note                  |                    |                            | string          |
| CreateType            | :heavy_check_mark: |                            | number          |
| DocumentReference     |                    |                            | string          |
| TotalItem             | :heavy_check_mark: |                            | number          |
| SubTotal              | :heavy_check_mark: |                            | number          |
| Beforvat              | :heavy_check_mark: |                            | number          |
| Discount              |                    |                            | number          |
| VatType               | :heavy_check_mark: |                            | number          |
| VatRate               | :heavy_check_mark: |                            | number          |
| VatAmount             | :heavy_check_mark: |                            | number          |
| DeliveryFee           |                    |                            | number          |
| DeliveryVatType       |                    |                            | number          |
| DeliveryVatRate       |                    |                            | number          |
| DeliveryVatAmount     |                    |                            | number          |
| GrandTotal            | :heavy_check_mark: |                            | number          |
| GrandTotalDeliveryFee | :heavy_check_mark: |                            | number          |
| SellerTaxId           | :heavy_check_mark: |                            | string          |
| BuyerTaxId            | :heavy_check_mark: |                            | string          |
| PoItemDetail          | :heavy_check_mark: |                            | array of object |

**PoItemDetail Object**

| Parameter       |      Required      | Description | Schema |
| --------------- |:------------------:| ----------- | ------ |
| RfqItemId       | :heavy_check_mark: |             | guid   |
| QuotationItemId | :heavy_check_mark: |             | guid   |
| Quantity        | :heavy_check_mark: |             | number |
| Price           | :heavy_check_mark: |             | number |
| Unit            | :heavy_check_mark: |             | string |
| Description     | :heavy_check_mark: |             | string |
| Note            |                    |             | string |

**Body Response**

| Parameter | Description | Schema |
| --------- | ----------- | ------ |
| PoId      |             | guid   |
| PoCode    |             | string |


#### Example Request 
```json 
{
    "CreateByUserId":"b1b7711b-158f-48fe-adc0-9cfb52565911",
    "CreateByUserName":"TestMan",
    "OrgId":"b1b7711b-158f-48fe-adc0-9cfb52565911",
    "OrgName":"ทดสอบ จำกัด",
    "RfqId":"cf7aba83-468d-41e1-9af8-3465189f3143",
    "QuotationId":"e3a551af-cae9-432c-adfb-77fb3f812a08",
    "ProjectId":"2b1be735-e90f-4700-b1d1-514ba8710a56",
    "ProjectName":"โครงการทดสอบ",
    "VendorId":"490f4f7a-761a-4595-990a-ba128d7dc6f0",
    "VendorName":"ร้านค้าทดสอบ",
    "DocumentFileUrl":"path to file ",
    "ContactName":"นะจ๊ะ",
    "ContactPhone":"010001100",
    "Address":"No. 1624/2 New Phetburi Road Makkasan Ratchathewi Bangkok 10400",
    "Note":"-",
    "CreateType": 1 ,
    "DocumentReference":"pr-001,pr-002",
    "TotalItem":13,
    "SubTotal": 500,
    "Beforvat": 500,
    "Discount": 50,
    "VatType": 3,
    "VatRate": 0,
    "VatAmount":0,
    "DeliveryFee": 50 ,
    "DeliveryVatType": 3,
    "DeliveryVatRate": 0,
    "DeliveryVatAmount": 50,
    "GrandTotal": 450,
    "GrandTotalDeliveryFee":500,
    "SellerTaxId":"112232323",
    "BuyerTaxId":"323232211",
    "PoItemDetail":[
        {
            "RfqItemId":"391f3266-d828-48e4-a2aa-fc5da817968a",
            "QuotationItemId":"98a26680-160d-402c-872d-6e8750bf5f82",
            "Quantity":99,
            "Price":1250,
            "Unit":"gg",
            "Description":"Iron ",
            "Note": null
        },{
            "RfqItemId":"391f3266-d828-48e4-a2aa-fc5da817968a",
            "QuotationItemId":"98a26680-160d-402c-872d-6e8750bf5f82",
            "Quantity":12,
            "Price":250,
            "Unit":"gg",
            "Description":"Gold ",
            "Note": null
        },{
            "RfqItemId":"391f3266-d828-48e4-a2aa-fc5da817968a",
            "QuotationItemId":"98a26680-160d-402c-872d-6e8750bf5f82",
            "Quantity":1,
            "Price":50000,
            "Unit":"gg",
            "Description":"sircon ",
            "Note": null
        },{
            "RfqItemId":"391f3266-d828-48e4-a2aa-fc5da817968a",
            "QuotationItemId":"98a26680-160d-402c-872d-6e8750bf5f82",
            "Quantity":3200,
            "Price":1900000,
            "Unit":"gg",
            "Description":"paper glass ",
            "Note": null
        },
    ]
}
```

#### Example Response 
```json 
{
  "status": 200,
  "message": "Success",
  "data": {
    "PoId":"30e410d8-4117-4669-9a28-d32b4717fadd",
    "PoCode":"PO-220422-0001",
  }
}
```
### `PUT /api/v1/Buyer/{PoId}/Status/{Status}`

> สำหรับให้ Buyer เปลี่ยนแปลงสถานะของเอกสาร po โดยเป็นสถานะใดๆก็ได้

**Body Request**

| Parameter               |      Required      | Description     | Schema |
| ----------------------- |:------------------:| --------------- | ------ |
| [Status](#POStatusEnum) | :heavy_check_mark: |                 | number |
| PoId                    | :heavy_check_mark: |                 | guid   |
| CreateByUserId          | :heavy_check_mark: | User ref id     | string |
| CreateByUserName        | :heavy_check_mark: |                 | string |
| Reason                  |                    |                 | string |
| ActionByType            |                    | Buyer and Admin | string |

**Body Response**

| Parameter | Description | Schema |
| --------- | ----------- | ------ |
| data      |             | boolean|


#### Example Request 
```xml 
> https://{environment}/api/v1/Buyer/30e410d8-4117-4669-9a28-d32b4717fadd/Status`
```
```json
{
    "CreateByUserId":"b1b7711b-158f-48fe-adc0-9cfb52565911",
    "CreateByUserName":"TestMan",
    "Status":1,
    "Reason":"Cancel reason",
    "ActionBy":"Buyer"
}

```


#### Example Response 
```json 
{
  "status": 200,
  "message": "Success",
  "data": true
}
```
### `PUT /api/v1/Buyer/{PoId}`

> สำหรับให้ Buyer แก้ไข เอกสาร po 

**Body Request**

| Parameter             |      Required      | Description | Schema          |
| --------------------- |:------------------:| ----------- | --------------- |
| CreateByUserId        | :heavy_check_mark: | User ref id | string          |
| CreateByUserName      | :heavy_check_mark: |             | string          |
| DocumentFileUrl       |                    |             | string          |
| ContactName           | :heavy_check_mark: |             | string          |
| ContactPhone          | :heavy_check_mark: |             | string          |
| Address               | :heavy_check_mark: |             | string          |
| Note                  |                    |             | string          |
| DocumentReference     |                    |             | string          |
| TotalItem             | :heavy_check_mark: |             | number          |
| SubTotal              | :heavy_check_mark: |             | number          |
| Beforvat              | :heavy_check_mark: |             | number          |
| Discount              |                    |             | number          |
| VatType               | :heavy_check_mark: |             | number          |
| VatRate               | :heavy_check_mark: |             | number          |
| VatAmount             | :heavy_check_mark: |             | number          |
| DeliveryFee           |                    |             | number          |
| DeliveryVatType       |                    |             | number          |
| DeliveryVatRate       |                    |             | number          |
| DeliveryVatAmount     |                    |             | number          |
| GrandTotal            | :heavy_check_mark: |             | number          |
| GrandTotalDeliveryFee | :heavy_check_mark: |             | number          |
| PoItemDetail          | :heavy_check_mark: |             | array of object |

**PoItemDetail Object**

| Parameter   |      Required      | Description | Schema |
| ----------- |:------------------:| ----------- | ------ |
| PoItemId    |                    |             | guid   |
| Quantity    | :heavy_check_mark: |             | number |
| Price       | :heavy_check_mark: |             | number |
| Unit        | :heavy_check_mark: |             | string |
| Description | :heavy_check_mark: |             | string |
| Note        |                    |             | string |

**Body Response**

| Parameter | Description | Schema |
| --------- | ----------- | ------ |
| data      |             | boolean|


#### Example Request 
```json 
{
    "PoId":"490f4f7a-761a-4595-990a-ba128d7dc6f0",
    "CreateByUserId":"b1b7711b-158f-48fe-adc0-9cfb52565911",
    "CreateByUserName":"TestMan",
    "DocumentFileUrl":"path to file ",
    "ContactName":"นะจ๊ะ",
    "ContactPhone":"010001100",
    "Address":"No. 1624/2 New Phetburi Road Makkasan Ratchathewi Bangkok 10400",
    "Note":"-",
    "CreateType": 1 ,
    "DocumentReference":"pr-001,pr-002",
    "TotalItem":13,
    "SubTotal": 500,
    "Beforvat": 500,
    "Discount": 50,
    "VatType": 3,
    "VatRate": 0,
    "VatAmount":0,
    "DeliveryFee": 50 ,
    "DeliveryVatType": 3,
    "DeliveryVatRate": 0,
    "DeliveryVatAmount": 50,
    "GrandTotal": 450,
    "GrandTotalDeliveryFee":500,
    "PoItemDetail":[
        {
            "PoItemId":"391f3266-d828-48e4-a2aa-fc5da817968a",
            "Quantity":99,
            "Price":1250,
            "Unit":"gg",
            "Description":"Iron ",
            "Note": null
        },{
            "PoItemId":"391f3266-d828-48e4-a2aa-fc5da817968a",
            "Quantity":12,
            "Price":250,
            "Unit":"gg",
            "Description":"Gold ",
            "Note": null
        },{
            "PoItemId":"391f3266-d828-48e4-a2aa-fc5da817968a",
            "Quantity":1,
            "Price":50000,
            "Unit":"gg",
            "Description":"sircon ",
            "Note": null
        },{
            "PoItemId":"391f3266-d828-48e4-a2aa-fc5da817968a",
            "Quantity":3200,
            "Price":1900000,
            "Unit":"gg",
            "Description":"paper glass ",
            "Note": null
        },
    ]
}
```

#### Example Response 
```json 
{
  "status": 200,
  "message": "Success",
  "data": true
}
```
### `GET /api/v1/Buyer/{OrgId}`

> สำหรับให้ Buyer เรียกดูรายการเอกสาร po จำแนกโดย organize 

**Param Request**

| Parameter |      Required      | Description                                                             | Schema |
| --------- |:------------------:| ----------------------------------------------------------------------- | ------ |
| Keyword   |                    | ใช้สำหรับการค้นหาทึ่เจาะจง เช่น PO-Code , ProjectName , Vendorname      | string |
| status    |                    | ค้นหาโดยเจาะจงสถานะของเอกสาร โดยค่าเริ่มต้นคือทั้งหมด                   | number |
| page      |                    | หมายเลขหน้าในกรณีที่มีมากกว่า 1 หน้า โดยค่าเริ่มต้นคือ 1                | number |
| perpage   |                    | จำนวนเอกสารที่เรียกได้ใน 1 หน้า สูงสุด 100 รายการ  โดยค่าเริ่มต้นคือ 10 | number |
| OrgId     | :heavy_check_mark: | organize id ที่ออกโดย rakamo                                            | string |


**Body Response**

| Parameter             |      Required      | Description | Schema |
| --------------------- |:------------------:| ----------- | ------ |
| PoId                  | :heavy_check_mark: |             | guid   |
| PoCode                | :heavy_check_mark: |             | string |
| ProjectName           | :heavy_check_mark: |             | string |
| VendorName            | :heavy_check_mark: |             | string |
| CreateDate            | :heavy_check_mark: |             | string |
| GrandTotal            | :heavy_check_mark: |             | string |
| Status                | :heavy_check_mark: |             | string |
| DocumentFileUrl       |                    |             | string |

#### Example Request 
```xml 
> https://{environment}/api/v1/Buyer/b1b7711b-158f-48fe-adc0-9cfb52565911/?keyword=PO-220422-0001&page=1&perpage=10&status=0`
```

#### Example Response 
```json 
{
  "status": 200,
  "message": "Success",
  "data": {
      "count": 15,
      "item" :[
          {
              "PoId":"b1b7711b-158f-48fe-adc0-9cfb52565911",
              "PoCode":"PO-220422-0001",
              "ProjectName":"โครงการทดสอบ",
              "VendorName":"ร้านค้าทดสอบ",
              "DocumentFileUrl":"path to file ",
              "CreateDate":"2022-04-22 18:00:01",
              "GrandTotal":500,
              "Status":1,
          },{
              "PoId":"b1b7711b-158f-48fe-adc0-9cfb52565911",
              "PoCode":"PO-220422-0001",
              "ProjectName":"โครงการทดสอบ",
              "VendorName":"ร้านค้าทดสอบ",
              "DocumentFileUrl":"path to file ",
              "CreateDate":"2022-04-22 18:00:01",
              "GrandTotal":500,
              "Status":1,
          }
      ]
  }
}
```
### `GET /api/v1/Buyer/{OrgId}/Document`

> สำหรับให้ Buyer เรียกดูรายละเอียดเอกสาร po 

**Param Request**

| Parameter   | Required           |      Mandary       | Description                  | Schema |
| ----------- | ------------------ |:------------------:| ---------------------------- | ------ |
| OrgId       | :heavy_check_mark: |                    |                              | string |
| QuotationId |                    | :heavy_check_mark: | QuotationId ที่ออกโดย rakmao | string |
| RfqId       |                    | :heavy_check_mark: | RfqId ที่ออกโดย rakmao       | string |
| PoId        |                    | :heavy_check_mark: | PoId ที่ออกโดย rakmao        | string |

**Body Response**

| Parameter             |      Required      | Description | Schema          |
| --------------------- |:------------------:| ----------- | --------------- |
| PoId                  | :heavy_check_mark: |             | guid            |
| PoCode                | :heavy_check_mark: |             | string          |
| CreateDate            | :heavy_check_mark: |             | string          |
| CreateByUserId          | :heavy_check_mark: |             | string          |
| OrgId                 | :heavy_check_mark: |             | guid            |
| OrgName               | :heavy_check_mark: |             | string          |
| RfqId                 | :heavy_check_mark: |             | guid            |
| QuotationId           | :heavy_check_mark: |             | guid            |
| ProjectId             | :heavy_check_mark: |             | guid            |
| ProjectName           | :heavy_check_mark: |             | string          |
| VendorId              | :heavy_check_mark: |             | guid            |
| VendorName            | :heavy_check_mark: |             | string          |
| DocumentFileUrl       |                    |             | string          |
| ContactName           | :heavy_check_mark: |             | string          |
| ContactPhone          | :heavy_check_mark: |             | string          |
| Address               | :heavy_check_mark: |             | string          |
| Note                  |                    |             | string          |
| CreateType            | :heavy_check_mark: |             | number          |
| Status                | :heavy_check_mark: |             | number          |
| DocumentReference     |                    |             | string          |
| TotalItem             | :heavy_check_mark: |             | number          |
| SubTotal              | :heavy_check_mark: |             | number          |
| Beforvat              | :heavy_check_mark: |             | number          |
| Discount              |                    |             | number          |
| VatType               | :heavy_check_mark: |             | number          |
| VatRate               | :heavy_check_mark: |             | number          |
| VatAmount             | :heavy_check_mark: |             | number          |
| DeliveryFee           |                    |             | number          |
| DeliveryVatType       |                    |             | number          |
| DeliveryVatRate       |                    |             | number          |
| DeliveryVatAmount     |                    |             | number          |
| GrandTotal            | :heavy_check_mark: |             | number          |
| GrandTotalDeliveryFee | :heavy_check_mark: |             | number          |
| SellerTaxId           | :heavy_check_mark: |             | string          |
| BuyerTaxId            | :heavy_check_mark: |             | string          |
| PoItemDetail          | :heavy_check_mark: |             | array of object |

**PoItemDetail Object**

| Parameter       |      Required      | Description | Schema |
| --------------- |:------------------:| ----------- | ------ |
| PoItemId        | :heavy_check_mark: |             | guid   |
| RfqItemId       | :heavy_check_mark: |             | guid   |
| QuotationItemId | :heavy_check_mark: |             | guid   |
| Quantity        | :heavy_check_mark: |             | number |
| Price           | :heavy_check_mark: |             | number |
| Unit            | :heavy_check_mark: |             | string |
| Description     | :heavy_check_mark: |             | string |
| Note            |                    |             | string |

**Body Response**

| Parameter | Description | Schema |
| --------- | ----------- | ------ |
| PoId      |             | guid   |
| PoCode    |             | string |

#### Example Request 
```xml 
> https://{environment}/api/v1/Buyer/b1b7711b-158f-48fe-adc0-9cfb52565911/Document?PoId=b1b7711b-158f-48fe-adc0-9cfb52565911`
```

#### Example Response 
```json 
{
  "status": 200,
  "message": "Success",
  "data": [
      {
    "PoId":"b1b7711b-158f-48fe-adc0-9cfb52565911",
    "PoCode":"PO-220422-0001",
    "CreateByUserId":"",
    "OrgId":"b1b7711b-158f-48fe-adc0-9cfb52565911",
    "OrgName":"ทดสอบ จำกัด",
    "RfqId":"cf7aba83-468d-41e1-9af8-3465189f3143",
    "QuotationId":"e3a551af-cae9-432c-adfb-77fb3f812a08",
    "ProjectId":"2b1be735-e90f-4700-b1d1-514ba8710a56",
    "ProjectName":"โครงการทดสอบ",
    "VendorId":"490f4f7a-761a-4595-990a-ba128d7dc6f0",
    "VendorName":"ร้านค้าทดสอบ",
    "DocumentFileUrl":"path to file ",
    "ContactName":"นะจ๊ะ",
    "ContactPhone":"010001100",
    "Address":"No. 1624/2 New Phetburi Road Makkasan Ratchathewi Bangkok 10400",
    "Note":"-",
    "CreateType": 1 ,
    "Status": 1 ,
    "DocumentReference":"pr-001,pr-002",
    "TotalItem":13,
    "SubTotal": 500,
    "Beforvat": 500,
    "Discount": 50,
    "VatType": 3,
    "VatRate": 0,
    "VatAmount":0,
    "DeliveryFee": 50 ,
    "DeliveryVatType": 3,
    "DeliveryVatRate": 0,
    "DeliveryVatAmount": 50,
    "GrandTotal": 450,
    "GrandTotalDeliveryFee":500,
    "SellerTaxId":"112232323",
    "BuyerTaxId":"323232211",
    "PoItemDetail":[
        {
            "PoItemId":"391f3266-d828-48e4-a2aa-fc5da817968a",
            "RfqItemId":"391f3266-d828-48e4-a2aa-fc5da817968a",
            "QuotationItemId":"98a26680-160d-402c-872d-6e8750bf5f82",
            "Quantity":99,
            "Price":1250,
            "Unit":"gg",
            "Description":"Iron ",
            "Note": null
        },{
            "PoItemId":"391f3266-d828-48e4-a2aa-fc5da817968a",
            "RfqItemId":"391f3266-d828-48e4-a2aa-fc5da817968a",
            "QuotationItemId":"98a26680-160d-402c-872d-6e8750bf5f82",
            "Quantity":12,
            "Price":250,
            "Unit":"gg",
            "Description":"Gold ",
            "Note": null
        },{
            "PoItemId":"391f3266-d828-48e4-a2aa-fc5da817968a",
            "RfqItemId":"391f3266-d828-48e4-a2aa-fc5da817968a",
            "QuotationItemId":"98a26680-160d-402c-872d-6e8750bf5f82",
            "Quantity":1,
            "Price":50000,
            "Unit":"gg",
            "Description":"sircon ",
            "Note": null
        },{
            "PoItemId":"391f3266-d828-48e4-a2aa-fc5da817968a",
            "RfqItemId":"391f3266-d828-48e4-a2aa-fc5da817968a",
            "QuotationItemId":"98a26680-160d-402c-872d-6e8750bf5f82",
            "Quantity":3200,
            "Price":1900000,
            "Unit":"gg",
            "Description":"paper glass ",
            "Note": null
        },
    ]
  },
      {
    "PoId":"b1b7711b-158f-48fe-adc0-9cfb52565911",
    "PoCode":"PO-220422-0001",
    "CreateByUser":"",
    "OrgId":"b1b7711b-158f-48fe-adc0-9cfb52565911",
    "OrgName":"ทดสอบ จำกัด",
    "RfqId":"cf7aba83-468d-41e1-9af8-3465189f3143",
    "QuotationId":"e3a551af-cae9-432c-adfb-77fb3f812a08",
    "ProjectId":"2b1be735-e90f-4700-b1d1-514ba8710a56",
    "ProjectName":"โครงการทดสอบ",
    "VendorId":"490f4f7a-761a-4595-990a-ba128d7dc6f0",
    "VendorName":"ร้านค้าทดสอบ",
    "DocumentFileUrl":"path to file ",
    "ContactName":"นะจ๊ะ",
    "ContactPhone":"010001100",
    "Address":"No. 1624/2 New Phetburi Road Makkasan Ratchathewi Bangkok 10400",
    "Note":"-",
    "CreateType": 1 ,
    "Status": 1 ,
    "DocumentReference":"pr-001,pr-002",
    "TotalItem":13,
    "SubTotal": 500,
    "Beforvat": 500,
    "Discount": 50,
    "VatType": 3,
    "VatRate": 0,
    "VatAmount":0,
    "DeliveryFee": 50 ,
    "DeliveryVatType": 3,
    "DeliveryVatRate": 0,
    "DeliveryVatAmount": 50,
    "GrandTotal": 450,
    "GrandTotalDeliveryFee":500,
    "SellerTaxId":"112232323",
    "BuyerTaxId":"323232211",
    "PoItemDetail":[
        {
            "RfqItemId":"391f3266-d828-48e4-a2aa-fc5da817968a",
            "QuotationItemId":"98a26680-160d-402c-872d-6e8750bf5f82",
            "Quantity":99,
            "Price":1250,
            "Unit":"gg",
            "Description":"Iron ",
            "Note": null
        },{
            "RfqItemId":"391f3266-d828-48e4-a2aa-fc5da817968a",
            "QuotationItemId":"98a26680-160d-402c-872d-6e8750bf5f82",
            "Quantity":12,
            "Price":250,
            "Unit":"gg",
            "Description":"Gold ",
            "Note": null
        },{
            "RfqItemId":"391f3266-d828-48e4-a2aa-fc5da817968a",
            "QuotationItemId":"98a26680-160d-402c-872d-6e8750bf5f82",
            "Quantity":1,
            "Price":50000,
            "Unit":"gg",
            "Description":"sircon ",
            "Note": null
        },{
            "RfqItemId":"391f3266-d828-48e4-a2aa-fc5da817968a",
            "QuotationItemId":"98a26680-160d-402c-872d-6e8750bf5f82",
            "Quantity":3200,
            "Price":1900000,
            "Unit":"gg",
            "Description":"paper glass ",
            "Note": null
        },
    ]
  }
  ]
}
```

##  Seller API 

### `GET /api/v1/Seller/{TaxId}`

> สำหรับให้ Seller เรียกดูรายการเอกสาร po จำแนกโดย organize 

**Param Request**

| Parameter |      Required      | Description                                                             | Schema |
| --------- |:------------------:| ----------------------------------------------------------------------- | ------ |
| Keyword   |                    | ใช้สำหรับการค้นหาทึ่เจาะจง เช่น PO-Code , ProjectName , Vendorname      | string |
| status    |                    | ค้นหาโดยเจาะจงสถานะของเอกสาร โดยค่าเริ่มต้นคือทั้งหมด                   | number |
| page      |                    | หมายเลขหน้าในกรณีที่มีมากกว่า 1 หน้า โดยค่าเริ่มต้นคือ 1                | number |
| perpage   |                    | จำนวนเอกสารที่เรียกได้ใน 1 หน้า สูงสุด 100 รายการ  โดยค่าเริ่มต้นคือ 10 | number |
| TaxId     | :heavy_check_mark: | Vendor taxid                                            | string |


**Body Response**

| Parameter             |      Required      | Description | Schema |
| --------------------- |:------------------:| ----------- | ------ |
| PoId                  | :heavy_check_mark: |             | guid   |
| PoCode                | :heavy_check_mark: |             | string |
| ProjectName           | :heavy_check_mark: |             | string |
| BuyerOrgName          | :heavy_check_mark: |             | string |
| CreateDate            | :heavy_check_mark: |             | string |
| GrandTotal            | :heavy_check_mark: |             | string |
| Status                | :heavy_check_mark: |             | string |
| DocumentFileUrl       |                    |             | string |

#### Example Request 
```xml 
> https://{environment}/api/v1/Buyer/List/b1b7711b-158f-48fe-adc0-9cfb52565911/?keyword=PO-220422-0001&page=1&perpage=10&status=0`
```

#### Example Response 
```json 
{
  "status": 200,
  "message": "Success",
  "data": {
      "count": 15,
      "item" :[
          {
              "PoId":"b1b7711b-158f-48fe-adc0-9cfb52565911",
              "PoCode":"PO-220422-0001",
              "ProjectName":"โครงการทดสอบ",
              "BuyerOrgName":"ผู้ซื้อทดสอบ",
              "DocumentFileUrl":"path to file ",
              "CreateDate":"2022-04-22 18:00:01",
              "GrandTotal":500,
              "Status":1,
          },{
              "PoId":"b1b7711b-158f-48fe-adc0-9cfb52565911",
              "PoCode":"PO-220422-0001",
              "ProjectName":"ผู้ซื้อทดสอบ",
              "BuyerOrgName":"ร้านค้าทดสอบ",
              "DocumentFileUrl":"path to file ",
              "CreateDate":"2022-04-22 18:00:01",
              "GrandTotal":500,
              "Status":1,
          }
      ]
  }
}
```
### `GET /api/v1/Seller/{TaxId}/Document`

> สำหรับให้ Seller เรียกดูรายละเอียดเอกสาร po เลือกส่ง query parameter อย่างได้อย่างหนึ่งเผื่ออาจอิงข้อมูล

**Param Request**

| Parameter   | Required           |      Mandary       | Description                  | Schema |
| ----------- | ------------------ |:------------------:| ---------------------------- | ------ |
| TaxId       | :heavy_check_mark: |                    | Vendor taxid                 | string |
| QuotationId |                    | :heavy_check_mark: | QuotationId ที่ออกโดย rakmao | string |
| RfqId       |                    | :heavy_check_mark: | RfqId ที่ออกโดย rakmao       | string |
| PoId        |                    | :heavy_check_mark: | PoId ที่ออกโดย rakmao        | string |

**Body Response**

| Parameter             |      Required      | Description | Schema          |
| --------------------- |:------------------:| ----------- | --------------- |
| PoId                  | :heavy_check_mark: |             | guid            |
| PoCode                | :heavy_check_mark: |             | string          |
| Status                | :heavy_check_mark: |             | number          |
| BuyerOrgName          | :heavy_check_mark: |             | string          |
| RfqId                 | :heavy_check_mark: |             | guid            |
| QuotationId           | :heavy_check_mark: |             | guid            |
| CreateDate            | :heavy_check_mark: |             | date            |
| SenderDate            | :heavy_check_mark: |             | date            |
| ProjectName           | :heavy_check_mark: |             | string          |
| VendorName            | :heavy_check_mark: |             | string          |
| DocumentFileUrl       |                    |             | string          |
| ContactName           | :heavy_check_mark: |             | string          |
| ContactPhone          | :heavy_check_mark: |             | string          |
| Address               | :heavy_check_mark: |             | string          |
| Note                  |                    |             | string          |
| TotalItem             | :heavy_check_mark: |             | number          |
| SubTotal              | :heavy_check_mark: |             | number          |
| Beforvat              | :heavy_check_mark: |             | number          |
| Discount              |                    |             | number          |
| VatType               | :heavy_check_mark: |             | number          |
| VatRate               | :heavy_check_mark: |             | number          |
| VatAmount             | :heavy_check_mark: |             | number          |
| DeliveryFee           |                    |             | number          |
| DeliveryVatType       |                    |             | number          |
| DeliveryVatRate       |                    |             | number          |
| DeliveryVatAmount     |                    |             | number          |
| GrandTotal            | :heavy_check_mark: |             | number          |
| GrandTotalDeliveryFee | :heavy_check_mark: |             | number          |
| SellerTaxId           | :heavy_check_mark: |             | string          |
| BuyerTaxId            | :heavy_check_mark: |             | string          |
| PoItemDetail          | :heavy_check_mark: |             | array of object |
| CancelReason           |   |             | string          |
| CancelNote            |   |             | string          |

**PoItemDetail Object**

| Parameter       |      Required      | Description | Schema |
| --------------- |:------------------:| ----------- | ------ |
| PoItemId        | :heavy_check_mark: |             | guid   |
| Quantity        | :heavy_check_mark: |             | number |
| Price           | :heavy_check_mark: |             | number |
| Unit            | :heavy_check_mark: |             | string |
| Description     | :heavy_check_mark: |             | string |
| Note            |                    |             | string |


#### Example Request 
```xml 
> https://{environment}/api/v1/Seller/112232323/Document?PoId=b1b7711b-158f-48fe-adc0-9cfb52565911`
```

#### Example Response 
```json 
{
  "status": 200,
  "message": "Success",
  "data": [
      {
    "PoId":"b1b7711b-158f-48fe-adc0-9cfb52565911",
    "PoCode":"PO-220422-0001",
    "BuyerOrgName":"ทดสอบ จำกัด",
    "RfqId":"cf7aba83-468d-41e1-9af8-3465189f3143",
    "QuotationId":"e3a551af-cae9-432c-adfb-77fb3f812a08",
    "ProjectName":"โครงการทดสอบ",
    "CreateDate":"2022/06/01 01:20:30",
    "SenderDate":"2022/06/01 01:20:30",
    "VendorName":"ร้านค้าทดสอบ",
    "DocumentFileUrl":"path to file ",
    "ContactName":"นะจ๊ะ",
    "ContactPhone":"010001100",
    "Address":"No. 1624/2 New Phetburi Road Makkasan Ratchathewi Bangkok 10400",
    "Note":"-",
    "CreateType": 1 ,
    "Status": 1 ,
    "TotalItem":13,
    "SubTotal": 500,
    "Beforvat": 500,
    "Discount": 50,
    "VatType": 3,
    "VatRate": 0,
    "VatAmount":0,
    "DeliveryFee": 50 ,
    "DeliveryVatType": 3,
    "DeliveryVatRate": 0,
    "DeliveryVatAmount": 50,
    "GrandTotal": 450,
    "GrandTotalDeliveryFee":500,
    "SellerTaxId":"112232323",
    "BuyerTaxId":"323232211",
    "PoItemDetail":[
        {
            "PoItemId":"391f3266-d828-48e4-a2aa-fc5da817968a",
            "Quantity":99,
            "Price":1250,
            "Unit":"gg",
            "Description":"Iron ",
            "Note": null
        },{
            "PoItemId":"391f3266-d828-48e4-a2aa-fc5da817968a",
            "Quantity":12,
            "Price":250,
            "Unit":"gg",
            "Description":"Gold ",
            "Note": null
        },{
            "PoItemId":"391f3266-d828-48e4-a2aa-fc5da817968a",
            "Quantity":1,
            "Price":50000,
            "Unit":"gg",
            "Description":"sircon ",
            "Note": null
        },{
            "PoItemId":"391f3266-d828-48e4-a2aa-fc5da817968a",
            "Quantity":3200,
            "Price":1900000,
            "Unit":"gg",
            "Description":"paper glass ",
            "Note": null
        },
    ]
  },{
    "CreateByUser":"",
    "OrgId":"b1b7711b-158f-48fe-adc0-9cfb52565911",
    "OrgName":"ทดสอบ จำกัด",
    "RfqId":"cf7aba83-468d-41e1-9af8-3465189f3143",
    "QuotationId":"e3a551af-cae9-432c-adfb-77fb3f812a08",
    "ProjectId":"2b1be735-e90f-4700-b1d1-514ba8710a56",
    "ProjectName":"โครงการทดสอบ",
    "VendorId":"490f4f7a-761a-4595-990a-ba128d7dc6f0",
    "VendorName":"ร้านค้าทดสอบ",
    "DocumentFileUrl":"path to file ",
    "ContactName":"นะจ๊ะ",
    "ContactPhone":"010001100",
    "Address":"No. 1624/2 New Phetburi Road Makkasan Ratchathewi Bangkok 10400",
    "Note":"-",
    "CreateType": 1 ,
    "Status": 1 ,
    "DocumentReference":"pr-001,pr-002",
    "TotalItem":13,
    "SubTotal": 500,
    "Beforvat": 500,
    "Discount": 50,
    "VatType": 3,
    "VatRate": 0,
    "VatAmount":0,
    "DeliveryFee": 50 ,
    "DeliveryVatType": 3,
    "DeliveryVatRate": 0,
    "DeliveryVatAmount": 50,
    "GrandTotal": 450,
    "GrandTotalDeliveryFee":500,
    "SellerTaxId":"112232323",
    "BuyerTaxId":"323232211",
    "PoItemDetail":[
        {
            "RfqItemId":"391f3266-d828-48e4-a2aa-fc5da817968a",
            "QuotationItemId":"98a26680-160d-402c-872d-6e8750bf5f82",
            "Quantity":99,
            "Price":1250,
            "Unit":"gg",
            "Description":"Iron ",
            "Note": null
        },{
            "RfqItemId":"391f3266-d828-48e4-a2aa-fc5da817968a",
            "QuotationItemId":"98a26680-160d-402c-872d-6e8750bf5f82",
            "Quantity":12,
            "Price":250,
            "Unit":"gg",
            "Description":"Gold ",
            "Note": null
        },{
            "RfqItemId":"391f3266-d828-48e4-a2aa-fc5da817968a",
            "QuotationItemId":"98a26680-160d-402c-872d-6e8750bf5f82",
            "Quantity":1,
            "Price":50000,
            "Unit":"gg",
            "Description":"sircon ",
            "Note": null
        },{
            "RfqItemId":"391f3266-d828-48e4-a2aa-fc5da817968a",
            "QuotationItemId":"98a26680-160d-402c-872d-6e8750bf5f82",
            "Quantity":3200,
            "Price":1900000,
            "Unit":"gg",
            "Description":"paper glass ",
            "Note": null
        },
    ]
  }
  ]
}
```
### `POST /api/v1/Seller/{PoId}/RequestCancel`

> สำหรับให้ Seller ร้องขอการเปลี่ยนแปลงสถานะของเอกสาร po เป็นยกเลิก

**Parameter Request**

| Parameter |      Required      | Description | Schema |
| --------- |:------------------:| ----------- | ------ |
| PoId      | :heavy_check_mark: |             | guid   |

**Body Request**

| Parameter        |      Required      | Description | Schema |
| ---------------- |:------------------:| ----------- | ------ |
| CreateByUserId   | :heavy_check_mark: |             | string |
| CreateByUserName | :heavy_check_mark: |             | string |
| SellerTaxId      | :heavy_check_mark: |             | string |
| Reason           |                    |             | string |
| Note             |                    |             | string |

**Body Response**

| Parameter | Description | Schema |
| --------- | ----------- | ------ |
| data      |             | boolean|


#### Example Request 
```xml 
> https://{environment}/api/v1/Seller/30e410d8-4117-4669-9a28-d32b4717fadd/Cancel`
```
```json 
{
    "CreateByUserId": "104",
    "CreateByUserName": "Test man",
    "SellerTaxId":"0010010011121"
    "Reason": "Cancel reason"
}
```

#### Example Response 
```json 
{
  "status": 200,
  "message": "Success",
  "data": true
}
```
### `POST /api/v1/Seller/{PoId}/Reject`

> สำหรับให้ Seller ร้องขอการเปลี่ยนแปลงของเอกสาร po 

**Parameter Request**

| Parameter |      Required      | Description | Schema |
| --------- |:------------------:| ----------- | ------ |
| PoId      | :heavy_check_mark: |             | guid   |

**Body Request**

| Parameter        |      Required      | Description | Schema |
| ---------------- |:------------------:| ----------- | ------ |
| CreateByUserId   | :heavy_check_mark: |             | string |
| CreateByUserName | :heavy_check_mark: |             | string |
| SellerTaxId      | :heavy_check_mark: |             | string |
| Reason           |                    |             | string |
| Note             |                    |             | string |

**Body Response**

| Parameter | Description | Schema |
| --------- | ----------- | ------ |
| data      |             | boolean|


#### Example Request 
```xml 
> https://{environment}/api/v1/Seller/30e410d8-4117-4669-9a28-d32b4717fadd/Cancel`
```
```json 
{
    "CreateByUserId": "104",
    "CreateByUserName": "Test man",
    "SellerTaxId":"0010010011121"
    "Reason": "Cancel reason"
}
```

#### Example Response 
```json 
{
  "status": 200,
  "message": "Success",
  "data": true
}
```

##  Webhook

### List Webhook `GET /api/v1/Webhook`
> List รายการ webhook ที่ลงทะเบียน

**Body Response**

| Parameter | Description                                             | Schema         |
| --------- | ------------------------------------------------------- | -------------- |
| Id        |                                                         | string |
| TypeName  | ชื่อของ Webhook                                         | string         |
| Endpoint  | Url Webhook ที่ลงทะเบียน                                | string         |
| IsLogin   | Endpoint นี้ต้องการ login จาก profile ก่อนที่จะ reqeust | boolean |
| Header    | Header ที่แนบไปกับ Webhook ที่ลงทะเบียน                 | key/pair value |

**Example Request**
> GET https://{environment}/api/v1/Webhook

**Example Response**
```json
{
  "status": 200,
  "message": "Success",
  "data": [
      {   
          "Id" : "4560d9a6-9264-4f20-898a-b722aedd9b8f",
          "IsLogin" : false,
          "TypeName" : "DocumentReady",
          "Endpoint" : "https://api-name.domain/path-to-example-api/VendorInterested",
          "Header" : {
              "Authorization": "beare **********"
          }
      }
  ]
}
```
### Get Webhook `GET /api/v1/Webhook/{enumValue}`
>  เรียกข้อมูล webhook แบบเจาะจง 

**Body Response**

| Parameter | Description                                             | Schema         |
| --------- | ------------------------------------------------------- | -------------- |
| Id        |                                                         | string |
| TypeName  | ชื่อของ Webhook                                         | string         |
| Endpoint  | Url Webhook ที่ลงทะเบียน                                | string         |
| IsLogin   | Endpoint นี้ต้องการ login จาก profile ก่อนที่จะ reqeust | boolean |
| Header    | Header ที่แนบไปกับ Webhook ที่ลงทะเบียน                 | key/pair value |

**Example Request**
> GET https://{environment}/api/v1/Webhook/301

**Example Response**
```json
{
  "status": 200,
  "message": "Success",
  "data": {   
      "Id" : "4560d9a6-9264-4f20-898a-b722aedd9b8f",
      "IsLogin" : false,
      "TypeName" : "DocumentReady",
      "Endpoint" : "https://sub-domain.domain-name.domain/path-to-example-api/DocumentReady",
      "Header" : {
          "Authorization": "beare **********"
      }
  }
}
```
### Register Webhook `POST /api/v1/Webhook`

> ผู้พัฒนาต้องลงทะเบียน Webhook ก่อนใช้งานระบบมิเช่นนั้นจะไม่ดำเนินการ Reqeust ใดๆทีข้ามา

> และในบางกรณีผู้พัฒนาอาจจะต้องทำการเพิ่ม Whitelist ตัว Rakmao endpoint ของ environment นั้นๆเพือให้ Webhook สามารถตอบกลับได้สำเร็จ (อาจเกิดขึ้นในกรณีมี security หรือ Firewall)
 
**Body Request**

| Parameter        | Required           | Description                                                                                     | Schema         |
| ---------------- | ------------------ | ----------------------------------------------------------------------------------------------- | -------------- |
| [Type](#Webhook-Schema) | :heavy_check_mark: | ชนิดของ webhook ที่ต้องการสมัคร                                                                 | enum           |
| Endpoint         | :heavy_check_mark: | URL ปลายทางของ webhook ที่ต้องการสมัคร                                                          | string         |
| IsLogin          | :heavy_check_mark: | Endpoint นี้ต้องการ login จาก profile ก่อนที่จะ reqeust                                         | boolean        |
| Header           | :heavy_check_mark: | เป็นตัวเลือกเพิ่มเติมในกรณีทีต้องการแนบ Header ใดๆในขณะที่ Webhook ตอบกลับ (เช่น Authorization) | key/pair value |

**Body Response**

| Parameter | Description                  | Schema |
| --------- | ---------------------------- | ------ |
| Id  | Id ของข้อมูลที่ทำการบันทึก         | string |

**Example Request**
```json
{   
    "IsLogin" : false,
    "Type" : 301,
    "Endpoint" : "https://sub-domain.domain-name.domain/path-to-example-api/DocumentReady",
    "Header" : {
        "Authorization": "beare **********"
    }
 }
```
**Example Response**
```json
{
  "status": 200,
  "message": "Success",
  "data": "588db7e2-ea75-4fbf-98fc-c48419eb9edf"
}
```

### Update Webhook   `PUT /api/v1/Webhook`
> อัพเดทข้อมูล webhook
> 
**Body Request**

| Parameter        | Required           | Description                                                                                     | Schema         |
| ---------------- | ------------------ | ----------------------------------------------------------------------------------------------- | -------------- |
| Id | :heavy_check_mark: | Id ของ webhook                                                               | enum           |
| Endpoint         | :heavy_check_mark: | URL ปลายทางของ webhook ที่ต้องการสมัคร                                                          | string         |
| IsLogin          | :heavy_check_mark: | Endpoint นี้ต้องการ login จาก profile ก่อนที่จะ reqeust                                         | boolean        |
| Header           | :heavy_check_mark: | เป็นตัวเลือกเพิ่มเติมในกรณีทีต้องการแนบ Header ใดๆในขณะที่ Webhook ตอบกลับ (เช่น Authorization) | key/pair value |


**Example Request**
```json
{   
    "Id": "588db7e2-ea75-4fbf-98fc-c48419eb9edf"
    "IsLogin" : false,
    "Type" : 301,
    "Endpoint" : "https://sub-domain.domain-name.domain/path-to-example-api/DocumentReady",
    "Header" : {
        "Authorization": "beare **********"
    }
 }
```
**Example Response**
```json
{
  "status": 200,
  "message": "Success",
  "data": true
}
```

### De-Register Webhook  `DELETE /api/v1/Webhook/{enumValue}`
> ลบการลงทะเบียน Webhook ออกจากระบบ

**Example Request**
> DELETE https://{environment}/api/v1/Webhook/301

**Example Response**
```json
{
  "status": 200,
  "message": "Success",
  "data": true
}
```


## Webhook Schema

| WebhookName   | Value | ServiceType | Description                                              | Schema                        |
| ------------- | ----- | ----------- | -------------------------------------------------------- | ----------------------------- |
| DocumentReady | 301   | Seller      | จะมีการตอบกลับเมื่อฝั่งผู้ซื้อยืนยันการส่งเอกสาร         | [LINK](#DocumentReady)        |
| BuyerNegate   | 302   | Seller      | จะมีการตอบกลับเมื่อฝั่งผู้ซื้อ reject หรือ cancel เอกสาร | [LINK](#DocumentBuyerNegate)  |
| CancelAccept   | 303   | Seller      | จะมีการตอบกลับเมื่อฝั่งผู้ซื้อยอมรับการยกเลิกการซื้อขายจากผู้ขาย | [LINK](#DocumentCancelAccept)  |
| SellerNegate  | 402   | Buyer       | จะมีการตอบกลับเมื่อฝั่งผู้ขาย reject หรือ request cancel เอกสาร  | [LINK](#DocumentSellerNegate) |

### DocumentReady

**Body Request**

| Parameter |      Required      | Description | Schema |
| --------- |:------------------:| ----------- | ------ |
| PoId      | :heavy_check_mark: | PoId ที่ออกโดย po service            | guid   |
| PoCode      | :heavy_check_mark: | PoCode ที่ออกโดย po service            | guid   |
| RfqId       | :heavy_check_mark: | rfqId ที่ออกโดย rakmao             | guid   |
| QuotationId | :heavy_check_mark: |  QuotationId ที่ออกโดย rakmao           | guid   |
| DocumentFileUrl | :heavy_check_mark: | เอกสารที่ผู้ซื้อแนบมาด้วย            | string   |
| ContactName | :heavy_check_mark: | ชื่อผู้ติดต่อ            | string   |
| ContactPhone | :heavy_check_mark: | เบอร์โทรติดต่อ            | string   |
| PoCreateType | :heavy_check_mark: | ประเภทการสร้างเอกสารก            | [number](#PoCreateTypeEnum)   |
| ProjectName | :heavy_check_mark: | ชื่อโครงการ            | string   |
| Province |  | จังหวัด  (จะส่งเฉพาะ DirectPO)          | string   |
| VendorId |  | Id seller ของทาง seller  (จะส่งเฉพาะ DirectPO)          | string   |
| GrandTotal | :heavy_check_mark: | ยอดเงินรวม            | number |
| <mark>BuyerOrgRefId | :heavy_check_mark: | OrgId ที่ออกโดย rakmao            | guid |

### DocumentBuyerNegate

**Body Request**

| Parameter |      Required      | Description | Schema |
| --------- |:------------------:| ----------- | ------ |
| PoId      | :heavy_check_mark: | PoId ที่ออกโดย po service            | guid   |
| RfqId       | :heavy_check_mark: | rfqId ที่ออกโดย rakmao             | guid   |
| QuotationId | :heavy_check_mark: |  QuotationId ที่ออกโดย rakmao           | guid   |
| [Status](#PoDocumentStatus)   | :heavy_check_mark: | สถานะที่เปลี่ยนแปลงไป            | number   |
| CancelReason           |   | เหตุผลในกรณียกเลิกหรือปฏิเสธ            | string          |
| CancelNote            |   |  หมายเหตุในกรณียกเลิกหรือปฏิเสธ| string          |
| ActionByType            | :heavy_check_mark:  |  ชนิดของผู้ดำเนินการเปลี่ยนแปลงเอกสาร (Buyer / Admin) | string          |


### DocumentCancelAccept

**Body Request**

| Parameter |      Required      | Description | Schema |
| --------- |:------------------:| ----------- | ------ |
| PoId      | :heavy_check_mark: | PoId ที่ออกโดย po service            | guid   |
| RfqId       | :heavy_check_mark: | rfqId ที่ออกโดย rakmao             | guid   |
| QuotationId | :heavy_check_mark: |  QuotationId ที่ออกโดย rakmao           | guid   |

### DocumentSellerNegate

**Body Request**

| Parameter |      Required      | Description | Schema |
| --------- |:------------------:| ----------- | ------ |
| PoId      | :heavy_check_mark: | PoId ที่ออกโดย po service            | guid   |
| RfqId       | :heavy_check_mark: | rfqId ที่ออกโดย rakmao             | guid   |
| QuotationId | :heavy_check_mark: |  QuotationId ที่ออกโดย rakmao           | guid   |
| [Status](#PoDocumentStatus)   | :heavy_check_mark: | สถานะที่เปลี่ยนแปลงไป            | number   |
| CancelReason           |   | เหตุผลในกรณียกเลิกหรือปฏิเสธ            | string          |
| CancelNote            |   |  หมายเหตุในกรณียกเลิกหรือปฏิเสธ| string          |
