Setup Interventie via API

Ghid complet pas-cu-pas pentru crearea si gestionarea interventiilor prin API folosind cURL.

Privire de ansamblu

01

Autentificare

Obtineti un token JWT folosind credentialele contului.

02

Identificare obiectiv

Listati obiectivele (cladiri, bunuri, persoane) si notati ID-ul.

03

Creare interventie

Trimiteti un POST cu detaliile interventiei catre /interventii.

04

Verificare & monitorizare

Confirmati crearea si actualizati statusul interventiei.

Cerinte preliminare

  • Cont activ pe platforma mobilizat.ro
  • Cel putin un obiectiv configurat (cladire, bun sau persoana)
  • cURL instalat (inclus in macOS/Linux)
  • jq instalat (optional, pentru formatare JSON)
  • Drepturi de operator sau administrator
  • Acces la retea catre api.mobilizat.ro
1

Autentificare

Toate request-urile catre API necesita un token JWT valid. Obtineti-l prin endpoint-ul /auth/token. Token-ul expira dupa 3600 secunde (1 ora).

POST/auth/token
curl -X POST https://api.mobilizat.ro/auth/token \
  -H "Content-Type: application/json" \
  -d '{
    "email": "operator@firma-ta.ro",
    "password": "parola_securizata"
  }'

Raspuns (200 OK):

200Response
{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6Ik9wZXJhdG9yIiwiaWF0IjoxNjE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
  "expiresIn": 3600
}
2

Identificare obiectiv

Fiecare interventie este asociata unui obiectiv. Exista trei tipuri de obiective:

objectiveTypeDescriereEndpoint listare
obiective/cladiriCladiri si locatii fiziceGET /obiective/cladiri
obiective/bunuriBunuri si echipamente (vehicule, utilaje)GET /obiective/bunuri
obiective/persoanePersoane protejate sau de contactGET /obiective/persoane
GET/obiective/cladiri, /bunuri, /persoane
# Listare cladiri (buildings)
curl -X GET "https://api.mobilizat.ro/obiective/cladiri?_start=0&_end=10" \
  -H "Authorization: Bearer YOUR_TOKEN"

# Listare bunuri (assets)
curl -X GET "https://api.mobilizat.ro/obiective/bunuri?_start=0&_end=10" \
  -H "Authorization: Bearer YOUR_TOKEN"

# Listare persoane (persons)
curl -X GET "https://api.mobilizat.ro/obiective/persoane?_start=0&_end=10" \
  -H "Authorization: Bearer YOUR_TOKEN"

Raspuns exemplu (cladiri):

200Response
[
  {
    "id": 1,
    "name": "Sediu Central",
    "description": "Cladirea principala a companiei",
    "status": "active",
    "address": "Str. Victoriei 10",
    "city": "Bucuresti",
    "floors": 5,
    "surfaceArea": 2500
  },
  {
    "id": 2,
    "name": "Depozit Nord",
    "description": "Depozit logistic zona nord",
    "status": "active",
    "address": "Bd. Pipera 45",
    "city": "Voluntari",
    "floors": 2,
    "surfaceArea": 4000
  }
]

Notati valoarea id a obiectivului dorit — o veti folosi ca objectiveId la pasul urmator.

3

Creare interventie

Trimiteti un request POST catre /interventii. Doar trei campuri sunt obligatorii — restul au valori implicite.

CampTipObligatoriuValori / Descriere
namestringDaNumele interventiei
objectiveTypestringDaobiective/cladiri | obiective/bunuri | obiective/persoane
objectiveIdnumberDaID-ul obiectivului (obtinut la pasul 2)
descriptionstringNuDescrierea detaliata a interventiei
dateStartISO 8601NuData si ora de inceput (ex: 2026-03-29T14:30:00)
dateEndISO 8601NuData si ora de sfarsit
statusstringNuplanned (implicit) | in_progress | done
prioritystringNulow | medium (implicit) | high
typestringNumaintenance (implicit) | inspection | repair | other
crewsnumberNuNumarul de echipaje (minim 1)
policebooleanNuSolicita echipaj politie
ambulancebooleanNuSolicita ambulanta
firetruckbooleanNuSolicita echipaj pompieri
notesstringNuNote suplimentare

Exemplu minimal (doar campuri obligatorii)

POST/interventiiMinimal
curl -X POST https://api.mobilizat.ro/interventii \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -d '{
    "name": "Revizie sistem HVAC",
    "objectiveType": "obiective/cladiri",
    "objectiveId": 1
  }'

Raspuns (201 Created):

201Response — campurile nespecificate primesc valori implicite
{
  "id": 1001,
  "name": "Revizie sistem HVAC",
  "description": null,
  "dateStart": null,
  "dateEnd": null,
  "status": "planned",
  "priority": "medium",
  "type": "maintenance",
  "objectiveType": "obiective/cladiri",
  "objectiveId": 1,
  "crews": 1,
  "police": false,
  "ambulance": false,
  "firetruck": false,
  "notes": null,
  "dispeceratId": 2,
  "invoicePdf": null
}

Exemplu complet (toate campurile)

POST/interventiiComplet
curl -X POST https://api.mobilizat.ro/interventii \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -d '{
    "name": "Alarma sediu central",
    "description": "Alarma declansata la sediul central - Loss Prevention",
    "dateStart": "2026-03-29T14:30:00",
    "dateEnd": "2026-03-29T16:00:00",
    "status": "planned",
    "priority": "high",
    "type": "inspection",
    "objectiveType": "obiective/cladiri",
    "objectiveId": 1,
    "crews": 2,
    "police": true,
    "ambulance": false,
    "firetruck": false,
    "notes": "Verificare perimetru necesara. Contact admin cladire."
  }'

