Operadores
Sincronizar Operadores
Sincronización masiva de operadores desde sistemas externos.
POST /api/operators/sync
Upsert masivo de operadores usando type + externalId como clave de coincidencia compuesta.
Auth: Requerida — permiso SYNC_OPERATORS
Cuerpo de la Solicitud
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
operators | array | Sí | Arreglo de objetos de operador |
Cada objeto de operador:
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
externalId | string | Sí | Identificador externo (parte de la clave de coincidencia) |
type | string | Sí | SALESMAN, ACTIVATOR o CALLCENTER (parte de la clave de coincidencia) |
firstName | string | Sí | Nombre |
lastName | string | Sí | Apellido |
email | string | Sí | Correo electrónico (único por tenant) |
phone | string | No | Número de teléfono |
metadata | object | No | JSON arbitrario |
Ejemplo
curl -X POST https://api.reten.ai/api/operators/sync \
-H "Authorization: Bearer <token>" \
-H "x-tenant-id: <tenant-id>" \
-H "Content-Type: application/json" \
-d '{
"operators": [
{
"externalId": "emp-001",
"type": "SALESMAN",
"firstName": "John",
"lastName": "Doe",
"email": "john@example.com",
"phone": "+56912345678"
}
]
}'const response = await fetch("https://api.reten.ai/api/operators/sync", {
method: "POST",
headers: {
"Authorization": "Bearer <token>",
"x-tenant-id": "<tenant-id>",
"Content-Type": "application/json",
},
body: JSON.stringify({
operators: [
{
externalId: "emp-001",
type: "SALESMAN",
firstName: "John",
lastName: "Doe",
email: "john@example.com",
phone: "+56912345678",
},
],
}),
});
const result = await response.json();import requests
response = requests.post(
"https://api.reten.ai/api/operators/sync",
headers={
"Authorization": "Bearer <token>",
"x-tenant-id": "<tenant-id>",
},
json={
"operators": [
{
"externalId": "emp-001",
"type": "SALESMAN",
"firstName": "John",
"lastName": "Doe",
"email": "john@example.com",
"phone": "+56912345678",
}
]
},
)
result = response.json()
print(f"Created: {result['created']}, Updated: {result['updated']}")Respuesta 201 Created
{
"created": 1,
"updated": 0,
"total": 1
}