{"openapi":"3.1.0","info":{"title":"onDuty API","version":"0.12.2","description":"API-ul onDuty: proiecte, servicii, verificări, incidente, ture, pagini de status, alerte primite, apeluri și SMS. Autentificare cu o cheie API: `Authorization: Bearer od_live_…` (Integrări › Chei API). Răspunsurile sunt JSON, cu cheile în română, datele în ISO 8601; listele vin în `date`, cu `pagina`, `pe_pagina` (50) și `total`. Erorile au forma `{\"eroare\": \"cod\", \"mesaj\": \"…\"}`. Limită: 120 de cereri pe minut pe cheie."},"servers":[{"url":"https://api.onduty.ro/v1"}],"security":[{"cheie":[]}],"tags":[{"name":"Monitorizare","description":"Proiecte, servicii și verificări."},{"name":"Incidente","description":"Deschide, confirmă și rezolvă incidente."},{"name":"Gardă","description":"Cine e de gardă și paginile de status."},{"name":"Evenimente","description":"Alerte din alte sisteme, cu cheia unui punct de primire."},{"name":"Apeluri și SMS","description":"Apeluri și SMS-uri spre numerele verificate ale contului."}],"paths":{"/projects":{"get":{"tags":["Monitorizare"],"summary":"Proiectele","description":"Dreptul cheii: „citire”.","responses":{"200":{"description":"Reușit","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"array","items":{"$ref":"#/components/schemas/Proiect"}},"pagina":{"type":"integer"},"pe_pagina":{"type":"integer"},"total":{"type":"integer"}}}}}},"401":{"description":"Cheia lipsește, e greșită sau revocată","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"403":{"description":"Cheia nu are dreptul cerut","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"404":{"description":"Nu există (sau cheia nu are acces la proiect)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"422":{"description":"Date invalide (de exemplu `numar_neverificat`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"429":{"description":"Prea multe cereri sau limita zilnică atinsă","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}}}}},"/services":{"get":{"tags":["Monitorizare"],"summary":"Serviciile","description":"Dreptul cheii: „citire”.","parameters":[{"name":"proiect","in":"query","required":false,"description":"ID-ul proiectului","schema":{"type":"string"}},{"name":"pagina","in":"query","required":false,"description":"Pagina, de la 1","schema":{"type":"string"}}],"responses":{"200":{"description":"Reușit","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"array","items":{"$ref":"#/components/schemas/Serviciu"}},"pagina":{"type":"integer"},"pe_pagina":{"type":"integer"},"total":{"type":"integer"}}}}}},"401":{"description":"Cheia lipsește, e greșită sau revocată","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"403":{"description":"Cheia nu are dreptul cerut","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"404":{"description":"Nu există (sau cheia nu are acces la proiect)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"422":{"description":"Date invalide (de exemplu `numar_neverificat`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"429":{"description":"Prea multe cereri sau limita zilnică atinsă","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}}}}},"/services/{id}":{"get":{"tags":["Monitorizare"],"summary":"Un serviciu","description":"Dreptul cheii: „citire”.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Reușit","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"$ref":"#/components/schemas/Serviciu"}}}}}},"401":{"description":"Cheia lipsește, e greșită sau revocată","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"403":{"description":"Cheia nu are dreptul cerut","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"404":{"description":"Nu există (sau cheia nu are acces la proiect)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"422":{"description":"Date invalide (de exemplu `numar_neverificat`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"429":{"description":"Prea multe cereri sau limita zilnică atinsă","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}}}}},"/checks":{"get":{"tags":["Monitorizare"],"summary":"Verificările","description":"Dreptul cheii: „citire”.","parameters":[{"name":"serviciu","in":"query","required":false,"description":"ID-ul serviciului","schema":{"type":"string"}},{"name":"pagina","in":"query","required":false,"description":"Pagina, de la 1","schema":{"type":"string"}}],"responses":{"200":{"description":"Reușit","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"array","items":{"$ref":"#/components/schemas/Verificare"}},"pagina":{"type":"integer"},"pe_pagina":{"type":"integer"},"total":{"type":"integer"}}}}}},"401":{"description":"Cheia lipsește, e greșită sau revocată","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"403":{"description":"Cheia nu are dreptul cerut","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"404":{"description":"Nu există (sau cheia nu are acces la proiect)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"422":{"description":"Date invalide (de exemplu `numar_neverificat`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"429":{"description":"Prea multe cereri sau limita zilnică atinsă","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}}}},"post":{"tags":["Monitorizare"],"summary":"Adaugă o verificare","description":"Dreptul cheii: „scriere”.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificareNoua"}}}},"responses":{"201":{"description":"Reușit","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"$ref":"#/components/schemas/Verificare"}}}}}},"401":{"description":"Cheia lipsește, e greșită sau revocată","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"403":{"description":"Cheia nu are dreptul cerut","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"404":{"description":"Nu există (sau cheia nu are acces la proiect)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"422":{"description":"Date invalide (de exemplu `numar_neverificat`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"429":{"description":"Prea multe cereri sau limita zilnică atinsă","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}}}}},"/checks/{id}":{"get":{"tags":["Monitorizare"],"summary":"O verificare","description":"Dreptul cheii: „citire”.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Reușit","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"$ref":"#/components/schemas/Verificare"}}}}}},"401":{"description":"Cheia lipsește, e greșită sau revocată","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"403":{"description":"Cheia nu are dreptul cerut","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"404":{"description":"Nu există (sau cheia nu are acces la proiect)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"422":{"description":"Date invalide (de exemplu `numar_neverificat`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"429":{"description":"Prea multe cereri sau limita zilnică atinsă","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}}}}},"/checks/{id}/pause":{"post":{"tags":["Monitorizare"],"summary":"Pune verificarea în pauză","description":"Dreptul cheii: „scriere”.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Reușit","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"$ref":"#/components/schemas/Verificare"}}}}}},"401":{"description":"Cheia lipsește, e greșită sau revocată","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"403":{"description":"Cheia nu are dreptul cerut","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"404":{"description":"Nu există (sau cheia nu are acces la proiect)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"422":{"description":"Date invalide (de exemplu `numar_neverificat`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"429":{"description":"Prea multe cereri sau limita zilnică atinsă","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}}}}},"/checks/{id}/resume":{"post":{"tags":["Monitorizare"],"summary":"Reia verificarea","description":"Dreptul cheii: „scriere”.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Reușit","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"$ref":"#/components/schemas/Verificare"}}}}}},"401":{"description":"Cheia lipsește, e greșită sau revocată","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"403":{"description":"Cheia nu are dreptul cerut","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"404":{"description":"Nu există (sau cheia nu are acces la proiect)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"422":{"description":"Date invalide (de exemplu `numar_neverificat`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"429":{"description":"Prea multe cereri sau limita zilnică atinsă","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}}}}},"/incidents":{"get":{"tags":["Incidente"],"summary":"Incidentele, cele mai noi întâi","description":"Dreptul cheii: „citire”.","parameters":[{"name":"stare","in":"query","required":false,"description":"deschis, confirmat sau rezolvat","schema":{"type":"string"}},{"name":"proiect","in":"query","required":false,"description":"ID-ul proiectului","schema":{"type":"string"}},{"name":"serviciu","in":"query","required":false,"description":"ID-ul serviciului","schema":{"type":"string"}},{"name":"test","in":"query","required":false,"description":"„da” include simulările","schema":{"type":"string"}},{"name":"pagina","in":"query","required":false,"description":"Pagina, de la 1","schema":{"type":"string"}}],"responses":{"200":{"description":"Reușit","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"array","items":{"$ref":"#/components/schemas/Incident"}},"pagina":{"type":"integer"},"pe_pagina":{"type":"integer"},"total":{"type":"integer"}}}}}},"401":{"description":"Cheia lipsește, e greșită sau revocată","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"403":{"description":"Cheia nu are dreptul cerut","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"404":{"description":"Nu există (sau cheia nu are acces la proiect)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"422":{"description":"Date invalide (de exemplu `numar_neverificat`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"429":{"description":"Prea multe cereri sau limita zilnică atinsă","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}}}},"post":{"tags":["Incidente"],"summary":"Deschide un incident; politica proiectului sau a serviciului anunță echipa. Cu aceeași „cheie” cât e deschis, întoarce același incident","description":"Dreptul cheii: „scriere”.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IncidentNou"}}}},"responses":{"201":{"description":"Reușit","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"$ref":"#/components/schemas/Incident"}}}}}},"401":{"description":"Cheia lipsește, e greșită sau revocată","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"403":{"description":"Cheia nu are dreptul cerut","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"404":{"description":"Nu există (sau cheia nu are acces la proiect)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"422":{"description":"Date invalide (de exemplu `numar_neverificat`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"429":{"description":"Prea multe cereri sau limita zilnică atinsă","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}}}}},"/incidents/{reference}":{"get":{"tags":["Incidente"],"summary":"Un incident, după INC-0142 sau UUID","description":"Dreptul cheii: „citire”.","parameters":[{"name":"reference","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Reușit","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"$ref":"#/components/schemas/Incident"}}}}}},"401":{"description":"Cheia lipsește, e greșită sau revocată","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"403":{"description":"Cheia nu are dreptul cerut","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"404":{"description":"Nu există (sau cheia nu are acces la proiect)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"422":{"description":"Date invalide (de exemplu `numar_neverificat`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"429":{"description":"Prea multe cereri sau limita zilnică atinsă","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}}}}},"/incidents/{reference}/acknowledge":{"post":{"tags":["Incidente"],"summary":"Confirmă incidentul (oprește escaladarea)","description":"Dreptul cheii: „scriere”.","parameters":[{"name":"reference","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Reușit","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"$ref":"#/components/schemas/Incident"}}}}}},"401":{"description":"Cheia lipsește, e greșită sau revocată","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"403":{"description":"Cheia nu are dreptul cerut","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"404":{"description":"Nu există (sau cheia nu are acces la proiect)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"422":{"description":"Date invalide (de exemplu `numar_neverificat`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"429":{"description":"Prea multe cereri sau limita zilnică atinsă","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}}}}},"/incidents/{reference}/resolve":{"post":{"tags":["Incidente"],"summary":"Rezolvă incidentul","description":"Dreptul cheii: „scriere”.","parameters":[{"name":"reference","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Reușit","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"$ref":"#/components/schemas/Incident"}}}}}},"401":{"description":"Cheia lipsește, e greșită sau revocată","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"403":{"description":"Cheia nu are dreptul cerut","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"404":{"description":"Nu există (sau cheia nu are acces la proiect)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"422":{"description":"Date invalide (de exemplu `numar_neverificat`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"429":{"description":"Prea multe cereri sau limita zilnică atinsă","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}}}}},"/shifts":{"get":{"tags":["Gardă"],"summary":"Cine e de gardă pe fiecare tură, acum sau la „la”","description":"Dreptul cheii: „citire”.","parameters":[{"name":"la","in":"query","required":false,"description":"Momentul, ISO 8601","schema":{"type":"string"}}],"responses":{"200":{"description":"Reușit","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"array","items":{"$ref":"#/components/schemas/Tura"}},"pagina":{"type":"integer"},"pe_pagina":{"type":"integer"},"total":{"type":"integer"}}}}}},"401":{"description":"Cheia lipsește, e greșită sau revocată","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"403":{"description":"Cheia nu are dreptul cerut","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"404":{"description":"Nu există (sau cheia nu are acces la proiect)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"422":{"description":"Date invalide (de exemplu `numar_neverificat`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"429":{"description":"Prea multe cereri sau limita zilnică atinsă","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}}}}},"/status-pages":{"get":{"tags":["Gardă"],"summary":"Paginile de status, cu starea componentelor","description":"Dreptul cheii: „citire”.","responses":{"200":{"description":"Reușit","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"array","items":{"$ref":"#/components/schemas/PaginaStatus"}},"pagina":{"type":"integer"},"pe_pagina":{"type":"integer"},"total":{"type":"integer"}}}}}},"401":{"description":"Cheia lipsește, e greșită sau revocată","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"403":{"description":"Cheia nu are dreptul cerut","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"404":{"description":"Nu există (sau cheia nu are acces la proiect)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"422":{"description":"Date invalide (de exemplu `numar_neverificat`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"429":{"description":"Prea multe cereri sau limita zilnică atinsă","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}}}}},"/regions":{"get":{"tags":["Monitorizare"],"summary":"Regiunile active și adresele IP din care pleacă verificările, pentru whitelisting în firewall (aceeași listă ca onduty.ro/ip-uri.json și /ip-uri.txt); fără cheie","responses":{"200":{"description":"Reușit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Regiuni"}}}},"404":{"description":"Nu există (sau cheia nu are acces la proiect)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"422":{"description":"Date invalide (de exemplu `numar_neverificat`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"429":{"description":"Prea multe cereri sau limita zilnică atinsă","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}}},"security":[]}},"/events":{"post":{"tags":["Evenimente"],"summary":"O alertă din alt sistem, în formatul generic onDuty; „cheie” deduplică, „stare: rezolvat” închide","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eveniment"}}}},"responses":{"202":{"description":"Reușit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RezultatEveniment"}}}},"404":{"description":"Nu există (sau cheia nu are acces la proiect)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"422":{"description":"Date invalide (de exemplu `numar_neverificat`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"429":{"description":"Prea multe cereri sau limita zilnică atinsă","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}}},"security":[]}},"/calls":{"post":{"tags":["Apeluri și SMS"],"summary":"Sună un număr verificat și citește mesajul (TTS, română)","description":"Dreptul cheii: „apeluri și SMS”.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApelNou"}}}},"responses":{"202":{"description":"Reușit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Mesaj"}}}},"401":{"description":"Cheia lipsește, e greșită sau revocată","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"403":{"description":"Cheia nu are dreptul cerut","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"404":{"description":"Nu există (sau cheia nu are acces la proiect)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"422":{"description":"Date invalide (de exemplu `numar_neverificat`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"429":{"description":"Prea multe cereri sau limita zilnică atinsă","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}}}}},"/calls/{id}":{"get":{"tags":["Apeluri și SMS"],"summary":"Rezultatul unui apel","description":"Dreptul cheii: „apeluri și SMS”.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Reușit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Mesaj"}}}},"401":{"description":"Cheia lipsește, e greșită sau revocată","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"403":{"description":"Cheia nu are dreptul cerut","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"404":{"description":"Nu există (sau cheia nu are acces la proiect)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"422":{"description":"Date invalide (de exemplu `numar_neverificat`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"429":{"description":"Prea multe cereri sau limita zilnică atinsă","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}}}}},"/sms":{"post":{"tags":["Apeluri și SMS"],"summary":"Trimite un SMS spre un număr verificat","description":"Dreptul cheii: „apeluri și SMS”.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SmsNou"}}}},"responses":{"202":{"description":"Reușit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Mesaj"}}}},"401":{"description":"Cheia lipsește, e greșită sau revocată","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"403":{"description":"Cheia nu are dreptul cerut","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"404":{"description":"Nu există (sau cheia nu are acces la proiect)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"422":{"description":"Date invalide (de exemplu `numar_neverificat`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"429":{"description":"Prea multe cereri sau limita zilnică atinsă","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}}}}},"/sms/{id}":{"get":{"tags":["Apeluri și SMS"],"summary":"Starea unui SMS","description":"Dreptul cheii: „apeluri și SMS”.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Reușit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Mesaj"}}}},"401":{"description":"Cheia lipsește, e greșită sau revocată","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"403":{"description":"Cheia nu are dreptul cerut","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"404":{"description":"Nu există (sau cheia nu are acces la proiect)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"422":{"description":"Date invalide (de exemplu `numar_neverificat`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}},"429":{"description":"Prea multe cereri sau limita zilnică atinsă","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eroare"}}}}}}}},"components":{"securitySchemes":{"cheie":{"type":"http","scheme":"bearer","description":"Cheia API, od_live_…"}},"schemas":{"Eroare":{"type":"object","required":["eroare","mesaj"],"properties":{"eroare":{"type":"string"},"mesaj":{"type":"string"},"campuri":{"type":"object"}}},"Proiect":{"type":"object","properties":{"id":{"type":"string"},"nume":{"type":"string"},"servicii":{"type":"integer"}}},"Serviciu":{"type":"object","properties":{"id":{"type":"string"},"proiect":{"type":"string"},"nume":{"type":"string"},"descriere":{"type":["string","null"]},"stare":{"type":"string","enum":["pending","up","degraded","down","maintenance","paused"]},"stare_din":{"type":["string","null"],"format":"date-time"},"verificari":{"type":"integer"}}},"Verificare":{"type":"object","properties":{"id":{"type":"string"},"serviciu":{"type":"string"},"nume":{"type":"string"},"tip":{"type":"string"},"tinta":{"type":"string"},"critica":{"type":"boolean"},"interval":{"type":"integer"},"stare":{"type":"string","enum":["pending","up","degraded","down","maintenance","paused"]},"stare_din":{"type":["string","null"],"format":"date-time"},"in_pauza":{"type":"boolean"},"ultima_verificare":{"type":["string","null"],"format":"date-time"},"raspuns_ms":{"type":["integer","null"]},"etichete":{"type":"array","items":{"type":"string"}},"regiuni_publice":{"type":"boolean"}}},"Asertiune":{"type":"object","required":["cale","operator"],"properties":{"cale":{"type":"string","example":"$.data.status","description":"Calea în corpul JSON: $.a.b, $.items[0].id, $.items.length"},"operator":{"type":"string","enum":["==","!=",">","<","contains","exists","matches"]},"valoare":{"type":"string","description":"Fără ea la „exists”; număr la > și <; expresie regulată (RE2) la „matches”"}}},"Pas":{"type":"object","required":["url"],"properties":{"nume":{"type":"string"},"metoda":{"type":"string","enum":["GET","HEAD","POST","PUT","PATCH","DELETE","OPTIONS"]},"url":{"type":"string","description":"Adresa completă; după domeniu poate folosi {{variabila}} unui pas anterior"},"headere":{"type":"object","additionalProperties":{"type":"string"},"description":"Valorile se păstrează criptate și pot folosi {{variabile}}"},"corp":{"type":"string","description":"Pentru POST, PUT, PATCH, DELETE; se păstrează criptat"},"coduri":{"type":"string","example":"200-299"},"urmeaza_redirecturi":{"type":"boolean"},"asertiuni":{"type":"array","items":{"$ref":"#/components/schemas/Asertiune"}},"variabile":{"type":"array","items":{"type":"object","required":["nume","cale"],"properties":{"nume":{"type":"string","example":"token"},"sursa":{"type":"string","enum":["json","header"]},"cale":{"type":"string","example":"$.access_token","description":"Calea JSON sau numele header-ului"}}}}}},"VerificareNoua":{"type":"object","required":["serviciu","tip"],"properties":{"serviciu":{"type":"string"},"tip":{"type":"string","enum":["http","keyword","api","ping","port","udp","smtp","imap","ssl","domain","dns","heartbeat"]},"metoda":{"type":"string","description":"Pentru tip = http sau keyword; implicit GET"},"coduri":{"type":"string","description":"Codurile acceptate, de exemplu 200-299, 301"},"asertiuni":{"type":"array","items":{"$ref":"#/components/schemas/Asertiune"},"description":"Pentru tip = http: aserțiuni pe corpul JSON (planurile cu „API checks”)"},"pasi":{"type":"array","items":{"$ref":"#/components/schemas/Pas"},"description":"Pentru tip = api: 1–10 cereri, în ordine (planurile cu „API checks”)"},"payload":{"type":"string","description":"Pentru tip = udp: ce trimitem"},"format_payload":{"type":"string","enum":["text","hex"]},"raspuns_asteptat":{"type":"string","description":"Pentru tip = udp: textul pe care trebuie să-l conțină răspunsul"},"tls":{"type":"string","enum":["none","starttls","tls"],"description":"Pentru tip = smtp sau imap"},"etichete":{"type":"array","items":{"type":"string"}},"regiuni_publice":{"type":"boolean","description":"false: rulează doar din verificatoarele private alese"},"verificatoare_private":{"type":"array","items":{"type":"integer"},"description":"Id-urile verificatoarelor private ale contului"},"nume":{"type":"string"},"tinta":{"type":"string","description":"URL-ul, host-ul sau domeniul"},"critica":{"type":"boolean"},"interval":{"type":"integer","description":"Secunde, dintre intervalele planului"},"cuvant":{"type":"string","description":"Pentru tip = keyword"},"cuvant_absent":{"type":"boolean"},"port":{"type":"integer","description":"Pentru tip = port sau udp (obligatoriu), smtp sau imap (opțional)"},"inregistrare":{"type":"string","description":"Pentru tip = dns: A, AAAA, CNAME, MX, NS, TXT"},"asteptat":{"type":"string"},"perioada":{"type":"integer","description":"Pentru tip = heartbeat, secunde"},"gratie":{"type":"integer"}}},"Incident":{"type":"object","properties":{"id":{"type":"string","example":"INC-0142"},"titlu":{"type":"string"},"descriere":{"type":["string","null"]},"proiect":{"type":"string"},"serviciu":{"type":["string","null"]},"prioritate":{"type":"integer"},"stare":{"type":"string","enum":["deschis","confirmat","rezolvat"]},"sursa":{"type":"string"},"cheie":{"type":["string","null"]},"test":{"type":"boolean"},"inceput":{"type":["string","null"],"format":"date-time"},"confirmat":{"type":["string","null"],"format":"date-time"},"rezolvat":{"type":["string","null"],"format":"date-time"},"link":{"type":"string"}}},"IncidentNou":{"type":"object","required":["titlu","proiect"],"properties":{"titlu":{"type":"string"},"proiect":{"type":"string"},"serviciu":{"type":"string"},"prioritate":{"type":"integer","minimum":1,"maximum":4,"default":1},"descriere":{"type":"string"},"cheie":{"type":"string","description":"Deduplicare: cât incidentul e deschis, aceeași cheie îl întoarce"}}},"Tura":{"type":"object","properties":{"tura":{"type":"string"},"nume":{"type":"string"},"echipa":{"type":["string","null"]},"proiect":{"type":"string"},"de_garda":{"type":["object","null"]},"de_la":{"type":["string","null"],"format":"date-time"},"pana_la":{"type":["string","null"],"format":"date-time"},"inlocuire":{"type":"boolean"}}},"PaginaStatus":{"type":"object","properties":{"id":{"type":"string"},"titlu":{"type":"string"},"proiect":{"type":"string"},"adresa":{"type":"string"},"publicata":{"type":"boolean"},"stare":{"type":"object"},"componente":{"type":"array"}}},"Regiune":{"type":"object","properties":{"cod":{"type":"string","example":"fra1"},"nume":{"type":"string"},"oras":{"type":["string","null"]},"tara":{"type":["string","null"],"description":"Codul ISO al țării, de exemplu DE"},"continent":{"type":"string"},"ipv4":{"type":"array","items":{"type":"string"}},"ipv6":{"type":"array","items":{"type":"string"}}}},"Regiuni":{"type":"object","properties":{"date":{"type":"array","items":{"$ref":"#/components/schemas/Regiune"}},"ipv4":{"type":"array","items":{"type":"string"},"description":"Toate adresele IPv4, o singură dată"},"ipv6":{"type":"array","items":{"type":"string"},"description":"Toate adresele IPv6, o singură dată"}}},"Eveniment":{"type":"object","required":["integrare","titlu"],"properties":{"integrare":{"type":"string","description":"Cheia punctului de primire (ultima parte a URL-ului lui)"},"titlu":{"type":"string"},"severitate":{"type":"string","description":"critic, mare, mediu, mic (sau P1–P4)"},"sursa":{"type":"string"},"cheie":{"type":"string","description":"Alertele cu aceeași cheie actualizează același incident"},"stare":{"type":"string","enum":["deschis","rezolvat"]},"descriere":{"type":"string"},"link":{"type":"string"},"etichete":{"type":"object","additionalProperties":{"type":"string"}}}},"RezultatEveniment":{"type":"object","properties":{"primit":{"type":"boolean"},"rezultat":{"type":"string","enum":["incident_deschis","atasata_la_incident","incident_rezolvat","ignorata_mesaj_de_test","ignorata_niciun_incident_deschis","ignorata_eveniment"]},"incident":{"type":["string","null"]}}},"ApelNou":{"type":"object","required":["catre","mesaj"],"properties":{"catre":{"type":"string","example":"+40722418214"},"mesaj":{"type":"string","maxLength":500},"de_pe":{"type":"string","description":"Unul dintre numerele contului"},"webhook":{"type":"string","description":"URL https unde trimitem rezultatul"}}},"SmsNou":{"type":"object","required":["catre","mesaj"],"properties":{"catre":{"type":"string","example":"+40731220645"},"mesaj":{"type":"string","maxLength":640},"webhook":{"type":"string"}}},"Mesaj":{"type":"object","properties":{"id":{"type":"string","example":"apl_8f2k1q0w9e3r"},"tip":{"type":"string","enum":["apel","sms"]},"catre":{"type":"string"},"de_pe":{"type":"string"},"stare":{"type":"string","enum":["in_coada","preluat","nepreluat","trimis","esuat"]},"detaliu":{"type":"string"},"tasta":{"type":"string"},"durata":{"type":"integer"},"segmente":{"type":"integer"},"creat":{"type":["string","null"],"format":"date-time"},"actualizat":{"type":["string","null"],"format":"date-time"}}}}}}