ssm.ro Docs

Schema — Employee

Structura completă a obiectului Employee utilizat în endpoint-urile de contacte ale API-ului ssm.ro.

Obiectul Employee reprezintă un angajat (contact) în platforma ssm.ro. Este folosit ca request body la creare și modificare, și ca răspuns la preluare.

Câmpuri obligatorii

Aceste câmpuri trebuie trimise la fiecare scriere (POST și PATCH), chiar dacă valoarea nu se modifică. Toate celelalte câmpuri din tabelul de mai jos sunt opționale.

CâmpObligatoriuObservații
organizatieDa (toate endpoint-urile: GET, POST, PATCH)Subdomeniul organizației. Lipsește → 400 Organizatia nu este setata; greșit → 400 Organizatie invalida
marcaDa (POST și PATCH)Cheia unică a angajatului. Lipsește la POST → 422 Lipsa Marca
numeDaLipsește → 422 Lipsa Nume
departamentDa*Se creează automat dacă nu există, cu opțiunea activată.* Lipsește → 422 Lipsa Departament
postDa*Se creează automat dacă nu există, cu opțiunea activată.* Lipsește → 422 Lipsa Post
corDa*Se creează automat pe postul respectiv. Lipsește → 422 Lipsa Functie COR

* Valoarea trebuie trimisă întotdeauna, dar nu e obligatoriu să existe deja în platformă — vezi mai jos.

Crearea automată depinde de o setare a organizației

Un departament sau un post care nu există în platformă este creat automat doar dacă opțiunea corespunzătoare este activată din Setări → Opțiuni → Setări avansate import angajați (Adăugare automată departamente / Adăugare automată posturi), editabilă exclusiv de Super-Utilizator — vezi Configurări. Dacă opțiunea este dezactivată, o valoare inexistentă este respinsă cu 422, la fel ca un câmp lipsă: departamentele și posturile trebuie create în prealabil în platformă.

Câmpuri

CâmpTipValori acceptateDescriere
numestring—Numele de familie
prenumestring—Prenumele
emailstring—Adresa de email (folosită pentru autentificare în platformă). Unică în cadrul organizației
departamentstring—Denumirea departamentului
codDepartamentstring—Codul extern al departamentului
corstring—Funcția conform Clasificării Ocupațiilor din România (COR)
poststring—Grupul de risc din care face parte funcția — determină instruirea SSM trimisă angajatului. Nu este titulatura funcției (aceea este cor) — vezi nota de mai jos
marcastring—Cheia unică de identificare a angajatului (ID intern HR)
marcaSuperiorstring—Marca superiorului direct (N+1)
marcaSuperior2string—Marca superiorului N+2 (acolo unde se aplică)
marcaInlocuitorstring—Marca înlocuitorului
adresastring—Adresa angajatului
localitatestring—Localitatea
judetstring—Județul
dataNasteriistringtext liberData nașterii sau data și locul nașterii combinate (ex: 1981-08-24 sau 24.08.1981, Brașov). Câmp text liber, nevalidat ca dată — se trimite exact cum apare în documentele organizației
locatieFizicastring—Locația fizică / biroul (ex: Office 101)
statusstringactiv rez suspendatStarea contractului angajatului
organizatiestring—Numele organizației din platformă
echipaPSIstringDa NuFace parte din echipa PSI (Prevenire și Stingere Incendii)
telefonstring—Numărul de telefon al angajatului
cnpstring13 cifreCod Numeric Personal. Validat dacă e trimis: exact 13 cifre și unic în organizație
limbastringro enLimba interfeței angajatului în platformă
calificarestring—Calificarea angajatului
cetateniestring—Cetățenia angajatului
nationalitatestring—Naționalitatea / țara angajatului
dataIncepereActivitatestringYYYY-MM-DDData începerii activității (dată contract), format ISO 8601

Exemplu complet

{
  "nume": "Ion",
  "prenume": "Popescu",
  "email": "ion.popescu@exemplu.ro",
  "departament": "Finanțe",
  "codDepartament": "D163",
  "cor": "Referent bancar",
  "post": "Tesa",
  "marca": "M00212",
  "marcaSuperior": "M00132",
  "marcaSuperior2": "M0081",
  "marcaInlocuitor": "M00301",
  "adresa": "Str. Soarelui nr. 2",
  "localitate": "Brașov",
  "judet": "Brașov",
  "dataNasterii": "1981-08-24",
  "locatieFizica": "Office 101",
  "status": "activ",
  "organizatie": "demo-organization",
  "echipaPSI": "Nu",
  "telefon": "+40722333444",
  "cnp": "1800101221144",
  "limba": "ro",
  "calificare": "Inginer",
  "cetatenie": "Romana",
  "nationalitate": "Romania",
  "dataIncepereActivitate": "2020-01-15"
}

Note

  • Câmpul marca este identificatorul unic al angajatului și este folosit ca cheie de căutare în GET /v1/contacts?marca= și ca referință în ierarhia de superiori.
  • La PATCH /v1/contacts/update, se trimite schema completă Employee. Câmpurile obligatorii (organizatie, marca, nume, departament, post, cor) trebuie incluse și aici, nu doar la creare; organizatie și marca identifică contactul.
  • Valorile goale nu șterg datele. Un câmp trimis cu null sau "" este ignorat, iar valoarea existentă rămâne neschimbată. Pentru a anula o informație dintr-un câmp text liber, trimite orice șir de caractere nevid (ex: "-", "n/a") — vezi Contacte.
  • Valorile status: activ = angajat activ, rez = rezervat / inactiv temporar, suspendat = suspendat.
  • Departament identificat prin codDepartament. Departamentul este identificat după codDepartament (codul extern unic din HR). Dacă trimiți același codDepartament cu o valoare departament diferită față de cea existentă, denumirea departamentului este actualizată (redenumire), fără a crea un departament nou. Astfel, o redenumire în HR se propagă în platformă câtă vreme codul rămâne același.
  • cnp este validat doar dacă e trimis: trebuie să aibă exact 13 cifre și să fie unic în organizație.
  • telefon este normalizat automat; valorile prea scurte (sub 9 cifre) sunt ignorate, fără eroare.
  • dataIncepereActivitate: o dată neparsabilă este tratată ca goală (câmpul este ignorat, fără eroare).
  • post este grupul de risc, nu titulatura funcției. Titulatura este cor (funcția conform COR); post este categoria definită de inspectorul SSM care grupează un set de funcții COR și în baza căreia se trimite instruirea corespunzătoare (ex: Lucratori birou, Lucratori cu risc electric, Lucratori la inaltime). Posturile se creează manual de inspector în platformă sau automat la import, dacă super utilizatorul a activat Adăugare automată posturi (altfel un post inexistent întoarce 422); o funcție a cărei alocare lipsește ajunge temporar în grupul intern _FUNCTII_NEALOCATE_, până la alocarea manuală. Pentru un exemplu de mapare cor → post, vezi Exemplu Node.js.
  • email este unic în cadrul organizației. Două contacte cu marca diferită nu pot avea același email în aceeași organizație. Pentru angajații cu mai multe contracte, vezi Angajați cu mai multe contracte.