UptimeTea

API Documentation

The UptimeTea API is easy to use and free for all plans.

Create on-call schedule

Creates an on-call rotation. Requires the owner or manager role.

POST https://api.uptimetea.com/on_call_schedules

Headers

  • AuthorizationREQUIREDSTRING
    Bearer $TOKEN
  • Content-TypeREQUIREDSTRING
    application/json

Body parameters

  • on_call_schedule.nameREQUIREDSTRING

    Schedule name.

  • on_call_schedule.timezoneSTRING

    IANA timezone the handoff time is in. Defaults to UTC.

  • on_call_schedule.rotation_typeSTRING

    daily, weekly or custom. Defaults to weekly.

  • on_call_schedule.rotation_hoursINTEGER

    Shift length in hours for custom rotations, up to 672 (four weeks).

  • on_call_schedule.handoff_timeSTRING

    Time of day shifts change, as HH:MM. Defaults to 09:00.

  • on_call_schedule.starts_onREQUIREDSTRING

    Date of the first shift, as YYYY-MM-DD.

Response body

{
  "id": "uuid",
  "name": "Primary",
  "timezone": "Europe/Vilnius",
  "rotation_type": "weekly",
  "rotation_hours": null,
  "handoff_time": "09:00",
  "starts_on": "2024-01-15",
  "participants": [],
  "created_at": "2024-01-15T10:00:00Z",
  "on_call_user": null,
  "next_on_call_user": null,
  "next_handoff_at": null
}

Code examples

curl -X POST "https://api.uptimetea.com/on_call_schedules" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "on_call_schedule": {
      "name": "Primary",
      "timezone": "Europe/Vilnius",
      "rotation_type": "weekly",
      "handoff_time": "09:00",
      "starts_on": "2024-01-15"
    }
  }'
// Create on-call schedule
const response = await fetch('https://api.uptimetea.com/on_call_schedules', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer ' + yourToken,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    "on_call_schedule": {
      "name": "Primary",
      "timezone": "Europe/Vilnius",
      "rotation_type": "weekly",
      "handoff_time": "09:00",
      "starts_on": "2024-01-15"
    }
  })
});

const data = await response.json();
console.log(data);
# Create on-call schedule
import requests

headers = {'Authorization': f'Bearer {your_token}'}

response = requests.post(
    'https://api.uptimetea.com/on_call_schedules',
    headers=headers,
    json={
        'on_call_schedule': {
            'name': 'Primary',
            'timezone': 'Europe/Vilnius',
            'rotation_type': 'weekly',
            'handoff_time': '09:00',
            'starts_on': '2024-01-15'
        }
    }
)

print(response.json())
// Create on-call schedule
package main

import (
    "fmt"
    "io"
    "net/http"
    "strings"
)

func main() {
    body := strings.NewReader(`{
      "on_call_schedule": {
        "name": "Primary",
        "timezone": "Europe/Vilnius",
        "rotation_type": "weekly",
        "handoff_time": "09:00",
        "starts_on": "2024-01-15"
      }
    }`)
    req, _ := http.NewRequest("POST", "https://api.uptimetea.com/on_call_schedules", body)
    req.Header.Set("Authorization", "Bearer "+yourToken)
    req.Header.Set("Content-Type", "application/json")

    resp, err := http.DefaultClient.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    data, _ := io.ReadAll(resp.Body)
    fmt.Println(resp.Status, string(data))
}
# Create on-call schedule
require 'net/http'
require 'uri'

uri = URI('https://api.uptimetea.com/on_call_schedules')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Post.new(uri)
request['Authorization'] = "Bearer #{your_token}"
request['Content-Type'] = 'application/json'
request.body = <<~JSON
  {
    "on_call_schedule": {
      "name": "Primary",
      "timezone": "Europe/Vilnius",
      "rotation_type": "weekly",
      "handoff_time": "09:00",
      "starts_on": "2024-01-15"
    }
  }
JSON

response = http.request(request)
puts response.code, response.body
<?php
// Create on-call schedule
$ch = curl_init('https://api.uptimetea.com/on_call_schedules');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $yourToken,
    'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, <<<'JSON'
{
  "on_call_schedule": {
    "name": "Primary",
    "timezone": "Europe/Vilnius",
    "rotation_type": "weekly",
    "handoff_time": "09:00",
    "starts_on": "2024-01-15"
  }
}
JSON);

$response = curl_exec($ch);
print_r(json_decode($response, true));
curl_close($ch);