Setup Interventie via API
Ghid complet pas-cu-pas pentru crearea si gestionarea interventiilor prin API folosind cURL.
Privire de ansamblu
Autentificare
Obtineti un token JWT folosind credentialele contului.
Identificare obiectiv
Listati obiectivele (cladiri, bunuri, persoane) si notati ID-ul.
Creare interventie
Trimiteti un POST cu detaliile interventiei catre /interventii.
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
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).
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):
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6Ik9wZXJhdG9yIiwiaWF0IjoxNjE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
"expiresIn": 3600
}Identificare obiectiv
Fiecare interventie este asociata unui obiectiv. Exista trei tipuri de obiective:
| objectiveType | Descriere | Endpoint listare |
|---|---|---|
obiective/cladiri | Cladiri si locatii fizice | GET /obiective/cladiri |
obiective/bunuri | Bunuri si echipamente (vehicule, utilaje) | GET /obiective/bunuri |
obiective/persoane | Persoane protejate sau de contact | GET /obiective/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):
[
{
"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.
Creare interventie
Trimiteti un request POST catre /interventii. Doar trei campuri sunt obligatorii — restul au valori implicite.
| Camp | Tip | Obligatoriu | Valori / Descriere |
|---|---|---|---|
name | string | Da | Numele interventiei |
objectiveType | string | Da | obiective/cladiri | obiective/bunuri | obiective/persoane |
objectiveId | number | Da | ID-ul obiectivului (obtinut la pasul 2) |
description | string | Nu | Descrierea detaliata a interventiei |
dateStart | ISO 8601 | Nu | Data si ora de inceput (ex: 2026-03-29T14:30:00) |
dateEnd | ISO 8601 | Nu | Data si ora de sfarsit |
status | string | Nu | planned (implicit) | in_progress | done |
priority | string | Nu | low | medium (implicit) | high |
type | string | Nu | maintenance (implicit) | inspection | repair | other |
crews | number | Nu | Numarul de echipaje (minim 1) |
police | boolean | Nu | Solicita echipaj politie |
ambulance | boolean | Nu | Solicita ambulanta |
firetruck | boolean | Nu | Solicita echipaj pompieri |
notes | string | Nu | Note suplimentare |
Exemplu minimal (doar campuri obligatorii)
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):
{
"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)
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):
{
"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
}Verificare & monitorizare
Dupa creare, verificati interventia prin GET sau listati interventiile cu filtre:
curl -X GET https://api.mobilizat.ro/interventii/1002 \
-H "Authorization: Bearer YOUR_TOKEN"Filtrare si sortare
# 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"| Parametru | Descriere | Exemplu |
|---|---|---|
status | Filtru dupa status | ?status=planned |
priority | Filtru dupa prioritate | ?priority=high |
type | Filtru dupa tip | ?type=maintenance |
_sort | Camp dupa care se sorteaza | ?_sort=dateStart |
_order | Directia sortarii | ?_order=ASC / DESC |
_start / _end | Paginare (offset) | ?_start=0&_end=25 |
Actualizare & stergere
PUT /interventii/:id — Actualizare interventie
Actualizati orice camp al unei interventii existente. Trimiteti doar campurile modificate:
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):
{
"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.
curl -X DELETE https://api.mobilizat.ro/interventii/1002 \
-H "Authorization: Bearer YOUR_TOKEN"Raspuns: 204 No Content (fara body)
Tratarea erorilor
{
"error": "Bad Request",
"message": "Campul 'name' este obligatoriu",
"statusCode": 400
}{
"error": "Unauthorized",
"message": "Token invalid sau expirat",
"statusCode": 401
}| Cod | Cauza | Solutie |
|---|---|---|
400 | Campuri lipsa sau format invalid | Verificati ca name, objectiveType si objectiveId sunt prezente |
401 | Token lipsa, invalid sau expirat | Re-autentificati la /auth/token |
403 | Permisiuni insuficiente | Contactati administratorul pentru drepturi de operator |
404 | Interventie sau obiectiv inexistent | Verificati ID-ul resursei |
500 | Eroare interna server | Reincercati sau contactati suportul |
Script complet
Copiati scriptul de mai jos pentru a rula toti pasii intr-o singura executie. Necesita curl si jq.
#!/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!"