Kodexempel
Det finns inga officiella SDK:er. API:et är litet nog att anropa direkt, och OpenAPI-filen kan användas för att generera en klient.
JavaScript
// Node 18+ (inbyggd fetch)
const BASE = 'https://api.upfinity.app/api/v1';
const headers = {
Authorization: `Bearer ${process.env.UPFINITY_API_KEY}`,
'Content-Type': 'application/json',
};
async function api(method, path, body) {
const res = await fetch(BASE + path, { method, headers, body: body && JSON.stringify(body) });
if (res.status === 204) return null;
const data = await res.json();
if (!res.ok) throw new Error(data.message || data.error);
return data;
}
// Checkar som är nere just nu
const { sites } = await api('GET', '/sites');
const down = sites.sites.filter((s) => s.lastCheck && !s.lastCheck.isUp && !s.isPaused);
console.log(down.map((s) => s.name));
// Skapa en check i ett projekt
const { projects } = await api('GET', '/projects');
const project = projects.find((p) => p.name === 'DizWeb');
await api('POST', '/sites', {
name: 'api.dizweb.se',
url: 'https://api.dizweb.se/health',
projectId: project?.id,
});
// Pågående incidenter
const { incidents } = await api('GET', '/incidents?status=active');
console.log(incidents.length, 'pågående');
Python
import os
import requests
BASE = 'https://api.upfinity.app/api/v1'
session = requests.Session()
session.headers['Authorization'] = f"Bearer {os.environ['UPFINITY_API_KEY']}"
def api(method, path, body=None):
res = session.request(method, BASE + path, json=body)
res.raise_for_status()
return None if res.status_code == 204 else res.json()
# Upptid senaste 7 dagarna för alla checkar
for site in api('GET', '/sites')['sites']['sites']:
stats = api('GET', f"/sites/{site['id']}/stats?days=7")
print(f"{site['name']}: {stats['summary']['uptime']:.2f} %")
# Pausa en check under underhåll och återuppta efteråt
site_id = '...'
api('POST', f'/sites/{site_id}/pause')
# ... underhåll ...
api('POST', f'/sites/{site_id}/resume')
Heartbeat från ett jobb
Heartbeat-adressen hämtas från heartbeatUrl på checken, eller under checken i appen. Anropet kräver ingen API-nyckel. Token i adressen identifierar checken.
# Sist i ett cron-jobb: rapportera att det gick bra
0 2 * * * /opt/backup.sh && curl -fsS -m 10 "https://my.upfinity.app/api/hb/TOKEN" > /dev/null
# Rapportera ett fel med meddelande
curl -fsS -m 10 -X POST -H "Content-Type: application/json" \
-d '{"status":"fail","message":"Backup misslyckades"}' \
"https://my.upfinity.app/api/hb/TOKEN"
Generera en klient
npx @openapitools/openapi-generator-cli generate \
-i https://developer.upfinity.app/openapi.json \
-g typescript-fetch -o ./upfinity-client