Raspuns (201 Created):

201Response
{
  "id": 1002,
  "name": "Alarma sediu central",
  "description": "Alarma declansata la sediul central - Loss Prevention",
  "dateStart": "2026-03-29T14:30:00",
  "dateEnd": "2026-03-29T16:00:00",
  "status": "planned",
  "priority": "high",
  "type": "inspection",
  "objectiveType": "obiective/cladiri",
  "objectiveId": 1,
  "crews": 2,
  "police": true,
  "ambulance": false,
  "firetruck": false,
  "notes": "Verificare perimetru necesara. Contact admin cladire.",
  "dispeceratId": 2,
  "invoicePdf": null
}
4

Verificare & monitorizare

Dupa creare, verificati interventia prin GET sau listati interventiile cu filtre:

GET/interventii/:id
curl -X GET https://api.mobilizat.ro/interventii/1002 \
  -H "Authorization: Bearer YOUR_TOKEN"

Filtrare si sortare

GET/interventii?filters
# Filtrare dupa status
curl -X GET "https://api.mobilizat.ro/interventii?status=planned&_sort=dateStart&_order=ASC" \
  -H "Authorization: Bearer YOUR_TOKEN"

# Filtrare dupa prioritate si tip
curl -X GET "https://api.mobilizat.ro/interventii?priority=high&type=inspection" \
  -H "Authorization: Bearer YOUR_TOKEN"
ParametruDescriereExemplu
statusFiltru dupa status?status=planned
priorityFiltru dupa prioritate?priority=high
typeFiltru dupa tip?type=maintenance
_sortCamp dupa care se sorteaza?_sort=dateStart
_orderDirectia sortarii?_order=ASC / DESC
_start / _endPaginare (offset)?_start=0&_end=25

Actualizare & stergere

PUT /interventii/:id — Actualizare interventie

Actualizati orice camp al unei interventii existente. Trimiteti doar campurile modificate:

PUT/interventii/1002
curl -X PUT https://api.mobilizat.ro/interventii/1002 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -d '{
    "status": "in_progress",
    "notes": "Echipaj ajuns la locatie. Verificare in curs."
  }'

Raspuns (200 OK):

200Response
{
  "id": 1002,
  "name": "Alarma sediu central",
  "description": "Alarma declansata la sediul central - Loss Prevention",
  "dateStart": "2026-03-29T14:30:00",
  "dateEnd": "2026-03-29T16:00:00",
  "status": "in_progress",
  "priority": "high",
  "type": "inspection",
  "objectiveType": "obiective/cladiri",
  "objectiveId": 1,
  "crews": 2,
  "police": true,
  "ambulance": false,
  "firetruck": false,
  "notes": "Echipaj ajuns la locatie. Verificare in curs.",
  "dispeceratId": 2,
  "invoicePdf": null
}

DELETE /interventii/:id — Stergere interventie

Stergeti o interventie existenta. Actiunea este ireversibila.

DELETE/interventii/1002
curl -X DELETE https://api.mobilizat.ro/interventii/1002 \
  -H "Authorization: Bearer YOUR_TOKEN"

Raspuns: 204 No Content (fara body)

Tratarea erorilor

400Bad Request
{
  "error": "Bad Request",
  "message": "Campul 'name' este obligatoriu",
  "statusCode": 400
}
401Unauthorized
{
  "error": "Unauthorized",
  "message": "Token invalid sau expirat",
  "statusCode": 401
}
CodCauzaSolutie
400Campuri lipsa sau format invalidVerificati ca name, objectiveType si objectiveId sunt prezente
401Token lipsa, invalid sau expiratRe-autentificati la /auth/token
403Permisiuni insuficienteContactati administratorul pentru drepturi de operator
404Interventie sau obiectiv inexistentVerificati ID-ul resursei
500Eroare interna serverReincercati sau contactati suportul

Script complet

Copiati scriptul de mai jos pentru a rula toti pasii intr-o singura executie. Necesita curl si jq.

setup-interventie.shBash Script
#!/bin/bash
# ============================================
# Setup interventie via API mobilizat.ro
# ============================================

BASE_URL="https://api.mobilizat.ro"

# Pas 1: Autentificare
echo ">>> Autentificare..."
TOKEN=$(curl -s -X POST "$BASE_URL/auth/token" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "operator@firma-ta.ro",
    "password": "parola_securizata"
  }' | jq -r '.token')

echo "Token obtinut: ${TOKEN:0:20}..."

# Pas 2: Verificare obiective disponibile
echo ">>> Listare cladiri..."
curl -s -X GET "$BASE_URL/obiective/cladiri?_start=0&_end=5" \
  -H "Authorization: Bearer $TOKEN" | jq '.[].name'

# Pas 3: Creare interventie
echo ">>> Creare interventie..."
RESPONSE=$(curl -s -X POST "$BASE_URL/interventii" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{
    "name": "Revizie sistem HVAC",
    "description": "Revizie anuala a sistemului de climatizare",
    "dateStart": "2026-04-01T09:00:00",
    "dateEnd": "2026-04-01T17:00:00",
    "status": "planned",
    "priority": "high",
    "type": "maintenance",
    "objectiveType": "obiective/cladiri",
    "objectiveId": 1,
    "crews": 2,
    "police": false,
    "ambulance": false,
    "firetruck": false,
    "notes": "Acces necesar la etajele 3-5"
  }')

ID=$(echo $RESPONSE | jq -r '.id')
echo "Interventie creata cu ID: $ID"

# Pas 4: Verificare
echo ">>> Verificare interventie..."
curl -s -X GET "$BASE_URL/interventii/$ID" \
  -H "Authorization: Bearer $TOKEN" | jq .

echo ">>> Done!"