# 라우팅 규칙 API 레퍼런스

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

## 필드에 사용할 수 있는 값

**작업 유형**

| 값 | 설명 |
| ----------------------------- | ------------------------------------ |
| `NOTIFY_TEAM` | 특정 팀에 알립니다 |
| `NOTIFY_WORKSPACE_MEMBER` | 특정 워크스페이스 멤버에게 알립니다 |
| `NOTIFY_CURRENT_ON_CALL_USER` | 현재 온콜 담당자에게 알립니다 |
| `NOTIFY_NEXT_ON_CALL_USER` | 다음 온콜 담당자에게 알립니다 |
| `NOTIFY_ALL_ON_CALL_MEMBERS` | 현재 온콜 중인 모든 멤버에게 알립니다 |

**조건 유형**

| 값 | 설명 |
| --------------------- | ------------------------------------------- |
| `IMPACT` | 이벤트의 영향도를 검사합니다 |
| `TITLE` | 이벤트의 제목을 검사합니다 |
| `DESCRIPTION` | 이벤트의 설명을 검사합니다 |
| `AFFECTED_COMPONENTS` | 이벤트의 영향받는 구성 요소를 검사합니다 |

**비교 유형**

| 값 | 설명 |
| ------------------------ | ---------------------------------------------------- |
| `EQUALS` | 값이 같은지 확인합니다 |
| `NOT_EQUALS` | 값이 다른지 확인합니다 |
| `IS_EMPTY` | 값이 비어 있는지 확인합니다 |
| `NOT_EMPTY` | 값이 비어 있지 않은지 확인합니다 |
| `GREATER_THAN` | 값이 더 큰지 확인합니다 |
| `GREATER_THAN_OR_EQUALS` | 값이 크거나 같은지 확인합니다 |
| `LESS_THAN` | 값이 더 작은지 확인합니다 |
| `LESS_THAN_OR_EQUALS` | 값이 작거나 같은지 확인합니다 |
| `CONTAINS` | 값이 지정한 부분 문자열을 포함하는지 확인합니다 |
| `NOT_CONTAINS` | 값이 부분 문자열을 포함하지 않는지 확인합니다 |
| `HAS_KEY` | 객체에 특정 키가 있는지 확인합니다 |
| `NOT_HAS_KEY` | 객체에 특정 키가 없는지 확인합니다 |
| `HAS_VALUE` | 객체에 특정 값이 있는지 확인합니다 |
| `NOT_HAS_VALUE` | 객체에 특정 값이 없는지 확인합니다 |
| `IS_NULL` | 값이 null인지 확인합니다 |
| `NOT_NULL` | 값이 null이 아닌지 확인합니다 |
| `STARTS_WITH` | 값이 특정 부분 문자열로 시작하는지 확인합니다 |
| `ENDS_WITH` | 값이 특정 부분 문자열로 끝나는지 확인합니다 |

## 라우팅 규칙 가져오기

**엔드포인트:**

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

**요청 예시**

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

**응답 예시**

```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
    }
  ]
}
```

## 라우팅 규칙 만들기

**엔드포인트:**

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

작업에서 `targetId`는 작업 유형에 따라 워크스페이스 멤버의 이메일이거나 팀 ID일 수 있다는 점에 유의하세요.

**요청 예시**

```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"
}
```

**응답 예시**

```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."
}
```

## 라우팅 규칙 업데이트하기

**엔드포인트:**

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

**요청 예시**

```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"
}
```

**응답 예시**

```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"
}
```

## 라우팅 규칙 삭제하기

**엔드포인트:**

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

**요청 예시**

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

**응답 예시**

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