Sari la conținut
Documentație · API REST

DocumentațieAPI și aplicații

API REST

Automatizează isituprightnow cu API-ul REST — chei API și permisiuni, headerul X-Api-Key, URL-ul de bază, limite de rată, erori și coduri de problemă, monitoare, incidente, contacte, mentenanță și pagini de status, cu exemple curl.

Pe această pagină

Tot ce faci în panou se bazează pe un API REST cu JSON. Cu o cheie API poți crea monitoare din pipeline-ul de lansare, poți pune verificările pe pauză în timpul unei lansări, poți prelua disponibilitatea în propriile rapoarte sau poți deschide tichete din incidente.

Noțiuni de bază#

Element Valoare
URL de bază https://api.isituprightnow.com/api/v1
Autentificare Headerul X-Api-Key: <cheia ta>
Format JSON cu câmpuri camelCase; trimite Content-Type: application/json
Ore ISO 8601 în UTC (2026-10-03T14:05:12Z); fusurile orare sunt nume IANA
Sume Cenți ca numere întregi plus o monedă ISO ("amountCents": 900, "currency": "USD")
Valori nule Câmpurile opționale sunt mereu prezente, cu null când sunt goale

Încearcă:

bash
export IIUN_API_KEY="iiun_xxxxxxxx_…"

curl -s https://api.isituprightnow.com/api/v1/monitors \
  -H "X-Api-Key: $IIUN_API_KEY"

Chei API#

Creezi chei din Setări → Chei API (proprietarii și administratorii; accesul la API depinde de plan — vezi Prețuri).

  • O cheie arată așa: iiun_<8 caractere>_<40 de caractere>. Cheia completă este afișată o singură dată, la creare; după aceea se vede doar prefixul (iiun_<8 caractere>). Noi stocăm doar un hash.
  • Dă fiecărei integrări propria cheie, cu un nume descriptiv, ca să poți revoca una fără să le strici pe celelalte. Folosită ultima dată îți arată dacă o cheie mai este folosită.
  • Nu pune cheile în codul sursă sau în loguri; folosește depozitul de secrete al sistemului tău CI.

Permisiuni#

Permisiune Ce permite
read Cereri GET și HEAD.
write Orice metodă (POST, PUT, DELETE…). Include read.

O cheie doar de citire care încearcă să modifice ceva primește 403 cu code: "api_key_read_only".

La ce are acces o cheie#

