# On-call Schedules API Reference

Source: https://instatus.com/help/api/on-call-schedules

## Possible Values for fields

**Restriction Type**

| Value           | Description                                  |
| --------------- | -------------------------------------------- |
| `NONE`          | No restriction                               |
| `TIMEOFDAY`     | Restriction based on a specific time of day  |
| `TIMEINTERVALS` | Restriction based on specific time intervals |

**Rotation Type**

| Value    | Description                        |
| -------- | ---------------------------------- |
| `DAILY`  | Rotation occurs daily              |
| `WEEKLY` | Rotation occurs weekly             |
| `CUSTOM` | Rotation follows a custom schedule |

**Days Of Week**

| Value       | Description |
| ----------- | ----------- |
| `SATURDAY`  | Saturday    |
| `SUNDAY`    | Sunday      |
| `MONDAY`    | Monday      |
| `TUESDAY`   | Tuesday     |
| `WEDNESDAY` | Wednesday   |
| `THURSDAY`  | Thursday    |
| `FRIDAY`    | Friday      |

## Get On-call Schedule Members

**Endpoint:**

```bash
GET /on-call-schedules/:id/members
```

**Example request**

```bash
GET /on-call-schedules/clzmgn2ze40301poblv9e1pq5/members
```

**Example response**

```json
{
  "currentMembers": [
    {
      "id": "clh8nmaan72592bfokqjqd95s1",
      "name": null,
      "email": "member1@email.com",
      "phone": null,
      "avatar": "https://example.com/avatar.jpg"
    }
  ],
  "nextMembers": [
    {
      "id": "clzajmm98115510h5olxn5i7ljr",
      "name": null,
      "email": "member2@email.com",
      "phone": null,
      "avatar": null
    }
  ],
  "allMembers": [
    {
      "id": "clh8nmaan72592bfokqjqd95s1",
      "name": null,
      "email": "member1@email.com",
      "phone": null,
      "avatar": "https://example.com/avatar.jpg"
    },
    {
      "id": "clzajmm98115510h5olxn5i7ljr",
      "name": null,
      "email": "member2@email.com",
      "phone": null,
      "avatar": null
    }
  ]
}
```

## Create On-call Schedule

**Endpoint:**

```bash
POST /on-call-schedules
```

**Example request**

```json
{
  "name": "Primary On-call Schedule",
  "description": "This schedule is for the primary on-call team.",
  "onCallShifts": [
    {
      "name": "Primary",
      "members": [
        {
          "teamMemberId": "member123",
          "color": "#FF5733"
        },
        {
          "teamMemberId": "member456",
          "color": "#33C4FF"
        }
      ],
      "rotationType": "WEEKLY",
      "customRotationTypeValue": null,
      "customRotationTypeUnit": null,
      "startDate": "2023-08-08T08:00:00Z",
      "endDate": "2024-08-21T08:42:00.000Z",
      "restrictionType": "TIMEINTERVALS",
      "timeOfDayRestrictionStartTime": null,
      "timeOfDayRestrictionEndTime": null,
      "timeIntervals": [
        {
          "startDay": "SATURDAY",
          "startDayTime": "1970-01-01T21:00:00.000Z",
          "endDay": "SUNDAY",
          "endDayTime": "1970-01-01T03:00:00.000Z"
        }
      ]
    }
  ]
}
```

**Example response**

```json
{
  "id": "clzmgn2ze40301poblv9e1pq5",
  "name": "Primary On-call Schedule",
  "description": "This schedule is for the primary on-call team.",
  "status": "ACTIVE",
  "onCallShifts": [
    {
      "id": "clzmgn2zt40361pobj78giwf7",
      "name": "Primary",
      "order": 1,
      "members": [
        {
          "id": "clzmgn2zt40401pobjzq0pwjd",
          "order": 3,
          "color": "#0470a6",
          "teamMember": {
            "id": "member123",
            "user": {
              "id": "clh8nmaan72592bfokqjqd95s1",
              "name": null,
              "email": "member12@email.com",
              "avatar": null
            }
          }
        },
        {
          "id": "clzmgn2zt40381pob690bwaxx",
          "order": 1,
          "color": "#195397",
          "teamMember": {
            "id": "member456",
            "user": {
              "id": "clzajmm98115510h5olxn5i7ljr",
              "name": null,
              "email": "member45@email.com",
              "avatar": null
            }
          }
        }
      ],
      "rotationType": "WEEKLY",
      "customRotationTypeValue": null,
      "customRotationTypeUnit": null,
      "startDate": "2024-08-09T08:42:34.557Z",
      "endDate": "2024-08-21T08:42:00.000Z",
      "restrictionType": "TIMEINTERVALS",
      "timeOfDayRestrictionStartTime": null,
      "timeOfDayRestrictionEndTime": null,
      "timeIntervals": [
        {
          "id": "clzmjq8bn313521ioblyzg7hic",
          "startDay": "SATURDAY",
          "startDayTime": "1970-01-01T21:00:00.000Z",
          "endDay": "SUNDAY",
          "endDayTime": "1970-01-01T03:00:00.000Z"
        }
      ]
    }
  ]
}
```

