Introducere
API-ul iHRM oferă acces programatic la platformă prin GraphQL (/eAPI) și REST v1 (/api/v1) pentru integrarea ecosistemului.
https://testez.ihrm.ro/eAPI/
Toate cererile către API trebuie să fie trimise la URL-ul de bază de mai sus, urmat de interogarea sau mutația GraphQL dorită.
Ce este un API?
Un API (Application Programming Interface) este un set de reguli și definiții care permit aplicațiilor să comunice între ele. API-urile sunt utilizate pentru a permite diferitelor componente software să interacționeze și să partajeze date.
Ce poți face cu API-ul iHRM?
Cu API-ul iHRM, poți accesa și gestiona datele din platforma noastră de resurse umane. Poți efectua operațiuni precum:
- Autentificare și obținerea unui token de acces
- Interogarea și gestionarea utilizatorilor
- Interogarea și gestionarea companiilor
- Interogarea și gestionarea sesiunilor
- Interogarea și gestionarea modulelor și seturilor de întrebări
REST API v1 — Ecosistem
Endpoint-uri REST pentru integrarea site-urilor externe (website.ihrm.ro, cariere, marketing). Autentificare prin header X-IHRM-Api-Key pentru operațiuni protejate.
https://testez.ihrm.ro/api/v1Cheia API se configurează în
IHRM_API_KEY (identică pe platformă și website).
| Metodă | Endpoint | Auth | Descriere |
|---|---|---|---|
| GET | /api/v1/jobs |
— | Listă joburi publice (sesiuni recrutare active) |
| GET | /api/v1/jobs/{id} |
— | Detalii job public |
| POST | /api/v1/guest-apply |
API Key | Aplicare candidat guest — trimite magic link pe email |
| POST | /api/v1/apply-token |
API Key | Token SSO pentru user autentificat pe website → redirect /sso/apply/consume |
GET /api/v1/jobs
Returnează sesiunile de recrutare publice (JSON). Folosit de pagina de cariere.
GET https://testez.ihrm.ro/api/v1/jobs
Accept: application/json
POST /api/v1/guest-apply
Trimite link magic candidatului pentru finalizarea aplicării pe platformă.
POST https://testez.ihrm.ro/api/v1/guest-apply
X-IHRM-Api-Key: your-shared-secret
Content-Type: application/json
{
"email": "candidat@exemplu.ro",
"session_id": 123
}
POST /api/v1/apply-token
Generează token SSO pentru utilizator deja autentificat pe website extern.
POST https://testez.ihrm.ro/api/v1/apply-token
X-IHRM-Api-Key: your-shared-secret
Content-Type: application/json
{
"user_email": "user@exemplu.ro",
"session_id": 123
}
Răspunsul conține URL de redirect către https://testez.ihrm.ro/sso/apply/consume?token=...
Webhooks outbound
Notificări HTTP către sisteme externe (ATS, HRIS, automatizări). Configurare din Companie → Management → Webhooks.
X-IHRM-Signature (HMAC-SHA256). Secretul este afișat o singură dată la înregistrare.
Evenimente disponibile
application.created— candidat nou în pipelineapplication.stage_changed— mutare între etape ATSapplication.completed— quiz finalizatwebhook.test— ping de test din UI
Format payload (exemplu)
POST https://your-system.example/hooks/ihrm
X-IHRM-Signature: sha256=...
X-IHRM-Event: application.stage_changed
Content-Type: application/json
{
"event": "application.stage_changed",
"company_id": 1,
"application_id": 42,
"stage": "interview",
"occurred_at": "2026-06-11T10:00:00Z"
}
Verificare semnătură (PHP)
$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_IHRM_SIGNATURE'] ?? '';
$expected = 'sha256=' . hash_hmac('sha256', $payload, $yourSecret);
if (!hash_equals($expected, $signature)) {
http_response_code(401);
exit('Invalid signature');
}
Livrările eșuate sunt reîncercate automat; după eșec definitiv, HR primește notificare în platformă. Jurnalul și replay-ul sunt disponibile în UI.
Autentificare
Pentru a utiliza API-ul, trebuie să includeți un token de autentificare în header-ul fiecărei cereri.
API-ul iHRM folosește autentificarea prin token-uri Bearer. Pentru a obține un token, trebuie să folosiți mutația login.
Authorization: Bearer TOKEN
Obținerea token-ului de autentificare
Pentru a obține un token de autentificare, trebuie să trimiteți o cerere de autentificare folosind următoarea mutație GraphQL:
mutation {
login(login: "your@email.example", password: "YOUR_PASSWORD") {
access_token
user {
id
name
email
}
}
}
Înlocuiți your@email.example și YOUR_PASSWORD cu credențialele unui cont valid din platformă. Nu folosiți parole în documentație publică.
URL-ul complet pentru această mutație este:
https://testez.ihrm.ro/eAPI?query=mutation{login(login:"your@email.example",password:"YOUR_PASSWORD"){access_token user{id name email}}}
Pentru a folosi ReqBin, introduceți următorul JSON:
{
"query": "mutation { login(login: \"your@email.example\", password: \"YOUR_PASSWORD\") { access_token user { id name email } } }"
}
După ce ați obținut token-ul de autentificare, includeți-l în header-ul fiecărei cereri pentru a accesa resursele protejate ale API-ului.
Pentru a vă deconecta, puteți folosi mutația logout (necesită autentificare).
Interogări
Notă: Unele interogări necesită ca utilizatorul să aibă acces special în sistem.
Folosind interogările, puteți obține date despre:
- Utilizatori:
me: Informații despre utilizatorul autentificat (necesită autentificare).
Câmpuri: id, username, name, emailuser(id: ID!): Informații despre un utilizator specific, identificat prin ID.
Câmpuri: id, username, name, emailusers: O listă paginată cu toți utilizatorii.
Câmpuri: id, username, name, email
- Companii:
companies(id: ID): Informații despre o companie specifică, identificată prin ID.
Câmpuri: id, name, email, website, phonecompaniesList: O listă paginată cu toate companiile.
Câmpuri: id, name, email, website, phone
- Sesiuni:
session(id: ID!): Informații despre o sesiune specifică, identificată prin ID.
Câmpuri: id, name, start_date, end_date, statussessions(company_id: ID!): O listă paginată cu toate sesiunile pentru o anumită companie.
Câmpuri: id, name, start_date, end_date, status
- Module:
module(id: ID!): Informații despre un modul specific, identificat prin ID.
Câmpuri: id, name, descriptionmodules(company_id: ID!): O listă paginată cu toate modulele pentru o anumită companie.
Câmpuri: id, name, description
- Seturi de întrebări:
questionSet(id: ID!): Informații despre un set de întrebări specific, identificat prin ID.
Câmpuri: id, name, description, timer_minutesquestionSets(module_id: ID!): O listă paginată cu toate seturile de întrebări pentru un anumit modul.
Câmpuri: id, name, description, timer_minutes
Exemplu de interogare pentru a obține informații despre utilizatorul curent (necesită autentificare):
query {
me {
id
name
email
username
}
}
URL-ul complet pentru această interogare este:
https://testez.ihrm.ro/eAPI?query=query{me{id name email username}}
Pentru a folosi ReqBin, introduceți următorul JSON:
{
"query": "query { me { id name email username } }"
}
Exemplu de interogare pentru a obține informații despre o companie specifică:
query {
companies(id: 1) {
id
name
email
website
phone
}
}
URL-ul complet pentru această interogare este:
https://testez.ihrm.ro/eAPI?query=query{company(id:1){id name email website phone}}
Pentru a folosi ReqBin, introduceți următorul JSON:
{
"query": "query { company(id: 1) { id name email website phone } }"
}
Exemplu de interogare pentru a obține informații despre o sesiune specifică:
query {
session(id: 1) {
id
name
start_date
end_date
status
}
}
URL-ul complet pentru această interogare este:
https://testez.ihrm.ro/eAPI?query=query{session(id:1){id name start_date end_date status}}
Pentru a folosi ReqBin, introduceți următorul JSON:
{
"query": "query { session(id: 1) { id name start_date end_date status } }"
}
Mutații
Notă: Unele mutații necesită ca utilizatorul să aibă acces special în sistem.
Folosind mutațiile, puteți modifica datele, precum:
- Gestionarea utilizatorilor:
createUser(input: CreateUserInput!): Creează un utilizator nou.updateUser(id: ID!, input: UpdateUserInput!): Actualizează un utilizator existent.
- Gestionarea companiilor:
createCompany(input: CreateCompanyInput!): Creează o companie nouă.updateCompany(id: ID!, input: UpdateCompanyInput!): Actualizează o companie existentă.
- Gestionarea sesiunilor:
createSession(input: CreateSessionInput!): Creează o sesiune nouă.updateSession(id: ID!, input: UpdateSessionInput!): Actualizează o sesiune existentă.
Exemplu de mutație pentru a crea un utilizator nou:
mutation {
createUser(input: {
name: "Nume Utilizator"
prenume: "Prenume Utilizator"
email: "email@example.com"
username: "username"
password: "parola"
}) {
id
name
email
}
}
URL-ul complet pentru această mutație este:
https://testez.ihrm.ro/eAPI?query=mutation{createUser(input:{name:%22Nume%20Utilizator%22,prenume:%22Prenume%20Utilizator%22,email:%22email@example.com%22,username:%22username%22,password:%22parola%22}){id name email}}
Pentru a folosi ReqBin, introduceți următorul JSON:
{
"query": "mutation { createUser(input: { name: \"Nume Utilizator\" prenume: \"Prenume Utilizator\" email: \"email@example.com\" username: \"username\" password: \"parola\" }) { id name email } }"
}
Actualizează un utilizator
Acest endpoint actualizează datele unui utilizator existent specificat prin ID.
mutation {
updateUser(id: 1, input: {
name: "Nume Nou"
email: "emailnou@example.com"
}) {
id
name
email
}
}
URL-ul complet pentru această mutație este:
https://testez.ihrm.ro/eAPI?query=mutation{updateUser(id:1,input:{name:%22Nume%20Nou%22,email:%22emailnou@example.com%22}){id name email}}
Pentru a folosi ReqBin, introduceți următorul JSON:
{
"query": "mutation { updateUser(id: 1, input: { name: \"Nume Nou\" email: \"emailnou@example.com\" }) { id name email } }"
}
Creează o companie
Acest endpoint creează o nouă companie cu datele specificate.
mutation {
createCompany(input: {
name: "Compania Nouă"
email: "contact@compania.com"
website: "https://compania.com"
phone: "123-456-7890"
}) {
id
name
email
}
}
URL-ul complet pentru această mutație este:
https://testez.ihrm.ro/eAPI?query=mutation{createCompany(input:{name:%22Compania%20Nouă%22,email:%22contact@compania.com%22,website:%22https://compania.com%22,phone:%22123-456-7890%22}){id name email}}
Pentru a folosi ReqBin, introduceți următorul JSON:
{
"query": "mutation { createCompany(input: { name: \"Compania Nouă\" email: \"contact@compania.com\" website: \"https://compania.com\" phone: \"123-456-7890\" }) { id name email } }"
}
Actualizează o companie
Acest endpoint actualizează datele unei companii existente specificate prin ID.
mutation {
updateCompany(id: 1, input: {
name: "Compania Actualizată"
email: "contactnou@compania.com"
}) {
id
name
email
}
}
URL-ul complet pentru această mutație este:
https://testez.ihrm.ro/eAPI?query=mutation{updateCompany(id:1,input:{name:%22Compania%20Actualizată%22,email:%22contactnou@compania.com%22}){id name email}}
Pentru a folosi ReqBin, introduceți următorul JSON:
{
"query": "mutation { updateCompany(id: 1, input: { name: \"Compania Actualizată\" email: \"contactnou@compania.com\" }) { id name email } }"
}
Creează o sesiune
Acest endpoint creează o nouă sesiune cu datele specificate.
mutation {
createSession(input: {
name: "Sesiunea Nouă"
start_date: "2025-02-24T09:00:00"
end_date: "2025-02-24T17:00:00"
module_id: 1
company_id: 1
question_set_ids: [1, 2, 3]
}) {
id
name
start_date
end_date
}
}
URL-ul complet pentru această mutație este:
https://testez.ihrm.ro/eAPI?query=mutation{createSession(input:{name:%22Sesiunea%20Nouă%22,start_date:%222025-02-24%2009:00:00%22,end_date:%222025-02-24%2017:00:00%22,module_id:1,company_id:1,question_set_ids:[1,2,3]}){id name start_date end_date}}
Pentru a folosi ReqBin, introduceți următorul JSON:
{
"query": "mutation { createSession(input: { name: \"Sesiunea Nouă\" start_date: \"2025-02-24 09:00:00\" end_date: \"2025-02-24 17:00:00\" module_id: 1 company_id: 1 question_set_ids: [1, 2, 3] }) { id name start_date end_date } }"
}
Actualizează o sesiune
Acest endpoint actualizează datele unei sesiuni existente specificate prin ID.
mutation {
updateSession(id: 1, input: {
name: "Sesiunea Actualizată"
start_date: "2025-02-25 09:00:00"
end_date: "2025-02-25 17:00:00"
status: 1
}) {
id
name
start_date
end_date
status
}
}
URL-ul complet pentru această mutație este:
https://testez.ihrm.ro/eAPI?query=mutation{updateSession(id:1,input:{name:%22Sesiunea%20Actualizată%22,start_date:%222025-02-25%2009:00:00%22,end_date:%222025-02-25%2017:00:00%22,status:1}){id name start_date end_date status}}
Pentru a folosi ReqBin, introduceți următorul JSON:
{
"query": "mutation { updateSession(id: 1, input: { name: \"Sesiunea Actualizată\" start_date: \"2025-02-25 09:00:00\" end_date: \"2025-02-25 17:00:00\" status: 1 }) { id name start_date end_date status } }"
}
Changelog
Aici puteți găsi toate modificările și actualizările aduse API-ului iHRM.
- v2.1 — REST API v1 (jobs, guest-apply, apply-token), design documentație corporate, ecosistem website/despre.
- Versiunea 1.0.1 — Adăugate noi endpoint-uri pentru gestionarea sesiunilor.
- Versiunea 1.0.0 — Lansarea inițială a API-ului iHRM GraphQL.