O cheie acționează asupra contului ei cu permisiunile unui Administrator, cu excepția gestionării contului, a echipei și a facturării: account/*, billing/*, api-keys/*, invitations/*, auth/* și push/* răspund cu 403 și code: "api_key_not_allowed". Monitoarele, incidentele, contactele de alertă, ferestrele de mentenanță și paginile de status sunt toate disponibile.

Paginare#

Listele care pot crește acceptă ?page=1&pageSize=50 (pageSize cel mult 200). Ele întorc un tablou JSON simplu, iar totalul apare în headerul de răspuns X-Total-Count.

bash
curl -s -D - "https://api.isituprightnow.com/api/v1/incidents?status=all&page=2&pageSize=100" \
  -H "X-Api-Key: $IIUN_API_KEY" -o incidents.json | grep -i x-total-count

Limite de rată#

Ce Limită
Endpointuri de autentificare, înregistrare, parolă și 2FA 10 cereri pe minut per adresă IP
Endpointuri publice (abonare / deblocare pagini de status, formularul de contact…) 10 cereri pe minut per adresă IP
Formularul de contact în plus, 5 mesaje per IP și 3 per adresă de e-mail a expeditorului, pe oră
URL-uri heartbeat 60 de apeluri pe minut per monitor

Cererile făcute cu o cheie API nu au deocamdată o cotă fixă, dar te rugăm să păstrezi un trafic rezonabil (de exemplu, nu interoga mai des decât intervalul de verificare). Când atingi o limită, API-ul răspunde cu 429, code: "rate_limited" și headerul Retry-After (secunde): așteaptă atât înainte să reîncerci.

Erori#

Erorile folosesc formatul RFC 7807 application/problem+json, cu un code stabil, ușor de procesat automat:

json
{
  "type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
  "title": "One or more validation errors occurred.",
  "status": 400,
  "detail": "Interval must be between 15 and 86400 seconds.",
  "code": "validation_failed",
  "errors": {
    "intervalSeconds": ["Interval must be between 15 and 86400 seconds."]
  }
}

În cod folosește code (textele title și detail, în engleză, se pot schimba). Problemele de validare listează în errors fiecare câmp invalid; problemele legate de limitele planului adaugă limit.

Cod Stare Ce înseamnă
validation_failed 400 Câmpuri invalide; vezi errors.
bad_request 400 Cerere malformată (de exemplu JSON invalid).
unauthorized 401 Cheie API lipsă sau invalidă.
forbidden 403 Nu este permis.
api_key_read_only 403 Cheia nu are permisiunea write.
api_key_not_allowed 403 Acest endpoint nu poate fi folosit cu chei API.
account_suspended 403 Contul este suspendat; contactează-ne.
not_found 404 Resursa nu există (sau aparține altui cont).
conflict 409 Cererea intră în conflict cu starea actuală.
slug_taken 409 O pagină de status folosește deja acest slug.
domain_taken 409 O altă pagină de status folosește acest domeniu personalizat.
plan_limit 402 Planul tău nu permite asta. limit este monitors, interval, statusPages, seats, regions sau feature.
rate_limited 429 Prea multe cereri; vezi Retry-After.
maintenance_mode 503 Serviciul este în mentenanță: modificările sunt dezactivate temporar (citirile, verificările și alertele continuă).
not_configured 503 Un canal (SMS, apel vocal, Telegram) nu este disponibil încă.
not_implemented 501 Nu este suportat încă.
server_error 500 Eroare neașteptată la noi; reîncearcă mai târziu.

Monitoare#

Metodă și cale Descriere
GET /monitors?tag=&status=&q= Lista monitoarelor, filtrată opțional după etichetă, stare (up, down, paused, unknown) sau un text de căutare.
GET /monitors/{id} Un monitor.
POST /monitors Creează un monitor.
PUT /monitors/{id} Actualizează un monitor (același corp ca la creare).
DELETE /monitors/{id} Șterge un monitor și istoricul lui.
POST /monitors/{id}/pause, POST /monitors/{id}/resume Pune pe pauză sau reia verificările.
POST /monitors/bulk { "ids": [...], "action": "pause" | "resume" | "delete" } → { "affected": 3 }
GET /monitors/{id}/results?hours=24 Rezultatele recente ale verificărilor (cel mult 168 de ore, cel mult 300 de puncte).
GET /monitors/{id}/stats Disponibilitatea pe 24 h / 7 / 30 / 90 de zile, timpii medii de răspuns și 90 de valori zilnice.
GET /monitors/{id}/alert-rules, PUT /monitors/{id}/alert-rules Citește sau înlocuiește regulile de alertă ale monitorului.

Creează un monitor#

bash
curl -s -X POST https://api.isituprightnow.com/api/v1/monitors \
  -H "X-Api-Key: $IIUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Site — prima pagină",
    "type": "Http",
    "target": "https://www.example.com/",
    "intervalSeconds": 60,
    "timeoutMs": 10000,
    "tags": ["productie"],
    "config": {
      "method": "GET",
      "expectedStatusCodes": "200-299",
      "followRedirects": true
    }
  }'

type este unul dintre Http, Keyword, Ping, Port, Heartbeat, Ssl, Domain, Dns, Udp. Omite regions ca să folosești regiunea implicită; codurile regiunilor disponibile apar în GET /public/config (regions). Câmpurile config pentru fiecare tip sunt descrise în Monitoare. Răspunsul este monitorul:

json
{
  "id": "8b0c7d3e-3f5a-4a49-9a51-2f1f0f4c6a10",
  "name": "Site — prima pagină",
  "type": "Http",
  "target": "https://www.example.com/",
  "intervalSeconds": 60,
  "timeoutMs": 10000,
  "regions": ["eu-central"],
  "status": "Unknown",
  "paused": false,
  "inMaintenance": false,
  "lastCheckedAt": null,
  "lastResponseMs": null,
  "uptime24h": null,
  "tags": ["productie"],
  "config": {
    "method": "GET",
    "headers": {},
    "body": null,
    "expectedStatusCodes": "200-299",
    "followRedirects": true,
    "keyword": null,
    "keywordMode": "contains",
    "caseSensitive": false,
    "slowThresholdMs": null,
    "basicAuthUser": null,
    "basicAuthPassword": { "isSet": false, "hint": null }
  },
  "lastStatusChangeAt": null,
  "expiresAt": null,
  "createdAt": "2026-10-03T14:05:12Z",
  "updatedAt": "2026-10-03T14:05:12Z"
}

Secretele, precum basicAuthPassword, nu sunt returnate niciodată, ci doar { "isSet": true|false }. La actualizare, omite secretul (sau trimite null) ca să-l păstrezi și trimite "" ca să-l ștergi. Pentru monitoarele heartbeat, config.heartbeatUrl conține URL-ul de apelat.

Pauză în timpul unei lansări#

bash
curl -s -X POST "https://api.isituprightnow.com/api/v1/monitors/$MONITOR_ID/pause" -H "X-Api-Key: $IIUN_API_KEY"
./deploy.sh
curl -s -X POST "https://api.isituprightnow.com/api/v1/monitors/$MONITOR_ID/resume" -H "X-Api-Key: $IIUN_API_KEY"

Când știi ora dinainte, preferă o fereastră de mentenanță: verificările continuă, iar pagina de status arată mentenanță.

Disponibilitatea pentru un raport#

bash
curl -s "https://api.isituprightnow.com/api/v1/monitors/$MONITOR_ID/stats" -H "X-Api-Key: $IIUN_API_KEY"
json
{
  "uptime": { "h24": 100, "d7": 99.98, "d30": 99.95, "d90": 99.97 },
  "avgResponseMs": { "h24": 182, "d7": 190, "d30": 188 },
  "daily": [{ "date": "2026-10-02", "uptime": 100 }]
}

Valorile de disponibilitate sunt procente (0–100); null înseamnă că nu au existat verificări în acea perioadă. daily conține 90 de zile calendaristice, în fusul orar al contului.

Incidente#

Metodă și cale Descriere
GET /incidents?status=open|all&monitorId= Lista incidentelor (paginată), de la cel mai recent.
GET /incidents/{id} Detalii: instantaneul verificării eșuate, cronologia și comentariile.
POST /incidents/{id}/acknowledge Confirmă incidentul; oprește reminderele.
POST /incidents/{id}/comments { "body": "Am revenit la versiunea 1.42" } (planurile cu comentarii la incidente).
bash
curl -s "https://api.isituprightnow.com/api/v1/incidents?status=open" -H "X-Api-Key: $IIUN_API_KEY"
json
[
  {
    "id": "5e1f2a9b-77c4-4d3e-9a0f-6b2d8c1e4f55",
    "monitorId": "8b0c7d3e-3f5a-4a49-9a51-2f1f0f4c6a10",
    "monitorName": "Site — prima pagină",
    "startedAt": "2026-10-03T14:05:12Z",
    "resolvedAt": null,
    "durationSeconds": 240,
    "cause": "HTTP 503",
    "regions": ["eu-central", "us-east"],
    "acknowledged": false
  }
]

Contacte de alertă#

Metodă și cale Descriere
GET /alert-contacts, GET /alert-contacts/{id} Listează sau citește contactele.
POST /alert-contacts, PUT /alert-contacts/{id}, DELETE /alert-contacts/{id} Creează, actualizează, șterge.
POST /alert-contacts/{id}/test Trimite o alertă de test → { "ok": true, "message": "…" }.
POST /alert-contacts/{id}/verify { "code": "123456" } verifică un contact de e-mail / SMS / apel vocal; un corp gol trimite un cod nou.
bash
curl -s -X POST https://api.isituprightnow.com/api/v1/alert-contacts \
  -H "X-Api-Key: $IIUN_API_KEY" -H "Content-Type: application/json" \
  -d '{ "type": "Slack", "name": "#ops", "target": "https://hooks.slack.com/services/T000/B000/XXXX" }'

type este unul dintre Email, Sms, Voice, Webhook, Slack, Discord, Teams, GoogleChat, Telegram, Pushover. Contactele webhook acceptă config: { "method", "headers", "bodyTemplate" }; Pushover acceptă config: { "appToken", "device", "priority" }. Vezi Alerte.

Leagă contactele de un monitor prin regulile lui de alertă (asta înlocuiește întreaga listă):

bash
curl -s -X PUT "https://api.isituprightnow.com/api/v1/monitors/$MONITOR_ID/alert-rules" \
  -H "X-Api-Key: $IIUN_API_KEY" -H "Content-Type: application/json" \
  -d '[
    { "contactId": "'"$SLACK_CONTACT_ID"'", "thresholdMinutes": 0, "repeatEveryMinutes": 0 },
    { "contactId": "'"$SMS_CONTACT_ID"'", "thresholdMinutes": 5, "repeatEveryMinutes": 15 }
  ]'

Ferestre de mentenanță#

GET, POST /maintenance-windows, PUT și DELETE /maintenance-windows/{id} cu { name, monitorIds, startsAt, endsAt, recurrence: null | "daily" | "weekly" | "monthly", timeZone }. Răspunsul adaugă active. Un exemplu găsești în Ferestre de mentenanță.

Pagini de status#

Metodă și cale Descriere
GET /status-pages, GET /status-pages/{id} Listează sau citește paginile (modelul din editor, cu publicUrl).
POST /status-pages, PUT /status-pages/{id}, DELETE /status-pages/{id} Creează, actualizează, șterge.
POST /status-pages/{id}/announcements { "title", "body", "severity": "info" | "warning" | "critical" } — publicat și trimis pe e-mail abonaților.
GET /status-pages/{id}/subscribers Abonații (paginat).

Vizualizarea publică, doar de citire, a unei pagini este disponibilă fără cheie la GET /public/status-pages/{slug}, iar badge-ul ei la GET /public/status-pages/{slug}/badge.svg.

Heartbeat#

URL-urile heartbeat nu au nevoie de cheie: GET, POST sau HEAD https://api.isituprightnow.com/api/v1/heartbeat/{token}. Vezi Monitoare heartbeat.

Webhook-uri (trimise de noi)#

Ca să primești alertele în propriile tale sisteme, adaugă un contact de alertă de tip Webhook. La fiecare alertă trimitem un payload JSON ca acesta:

json
{
  "event": "monitor.up",
  "monitor": { "id": "8b0c7d3e-3f5a-4a49-9a51-2f1f0f4c6a10", "name": "Site — prima pagină", "target": "https://www.example.com/" },
  "status": "Up",
  "title": "Site — prima pagină is UP",
  "message": "isituprightnow: Site — prima pagină este FUNCȚIONAL după 4 min 0 s (https://www.example.com/)",
  "locale": "ro",
  "occurredAt": "2026-10-03T14:09:12.000Z",
  "cause": null,
  "regions": ["eu-central", "us-east"],
  "incidentId": "5e1f2a9b-77c4-4d3e-9a0f-6b2d8c1e4f55",
  "downtimeSeconds": 240,
  "responseMs": null,
  "expiresAt": null,
  "link": "https://isituprightnow.com/ro/app/incidents/5e1f2a9b-77c4-4d3e-9a0f-6b2d8c1e4f55"
}

event este monitor.down, monitor.up, monitor.slow, ssl.expiring, domain.expiring sau test. Toate câmpurile, șabloanele personalizate și regulile de livrare sunt descrise în Alerte → Webhook-uri. Protejează-ți endpointul cu un header secret (de exemplu Authorization: Bearer <valoare aleatorie>) configurat pe contact și răspunde cu orice cod 2xx în cel mult 10 secunde.

Nu ai găsit ce căutai? Scrie-ne.