## Update On-call Schedule

**Endpoint:**

```bash
PUT /on-call-schedules/:id
```

**Example request**

```bash
PUT /on-call-schedules/clzmgn2ze40301poblv9e1pq5
```

```json
{
  "id": "clzmgn2ze40301poblv9e1pq5",
  "name": "Name Update",
  "description": "This schedule is for the primary on-call team.",
  "status": "ACTIVE",
  "onCallShifts": [
      {
          "id": "clzmgn2zt40361pobj78giwf7",
          "name": "Primary",
          "order": 1,
          "members": [
              {
                  "id": "clzmgn2zt40401pobjzq0pwjd",
                  "order": 3,
                  "color": "#0470a6",
                  "teamMember": {
                      "id": "member123",
                      "user": {
                          "id": "clh8nmaan72592bfokqjqd95s1",
                          "name": null,
                          "email": "member12@email.com",
                          "avatar": null
                      }
                  }
              },
              {
                  "id": "clzmgn2zt40381pob690bwaxx",
                  "order": 1,
                  "color": "#195397",
                  "teamMember": {
                      "id": "member456",
                      "user": {
                          "id": "clzajmm98115510h5olxn5i7ljr",
                          "name": null,
                          "email": "member45@email.com",
                          "avatar": null
                      }
                  }
              }
          ],
          "rotationType": "WEEKLY",
          "customRotationTypeValue": null,
          "customRotationTypeUnit": null,
          "startDate": "2024-08-09T08:42:34.557Z",
          "endDate": "2024-08-21T08:42:00.000Z",
          "restrictionType": "TIMEINTERVALS",
          "timeOfDayRestrictionStartTime": null,
          "timeOfDayRestrictionEndTime": null,
          "timeIntervals": [
              {
                  "id": "clzmjq8bn313521ioblyzg7hic",
                  "startDay": "SATURDAY",
                  "startDayTime": "1970-01-01T21:00:00.000Z",
                  "endDay": "SUNDAY",
                  "endDayTime": "1970-01-01T03:00:00.000Z"
              }
          ]
      }
  ]
}
```

**Example response**

```json
{
  "id": "clzmgn2ze40301poblv9e1pq5",
  "name": "Name Update",
  "description": "This schedule is for the primary on-call team.",
  "status": "ACTIVE",
  "onCallShifts": [
      {
          "id": "clzmgn2zt40361pobj78giwf7",
          "name": "Primary",
          "order": 1,
          "members": [
              {
                  "id": "clzmgn2zt40401pobjzq0pwjd",
                  "order": 3,
                  "color": "#0470a6",
                  "teamMember": {
                      "id": "member123",
                      "user": {
                          "id": "clh8nmaan72592bfokqjqd95s1",
                          "name": null,
                          "email": "member12@email.com",
                          "avatar": null
                      }
                  }
              },
              {
                  "id": "clzmgn2zt40381pob690bwaxx",
                  "order": 1,
                  "color": "#195397",
                  "teamMember": {
                      "id": "member456",
                      "user": {
                          "id": "clzajmm98115510h5olxn5i7ljr",
                          "name": null,
                          "email": "member45@email.com",
                          "avatar": null
                      }
                  }
              }
          ],
          "rotationType": "WEEKLY",
          "customRotationTypeValue": null,
          "customRotationTypeUnit": null,
          "startDate": "2024-08-09T08:42:34.557Z",
          "endDate": "2024-08-21T08:42:00.000Z",
          "restrictionType": "TIMEINTERVALS",
          "timeOfDayRestrictionStartTime": null,
          "timeOfDayRestrictionEndTime": null,
          "timeIntervals": [
              {
                  "id": "clzmjq8bn313521ioblyzg7hic",
                  "startDay": "SATURDAY",
                  "startDayTime": "1970-01-01T21:00:00.000Z",
                  "endDay": "SUNDAY",
                  "endDayTime": "1970-01-01T03:00:00.000Z"
              }
          ]
      }
  ]
}
```

## Delete On-call Schedule

**Endpoint:**

```bash
DELETE /on-call-schedules/:id
```

**Example request**

```bash
DELETE /on-call-schedules/schedule-id-1
```

**Example response**

```
204 No Content
```
