Actualizare profil
Sincronizează datele agenților din CRM-ul tău — nume, descriere, rețele sociale și setări de contact.
Actualizează profilul agentului
Identifică agentul după externalId (din CRM-ul tău) sau id (din Rentix).
const response = await fetch('https://crm.rentix.md/api/v1/users', {
method: 'PUT',
headers: {
'Authorization': 'ApiKey YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
externalId: 'agent-001',
name: 'Ion Popescu',
description: 'Agent imobiliar experimentat. Lucrez cu proprietăți rezidențiale și comerciale.',
instagram: 'https://instagram.com/ion.popescu',
settings: {
contact_phone: true,
contact_whatsapp: true,
contact_telegram: true
}
})
});
const result = await response.json();
console.log(`Actualizat agentul #${result.id}`);
curl -X PUT https://crm.rentix.md/api/v1/users \
-H "Authorization: ApiKey YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"externalId": "agent-001",
"name": "Ion Popescu",
"description": "Agent imobiliar experimentat. Lucrez cu proprietăți rezidențiale și comerciale.",
"instagram": "https://instagram.com/ion.popescu",
"settings": {
"contact_phone": true,
"contact_whatsapp": true,
"contact_telegram": true
}
}'
$data = [
'externalId' => 'agent-001',
'name' => 'Ion Popescu',
'description' => 'Agent imobiliar experimentat. Lucrez cu proprietăți rezidențiale și comerciale.',
'instagram' => 'https://instagram.com/ion.popescu',
'settings' => [
'contact_phone' => true,
'contact_whatsapp' => true,
'contact_telegram' => true
]
];
$ch = curl_init('https://crm.rentix.md/api/v1/users');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: ApiKey YOUR_API_KEY',
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
{
"id": 1,
"externalId": "agent-001",
"updated": true
}
Parametri cerere
Identificare
Indică unul din parametri:
| Câmp | Tip | Descriere |
|---|---|---|
id | number | ID intern Rentix |
externalId | string | ID-ul tău din CRM (până la 255 caractere) |
idsauexternalId, nu ambele simultan.Profil
| Câmp | Tip | Descriere |
|---|---|---|
name | string | Numele agentului |
description | string/object | Descrierea profilului |
avatar | object/null | Avatarul agentului (vezi mai jos) |
Format câmp avatar:
| Format | Exemplu | Descriere |
|---|---|---|
| După URL | { "url": "https://..." } | Auto-import după URL |
| După internal ID | { "id": 123 } | Fișier deja încărcat |
| Golește | null | Șterge avatarul |
Rețele sociale
| Câmp | Format |
|---|---|
instagram | https://instagram.com/username |
youtube | https://youtube.com/... |
tiktok | https://tiktok.com/@username |
Setări contacte
Determină ce metode de contact sunt afișate pe anunțurile agentului.
| Câmp | Descriere |
|---|---|
contact_phone | Afișează telefonul |
contact_whatsapp | Afișează butonul WhatsApp |
contact_viber | Afișează butonul Viber |
contact_telegram | Afișează butonul Telegram |
{
"settings": {
"contact_phone": true,
"contact_whatsapp": true,
"contact_viber": false,
"contact_telegram": true
}
}
Descriere multilingvă
Indică descrierea în mai multe limbi — sistemul va afișa cea potrivită în funcție de limba utilizatorului.
{
"externalId": "agent-001",
"description": {
"ru": "Опытный агент по недвижимости. Работаю с жилой и коммерческой недвижимостью.",
"en": "Experienced real estate agent. I work with residential and commercial properties.",
"ro": "Agent imobiliar experimentat. Lucrez cu proprietăți rezidențiale și comerciale."
}
}
Actualizare bulk
Actualizează mai mulți agenți într-o singură cerere. Fiecare operație trebuie să conțină câmpul op:
const response = await fetch('https://crm.rentix.md/api/v1/users/bulk', {
method: 'POST',
headers: {
'Authorization': 'ApiKey YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
operations: [
{
op: 'upsert',
externalId: 'agent-001',
name: 'Ion Popescu',
settings: { contact_whatsapp: true }
},
{
op: 'upsert',
externalId: 'agent-002',
name: 'Maria Ionescu',
settings: { contact_telegram: true }
}
]
})
});
const result = await response.json();
console.log(`Actualizați: ${result.summary.succeeded} din ${result.summary.total}`);
curl -X POST https://crm.rentix.md/api/v1/users/bulk \
-H "Authorization: ApiKey YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"operations": [
{
"op": "upsert",
"externalId": "agent-001",
"name": "Ion Popescu",
"settings": { "contact_whatsapp": true }
},
{
"op": "upsert",
"externalId": "agent-002",
"name": "Maria Ionescu",
"settings": { "contact_telegram": true }
}
]
}'
$data = [
'operations' => [
[
'op' => 'upsert',
'externalId' => 'agent-001',
'name' => 'Ion Popescu',
'settings' => ['contact_whatsapp' => true]
],
[
'op' => 'upsert',
'externalId' => 'agent-002',
'name' => 'Maria Ionescu',
'settings' => ['contact_telegram' => true]
]
]
];
$ch = curl_init('https://crm.rentix.md/api/v1/users/bulk');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: ApiKey YOUR_API_KEY',
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
{
"results": [
{ "op": "upsert", "externalId": "agent-001", "id": 1, "success": true },
{ "op": "upsert", "externalId": "agent-002", "id": 2, "success": true }
],
"summary": {
"total": 2,
"succeeded": 2,
"failed": 0
}
}
O eroare într-o operație nu oprește celelalte. Verifică success pentru fiecare rezultat:
{
"results": [
{ "op": "upsert", "externalId": "agent-001", "id": 1, "success": true },
{
"op": "upsert",
"externalId": "agent-002",
"id": null,
"success": false,
"error": {
"statusCode": 400,
"body": {
"error": "Invalid phone number format",
"error_code": "VALIDATION_ERROR"
}
}
}
],
"summary": { "total": 2, "succeeded": 1, "failed": 1 }
}
Încarcă avatarul agentului
Cea mai simplă metodă — transmite URL-ul imaginii direct la actualizarea profilului:
await fetch('https://crm.rentix.md/api/v1/users', {
method: 'PUT',
headers: {
'Authorization': 'ApiKey YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
externalId: 'agent-001',
avatar: { url: 'https://placehold.co/200x200/jpg?text=Avatar' }
})
});
Dacă fișierul este deja încărcat, indică ID-ul său:
{
"externalId": "agent-001",
"avatar": { "id": 123 }
}
Pentru a șterge avatarul, transmite null:
{
"externalId": "agent-001",
"avatar": null
}
Erori frecvente
| Eroare | Cauză | Soluție |
|---|---|---|
User identifier required | Nu a fost transmis id sau externalId | Adaugă unul din identificatori |
Cannot use both id and externalId | Au fost transmiși ambii identificatori | Folosește doar unul |
User not found | Agentul nu există sau nu e în agenția ta | Verifică ID-ul și asigură-te că agentul e invitat |
External ID already linked | Acest external ID e deja la alt agent | Folosește un ID unic |