Appearance
Contacte
Contactele sunt persoanele de legătură ale unei companii. Listarea și crearea sunt imbricate sub companie (un contact nu poate fi orfan sau atribuit greșit); citirea, actualizarea și ștergerea sunt pe calea plată /api/v1/contacts/{id}.
Endpoint-uri
| Metodă | Cale | Descriere |
|---|---|---|
| GET | /api/v1/companies/{company}/contacts | Listă paginată a contactelor companiei; filtru search. |
| POST | /api/v1/companies/{company}/contacts | Creează un contact pentru companie. |
| GET | /api/v1/contacts/{id} | Citește un contact (cu compania părinte). |
| PUT | /api/v1/contacts/{id} | Actualizează un contact (parțial). |
| DELETE | /api/v1/contacts/{id} | Șterge un contact. |
Filtre la listare
| Parametru | Tip | Note |
|---|---|---|
search | string | Caută în first_name, last_name, email. |
per_page | integer | Implicit 50, plafonat la 200. |
Rezultatele sunt ordonate cu contactele principale (is_primary) primele, apoi alfabetic după prenume.
Schema unui contact
Câmpuri acceptate la POST / PUT. La POST, atât first_name cât și last_name sunt obligatorii (coloana e NOT NULL pe ambele); la PUT, toate sunt opționale.
| Câmp | Tip | Note |
|---|---|---|
first_name | string ≤ 100 | Obligatoriu la POST. |
last_name | string ≤ 100 | Obligatoriu la POST. |
email | email ≤ 255 | |
phone | string ≤ 30 | Stocat criptat; returnat în clar în răspuns. |
mobile | string ≤ 30 | Stocat criptat; returnat în clar în răspuns. |
position | string ≤ 100 | |
department | string ≤ 100 | |
job_title | string ≤ 255 | |
is_primary | boolean | Implicit false. Nu este exclusiv — poți avea mai mulți contacte primare pe aceeași companie; API-ul nu dezactivează automat celelalte, la fel ca interfața web. |
is_decision_maker | boolean | Implicit false. |
preferred_language | string ≤ 10 | Implicit ro. |
notes | text | |
birth_date | date | |
gender | string ≤ 20 | |
timezone | string ≤ 64 |
Răspunsul mai conține câmpuri needitabile prin API: id, company_id, metadata, last_contacted_at, created_at, updated_at, deleted_at, și full_name (calculat din first_name + last_name). La GET /api/v1/contacts/{id} este inclusă în plus compania părinte: company: {id, name}.
Exemplu — creare contact
bash
curl -X POST https://wartung.notsocrm.ro/api/v1/companies/1/contacts \
-H "Authorization: Bearer wartung.crm_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"first_name": "Ion",
"last_name": "Popescu",
"email": "ion@wartung.ro",
"position": "Director",
"is_primary": true
}'Răspuns 201:
json
{
"data": {
"id": 1,
"company_id": 1,
"first_name": "Ion",
"last_name": "Popescu",
"email": "ion@wartung.ro",
"position": "Director",
"department": null,
"is_primary": true,
"is_decision_maker": false,
"preferred_language": "ro",
"notes": null,
"metadata": null,
"last_contacted_at": null,
"created_at": "2026-07-31T22:18:51.000000Z",
"updated_at": "2026-07-31T22:18:51.000000Z",
"deleted_at": null,
"birth_date": null,
"gender": null,
"job_title": null,
"timezone": null,
"full_name": "Ion Popescu",
"phone": null,
"mobile": null
}
}Ștergere
bash
curl -X DELETE https://wartung.notsocrm.ro/api/v1/contacts/1 \
-H "Authorization: Bearer wartung.crm_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"json
{ "message": "Contact deleted." }