# 유지보수 API 레퍼런스

Source: https://instatus.com/help/ko/api/maintenances

## 페이지의 모든 유지보수 가져오기

**엔드포인트:**

```bash
GET /v2/:page_id/maintenances?page=:page&per_page=:per_page
```

- 기본 page 번호는 1입니다.
- 기본 per_page 값은 50이며 페이지당 최대 100개입니다.

**응답 예시:**

```json
[
  {
    "id": "ckf1fzzbt4nib0a352wwra6ff",
    "name": "Test maintenance",
    "status": "NOTSTARTEDYET",
    "start": "2020-09-13T18:38:58.326Z",
    "duration": 60,
    "notifyStart": true,
    "notifyEnd": true,
    "notifyEarly": true,
    "notifyMinutes": 60,
    "autoStart": true,
    "autoEnd": true,
    "updates": [
      {
        "id": "ckf1fzzpal97v0a322evc874c",
        "message": "We are planning for a scheduled maintenance during that time.",
        "messageHtml": "<p>We are planning for a scheduled maintenance during that time.</p>",
        "status": "NOTSTARTEDYET",
        "notify": true,
        "started": "2020-09-13T18:38:58.326Z",
        "ended": null,
        "updatedAt": "2020-09-13T18:38:58.326Z"
      }
    ]
  }
]
```
## 유지보수 가져오기

**엔드포인트:**

```bash
GET /v1/:page_id/maintenances/:maintenance_id
```

**응답 예시:**

```json
{
  "id": "ckf1fzzbt4nib0a352wwra6ff",
  "name": "Test maintenance",
  "status": "NOTSTARTEDYET",
  "start": "2020-09-13T18:38:58.326Z",
  "duration": 60,
  "notifyStart": true,
  "notifyEnd": true,
  "notifyEarly": true,
  "notifyMinutes": 60,
  "autoStart": true,
  "autoEnd": true,
  "updates": [
    {
      "id": "ckf1fzzpal97v0a322evc874c",
      "message": "We are planning for a scheduled maintenance during that time.",
      "messageHtml": "<p>We are planning for a scheduled maintenance during that time.</p>",
      "status": "NOTSTARTEDYET",
      "notify": true,
      "started": "2020-09-13T18:38:58.326Z",
      "ended": null,
      "duration": null,
      "createdAt": "2020-09-13T18:39:16.606Z"
    }
  ],
  "components": [
    {
      "id": "ckf01fvnxywz50a35nh1qzssm",
      "name": "Website",
      "status": "OPERATIONAL",
      "showUptime": true,
      "site": {
        "id": "ckf01fonve9i40a32oas5b0uw",
        "name": "Nasa",
        "subdomain": "nasa",
        "color": null,
        "logoUrl": null,
        "publicEmail": null
      }
    }
  ]
}
```

## 유지보수 추가하기

**엔드포인트:**

```bash
POST /v1/:page_id/maintenances
```

**요청 예시:**

```json
{
  "name": "Test maintenance",
  "message": "We are scheduling a test maintenance",
  "components": ["ckf01fvnxywz50a35nh1qzssm"],
  "start": "2020-09-12 05:38:47.998",
  "end": "2020-09-12 06:38:47.998",
  "status": "NOTSTARTEDYET",
  "notify": true,
  "duration": 60,
  "notifyStart": true,
  "notifyEnd": true,
  "notifyEarly": true,
  "notifyMinutes": 60,
  "autoStart": true,
  "autoEnd": true,
  "statuses": [
    {
      "id": "ckf01fvnxywz50a35nh1qzssm",
      "status": "UNDERMAINTENANCE"
    }
  ],
  "translations": {
    "name": {
      "fr": "Entretien des tests"
    },
    "message": {
      "fr": "Nous planifions une maintenance test"
    }
  }
}
```
유지보수는 기본적으로 펼쳐진 상태입니다.

유지보수를 접어 두었다가 원하는 시각에 펼치려면 `isCollapsed`를 `true`로, `expandAt`을 원하는 시각으로 설정해야 합니다.

**응답 예시:**

```json
{
  "id": "ckf1g4evp4o5s0a35vozxnjv5",
  "name": "Test maintenance",
  "duration": null,
  "start": "2020-09-12T03:38:47.998Z",
  "end": "2020-09-12T04:38:47.998Z",
  "status": "NOTSTARTEDYET",
  "updates": [],
  "components": [
    {
      "id": "ckf01fvnxywz50a35nh1qzssm",
      "name": "Website",
      "status": "OPERATIONAL",
      "showUptime": true,
      "site": {
        "id": "ckf01fonve9i40a32oas5b0uw",
        "name": "Nasa",
        "subdomain": "nasa",
        "color": null,
        "logoUrl": null,
        "publicEmail": null
      }
    }
  ],
  "translations": {
    "name": {
      "fr": "Entretien des tests"
    },
    "message": {
      "fr": "Nous planifions une maintenance test"
    }
  }
}
```

## 유지보수 업데이트하기

**엔드포인트:**

```bash
PUT /v1/:page_id/maintenances/:maintenance_id
```

**요청 예시:**

```json
{
  "name": "Test incident 2",
  "message": "We are scheduling a test maintenance",
  "components": ["ckf01fvnxywz50a35nh1qzssm"],
  "start": "2020-09-12 05:38:47.998",
  "end": "2020-09-12 06:38:47.998",
  "status": "NOTSTARTEDYET",
  "notify": true,
  "statuses": [
    {
      "id": "ckf01fvnxywz50a35nh1qzssm",
      "status": "UNDERMAINTENANCE"
    }
  ],
  "translations": {
    "name": {
      "fr": "Entretien des tests"
    },
    "message": {
      "fr": "Nous planifions une maintenance test"
    }
  }
}
```

**응답 예시:**

```json
{
  "id": "ckf1g4evp4o5s0a35vozxnjv5",
  "name": "Test maintenance 2",
  "status": "NOTSTARTEDYET",
  "start": "2020-09-12T03:38:47.998Z",
  "duration": null,
  "updates": [
    {
      "id": "ckf1g4ffi4o5y0a35rm76vuq9",
      "message": "We're currently investigating an issue with the Website",
      "messageHtml": "<p>We're currently investigating an issue with the Website</p>",
      "status": "NOTSTARTEDYET",
      "notify": true,
      "started": "2020-09-12T03:38:47.998Z",
      "ended": null,
      "duration": null,
      "createdAt": "2020-09-13T18:42:43.614Z"
    }
  ],
  "components": [
    {
      "id": "ckf01fvnxywz50a35nh1qzssm",
      "name": "Website",
      "status": "OPERATIONAL",
      "showUptime": true,
      "site": {
        "id": "ckf01fonve9i40a32oas5b0uw",
        "name": "Nasa",
        "subdomain": "nasa",
        "color": null,
        "logoUrl": null,
        "publicEmail": null
      }
    }
  ],
  "translations": {
    "name": {
      "fr": "Entretien des tests"
    },
    "message": {
      "fr": "Nous planifions une maintenance test"
    }
  }
}
```

## 유지보수 삭제하기

**엔드포인트:**

```bash
DELETE /v1/:page_id/maintenances/:maintenance_id
```

**응답 예시:**

```json
{
  "id": "ckf1g4evp4o5s0a35vozxnjv5"
}
```
