# Tài liệu tham khảo API Quy tắc định tuyến

Source: https://instatus.com/help/vi/api/routing-rules

## Các giá trị có thể dùng cho từng trường

**Loại hành động**

| Giá trị                        | Mô tả                                 |
| ----------------------------- | ------------------------------------ |
| `NOTIFY_TEAM`                 | Thông báo cho một nhóm cụ thể         |
| `NOTIFY_WORKSPACE_MEMBER`     | Thông báo cho một thành viên workspace cụ thể |
| `NOTIFY_CURRENT_ON_CALL_USER` | Thông báo cho người đang trực         |
| `NOTIFY_NEXT_ON_CALL_USER`    | Thông báo cho người trực tiếp theo    |
| `NOTIFY_ALL_ON_CALL_MEMBERS`  | Thông báo cho tất cả thành viên đang trực |

**Loại điều kiện**

| Giá trị                | Mô tả                                        |
| --------------------- | ------------------------------------------- |
| `IMPACT`              | Kiểm tra mức ảnh hưởng của một sự kiện       |
| `TITLE`               | Kiểm tra tiêu đề của một sự kiện             |
| `DESCRIPTION`         | Kiểm tra mô tả của một sự kiện               |
| `AFFECTED_COMPONENTS` | Kiểm tra các thành phần bị ảnh hưởng của một sự kiện |

**Các kiểu so sánh**

| Giá trị                   | Mô tả                                                 |
| ------------------------ | ---------------------------------------------------- |
| `EQUALS`                 | Kiểm tra giá trị có bằng hay không                    |
| `NOT_EQUALS`             | Kiểm tra giá trị có khác hay không                    |
| `IS_EMPTY`               | Kiểm tra giá trị có rỗng hay không                    |
| `NOT_EMPTY`              | Kiểm tra giá trị có khác rỗng hay không               |
| `GREATER_THAN`           | Kiểm tra giá trị có lớn hơn hay không                 |
| `GREATER_THAN_OR_EQUALS` | Kiểm tra giá trị có lớn hơn hoặc bằng hay không       |
| `LESS_THAN`              | Kiểm tra giá trị có nhỏ hơn hay không                 |
| `LESS_THAN_OR_EQUALS`    | Kiểm tra giá trị có nhỏ hơn hoặc bằng hay không       |
| `CONTAINS`               | Kiểm tra giá trị có chứa một chuỗi con nhất định      |
| `NOT_CONTAINS`           | Kiểm tra giá trị không chứa một chuỗi con             |
| `HAS_KEY`                | Kiểm tra một object có một khóa nhất định             |
| `NOT_HAS_KEY`            | Kiểm tra một object không có một khóa nhất định       |
| `HAS_VALUE`              | Kiểm tra một object có một giá trị nhất định          |
| `NOT_HAS_VALUE`          | Kiểm tra một object không có một giá trị nhất định    |
| `IS_NULL`                | Kiểm tra giá trị có phải null hay không               |
| `NOT_NULL`               | Kiểm tra giá trị có khác null hay không               |
| `STARTS_WITH`            | Kiểm tra giá trị có bắt đầu bằng một chuỗi con nhất định |
| `ENDS_WITH`              | Kiểm tra giá trị có kết thúc bằng một chuỗi con nhất định |

## Lấy danh sách quy tắc định tuyến

**Endpoint:**

```bash
GET /:page_id/routing-rules
```

**Yêu cầu ví dụ**

```bash
GET /1/routing-rules
```

**Phản hồi ví dụ**

```json
{
  "routingRules": [
    {
      "id": "1",
      "siteId": "pageId",
      "assertions": [
        {
          "id": "1",
          "routingRuleId": "1",
          "type": "TITLE",
          "comparison": "CONTAINS",
          "value": "value1"
        },
        {
          "id": "2",
          "routingRuleId": "1",
          "type": "TITLE",
          "comparison": "CONTAINS",
          "value": "value2"
        }
      ],
      "actions": [
        {
          "id": "1",
          "routingRuleId": "1",
          "type": "NOTIFY_WORKSPACE_MEMBER",
          "targetId": "value1"
        },
        {
          "id": "2",
          "routingRuleId": "1",
          "type": "NOTIFY_WORKSPACE_MEMBER",
          "targetId": "member@platform.com"
        }
      ],
      "createdAt": "2021-09-29T00:00:00.000Z",
      "updatedAt": "2021-09-29T00:00:00.000Z",
      "order": 1
    }
  ]
}
```

## Tạo quy tắc định tuyến

**Endpoint:**

```bash
POST /routing-rules
```

Lưu ý rằng trong actions, `targetId` có thể là email của một thành viên workspace hoặc id của một nhóm, tùy vào loại hành động.

**Yêu cầu ví dụ**

```json
{
  "routingRule": {
    "assertions": [
      {
        "id": "1",
        "routingRuleId": "1",
        "type": "TITLE",
        "comparison": "CONTAINS",
        "value": "value1"
      },
      {
        "id": "2",
        "routingRuleId": "1",
        "type": "TITLE",
        "comparison": "CONTAINS",
        "value": "value2"
      }
    ],
    "actions": [
      {
        "id": "1",
        "routingRuleId": "1",
        "type": "NOTIFY_WORKSPACE_MEMBER",
        "targetId": "member2@platform.com"
      },
      {
        "id": "2",
        "routingRuleId": "1",
        "type": "NOTIFY_WORKSPACE_MEMBER",
        "targetId": "member@platform.com"
      }
    ],
    "order": 1,
    "siteId": "site-id-1"
  },
  "message": "Routing rule updated successfully"
}
```

**Phản hồi ví dụ**

```json
{
  "routingRule": {
    "id": "routing-rule-id-1",
    "order": 1,
    "siteId": "site123",
    "updatedAt": "2021-09-01T12:00:00Z",
    "createdAt": "2021-09-01T12:00:00Z"
  },
  "message": "Routing rule created successfully."
}
```

## Cập nhật quy tắc định tuyến

**Endpoint:**

```bash
PUT /routing-rules/:id
```

**Yêu cầu ví dụ**

```bash
PUT /routing-rules/routing-rule-id-1
```

```json
{
  "routingRule": {
    "id": "routing-rule-id-1",
    "assertions": [
      {
        "id": "assertion-id-1",
        "routingRuleId": "routing-rule-id-1",
        "comparison": "CONTAINS",
        "value": "Issue With X",
        "type": "TITLE"
      }
    ],
    "order": 1,
    "siteId": "site-id-1",
    "updatedAt": "2021-09-01T12:00:00Z",
    "createdAt": "2021-05-01T12:00:00Z"
  },
  "message": "Routing rule updated successfully"
}
```

**Phản hồi ví dụ**

```json
{
  "routingRule": {
    "id": "routing-rule-id-1",
    "assertions": [
      {
        "id": "assertion-id-1",
        "routingRuleId": "routing-rule-id-1",
        "comparison": "CONTAINS",
        "value": "Issue With X",
        "type": "TITLE"
      }
    ],
    "order": 1,
    "siteId": "site-id-1",
    "updatedAt": "2024-08-09T12:00:00Z",
    "createdAt": "2021-05-01T12:00:00Z"
  },
  "message": "Routing rule updated successfully"
}
```

## Xóa quy tắc định tuyến

**Endpoint:**

```bash
DELETE /routing-rules/:id
```

**Yêu cầu ví dụ**

```bash
DELETE /routing-rules/routing-rule-id-1
```

**Phản hồi ví dụ**

```json
{
  "message": "Routing rule deleted successfully."
}
```
