Sari la conținut

API și integrări (CRM, Make, n8n)

Conectează-ți CRM-ul sau ERP-ul la Sattotal prin chei API: sincronizează clienți și furnizori automat și în siguranță

API-ul Sattotal permite ca un alt program — CRM-ul tău, ERP-ul tău, Make, n8n, Zapier sau un script propriu — să citească și să creeze clienți și furnizori în organizația ta fără ca cineva să importe un CSV manual. Este controlat prin chei API pe care administratorul le creează în Setări → API, fiecare cu propriul nume și cu permisiuni pe resursă, și care pot fi revocate oricând. Aici găsești ce face, cum creezi cheia, cum apelezi API-ul și cum configurezi pas cu pas o sincronizare cu Make.

Conectează-ți CRM-ul și automatizările

Orice instrument capabil să facă o cerere HTTP (Make, n8n, Zapier, propriul tău CRM sau ERP) poate citi, crea și actualiza clienți și furnizori.

Chei cu nume și permisiuni

O cheie pentru fiecare integrare și, în interiorul fiecărei chei, o permisiune pe resursă: poți da citire pe furnizori fără să dai scriere pe clienți. Până la 10 chei active per organizație.

Sincronizare incrementală

Cu parametrul actualizadoDesde se aduc doar clienții sau furnizorii care s-au schimbat de la ultima rulare: ideal pentru un scenariu care rulează la fiecare câteva minute.

Sigură prin concepție

Cheia este afișată o singură dată și este salvată criptată, ireversibil. Fiecare cheie accesează doar datele organizației sale și poate fi revocată pe loc.

Cine o poate folosi

Cheile sunt create și revocate de administratorii organizației. API-ul este inclus în planurile cu plată (Basic, Pro și Enterprise) și în perioada de probă; pe planul gratuit, ecranul afișează un lacăt cu opțiunea de a schimba planul. O cheie acționează întotdeauna în numele organizației, nu al unei persoane: nu moștenește permisiunile niciunui tehnician și nu apare ca utilizator în echipă.

Cum creezi o cheie

1

Intră în Setări → API

Din meniul lateral, Setări, cardul «API». Vei vedea lista cheilor organizației tale (active și revocate) și un card «Cum te conectezi» cu URL-ul de bază și un exemplu.

2

Apasă «Cheie nouă»

Dă-i un nume care să identifice integrarea («CRM-ul magazinului», «Make», «n8n»). Astfel, dacă va trebui vreodată să o revoci, vei ști care este.

3

Alege permisiunile

Bifează resursele de care are nevoie integrarea — Clienți, Furnizori sau amândouă — și pentru fiecare alege «Doar citire» (consultare) sau «Citire și scriere» (consultare, creare, actualizare și arhivare). O resursă nebifată este o resursă la care cheia nu ajunge. Alege minimul de care are nevoie.

4

Copiază cheia și salvează-o în instrumentul tău

Cheia completă (începe cu sat_) este afișată o singură dată. Copiaz-o cu butonul și lipește-o în Make, n8n sau în CRM-ul tău. Dacă o pierzi, nu poate fi recuperată: o revoci și creezi alta.

Setări → API: lista cheilor și o cheie abia creată

CRM Make

sat_Ab3k…x9Zq

Revocă

n8n

sat_Qm7t…p2Lk

Revocată

Cheie creată

sat_Ab3k9Zq2Xv8Lp1Mn4Rt7Wy0Cd5Fg6Hj3Kl8Sx9ZqCopiază

Aceasta este singura dată când vei vedea cheia completă. Dacă o pierzi, revocă-o și creează alta.

Permisiunile unei chei

Doar citire

Poate lista și consulta acea resursă. Orice încercare de a crea, modifica sau arhiva primește o eroare 403 cu codul PERMISO_DENEGADO și permisiunea care îi lipsește.

Citire și scriere

Pe lângă consultare, poate crea, actualiza și arhiva în acea resursă. Este permisiunea de care are nevoie o sincronizare bidirecțională.

Permisiunile sunt per resursă

Permisiunile sunt pe resursă, iar asta s-a și văzut: la adăugarea furnizorilor, cheile care existau — toate pentru clienți — NU au primit acces la ei. A trebuit bifat. La fel va fi cu orice resursă adăugată după aceea: o integrare nu vede niciodată mai mult decât i-ai acordat.

Cum te autentifici

Trimite cheia la fiecare cerere, de la server la server, în antetul Authorization: Bearer sat_…. Dacă instrumentul tău nu permite antete de autorizare, este acceptată și în antetul x-api-key. URL-ul de bază este adresa contului tău Sattotal urmată de /api/v1 (îl ai gata de copiat în ecranul Setări → API).

GET /api/v1/me
Authorization: Bearer sat_Ab3k9…x9Zq

API-ul nu are CORS în mod intenționat: este gândit pentru servere și instrumente de automatizare, nu pentru pagini web sau aplicații care rulează în browserul clienților tăi. O cheie nu trebuie să ajungă niciodată într-un browser.

Ce poți face (endpoint-uri)

Toate răspunsurile au forma success + data (și pagination la listări). Un client îl poți cere după id sau după cod (CLI-0007); un furnizor, doar după id.

MetodăRutăCe facePermisiune
GET/meReturnează organizația ta și cheia cu care apelezi. Folosește-l pentru a «testa conexiunea» în Make sau n8n.Oricare
GET/clientesListă paginată de clienți. Filtre: busqueda, tipo, activo și actualizadoDesde. Fără activo îi returnează și pe cei arhivați.Citire
POST/clientesCreează un client cu aceleași reguli ca formularul (cod fiscal în funcție de țara ta, fără duplicate de cod fiscal sau de e-mail).Scriere
GET/clientes/{id}Returnează un client după id sau după cod.Citire
PATCH/clientes/{id}Actualizează doar câmpurile trimise. PUT este acceptat ca sinonim.Scriere
DELETE/clientes/{id}Arhivează clientul (activo = false). Nu șterge nimic și poate fi repetat fără eroare.Scriere
GET/proveedoresListă paginată de furnizori. Filtre: busqueda, activo, tipoProveedor, codigo și actualizadoDesde. Fără activo îi returnează și pe cei arhivați.Citire
POST/proveedoresCreează un furnizor. Doar numele este obligatoriu. Dacă există deja unul cu același cod fiscal sau cu același nume, răspunde 409 cu id-ul celui existent.Scriere
GET/proveedores/{id}Returnează un furnizor după id-ul său. Aici codul NU funcționează: vezi avertismentul de mai jos.Citire
PATCH/proveedores/{id}Actualizează doar câmpurile trimise. Lista de contacte este înlocuită în întregime. PUT este acceptat ca sinonim.Scriere
DELETE/proveedores/{id}Arhivează furnizorul (activo = false). Nu șterge nimic și poate fi repetat fără eroare.Scriere
GET/reparacionesListă paginată de fișe, de la cea mai recentă intrare la cea mai veche. Filtre: cliente, estado, entradaDesde, entradaHasta și actualizadoDesde.Citire
GET/reparaciones/{id}Returnează o fișă după id sau după numărul fișei.Citire
GET/clientes/{id}/reparacionesFișele unui client (după id-ul sau codul lui), cu aceleași filtre.Citire
GET/clientes/{id}/resumenRezumatul activității clientului: câte fișe are (în total, deschise și pe stări), ce sume i s-au propus în devize și când a venit ultima dată.Citire

Câmpurile clientului

Câmpurile sunt aceleași ca în fișa clientului: nombre și tipo (particular sau empresa) sunt obligatorii; nif_cif, apellidos, razonSocial, email, telefono, telefonoSecundario, direccion (calle, numero, piso, codigoPostal, localidad, provincia, pais) și notas sunt opționale. Codul fiscal se salvează cu majuscule, iar e-mailul cu minuscule. În răspuns toate cheile sunt mereu prezente, cu null când nu există valoare, ca maparea câmpurilor din instrumentul tău să nu se strice. Atenție la nume: nombre este prenumele (sau denumirea comercială, pentru o firmă), iar numele de familie se trece separat, în apellidos, la plural.

Câmpuri pe care API-ul nu le recunoaște

Dacă corpul conține o cheie care nu există (de exemplu firstName în loc de nombre, sau apellido la singular în loc de apellidos), cererea nu este respinsă, dar valoarea respectivă nu se salvează. Ca să nu treacă neobservat, răspunsul la crearea și editarea unui client include avisos.camposIgnorados cu lista acestor chei; cele din adresă apar cu calea lor, de exemplu direccion.ciudad. Dacă îl vedeți, verificați maparea câmpurilor din integrarea dumneavoastră. Câmpurile pe care le returnează chiar API-ul (id, codigo, createdAt…) nu generează niciodată avertismentul, deci puteți citi un client, îl puteți modifica și trimite înapoi complet.

POST /api/v1/clientes
{ "firstName": "Daniel", "nombre": "Florea", "tipo": "particular" }

201 Created
{
  "success": true,
  "data": { "nombre": "Florea", "apellidos": null, … },
  "avisos": { "camposIgnorados": ["firstName"] }
}

Exemplu: crearea unui client

Cerere

POST /api/v1/clientes
Authorization: Bearer sat_Ab3k9…x9Zq
Content-Type: application/json

{
  "nombre": "Daniel",
  "apellidos": "Florea",
  "tipo": "empresa",
  "razonSocial": "Assista Tech SRL",
  "nif_cif": "RO12345678",
  "codigoPersonalizado": "801",
  "email": "daniel@example.com",
  "telefono": "+40 700 000 000",
  "direccion": { "localidad": "București", "pais": "RO" }
}

Răspuns (201)

{
  "success": true,
  "data": {
    "id": "64b0…0001",
    "codigo": "CLI-0042",
    "codigoPersonalizado": "801",
    "codigoVisible": "801",
    "tipo": "empresa",
    "nombre": "Daniel",
    "apellidos": "Florea",
    "razonSocial": "Assista Tech SRL",
    "nif_cif": "RO12345678",
    "email": "daniel@example.com",
    "activo": true,
    "createdAt": "2026-09-18T10:00:00.000Z",
    "updatedAt": "2026-09-18T10:00:00.000Z"
  }
}

Furnizori

Pe lângă clienți, API-ul expune și catalogul de furnizori: aceleași cinci endpointuri, aceleași coduri de eroare și aceeași sincronizare incrementală. Este doar catalogul: achizițiile și facturile de furnizor rămân acolo unde sunt deja, în ERP-ul tău sau în Sattotal.

Câmpurile furnizorului

Doar nombre este obligatoriu. Opționale: codigo, cif, email, telefono, telefonoSecundario, web, direccion (pe un singur rând, nu este un obiect ca la clienți), ciudad, provincia, codigoPostal, pais, contactos, tipoProveedor (general, producto, servicio, logistica sau otro), formaPago, plazoPago (în zile; 0 înseamnă plata pe loc), cuentaCliente și notas. Fiecare contact are nombre —obligatoriu—, cargo, telefono, email și notas; contactele nu au identificator propriu.

Cum se actualizează contactele

Lista pe care o trimiți ÎNLOCUIEȘTE lista existentă. Dacă trimiți o listă goală, se șterg toate contactele; dacă nu trimiți cheia (sau trimiți null), rămân așa cum erau. Tocmai asta îți permite să citești un furnizor, să-i schimbi un câmp și să-l trimiți înapoi întreg, fără efecte ciudate.

Cerere

POST /api/v1/proveedores
Authorization: Bearer sat_Ab3k9…x9Zq
Content-Type: application/json

{
  "nombre": "Distribuciones Norte",
  "cif": "B12345678",
  "tipoProveedor": "producto",
  "plazoPago": 30,
  "cuentaCliente": "C-4471",
  "contactos": [
    { "nombre": "Ana Ruiz", "cargo": "Ventas", "email": "ana@norte.es" }
  ]
}

Răspuns (201)

{
  "success": true,
  "data": {
    "id": "64b0…0009",
    "codigo": "PROV-004",
    "nombre": "Distribuciones Norte",
    "cif": "B12345678",
    "tipoProveedor": "producto",
    "plazoPago": 30,
    "cuentaCliente": "C-4471",
    "contactos": [
      { "nombre": "Ana Ruiz", "cargo": "Ventas",
        "telefono": null, "email": "ana@norte.es", "notas": null }
    ],
    "excluidoRecargoEquivalencia": false,
    "activo": true,
    "createdAt": "2026-09-19T08:00:00.000Z",
    "updatedAt": "2026-09-19T08:00:00.000Z"
  }
}

Datele bancare nu ies prin API

IBAN-ul și conturile bancare ale furnizorului nu sunt nici returnate, nici acceptate, în mod intenționat: dacă o cheie s-ar scurge, nu ar folosi la frauda cu schimbarea contului, cea mai frecventă în relația cu furnizorii. În schimb se returnează cuentaCliente, adică numărul TĂU de client la acel furnizor, cel cu care un ERP își reconciliază achizițiile.

Suplimentul de echivalență este doar de citire

Câmpul excluidoRecargoEquivalencia este returnat și îl poți trimite înapoi cu aceeași valoare (ca să poți retrimite obiectul întreg), dar modificarea lui prin API răspunde 400: el decide dacă achizițiilor de la acel furnizor li se aplică suplimentul, adică schimbă baza impozabilă a facturilor tale de achiziție. Se modifică din fișa furnizorului. În afara Spaniei nu are niciun efect.

Codul de furnizor nu îl localizează

Spre deosebire de cel al clientului, codul furnizorului (PROV-004) nu este unic: se poate repeta chiar și în interiorul atelierului tău. De aceea GET /proveedores/{id} acceptă doar id-ul. Dacă ERP-ul tău păstrează numai codul, folosește filtrul listării: GET /proveedores?codigo=PROV-004 îi returnează pe toți cei care se potrivesc și alegi tu.

Fișe de reparație (doar citire)

API-ul permite și consultarea fișelor de reparație: numărul fișei, starea, datele, aparatul (tip, marcă, model, număr de serie, IMEI) și devizul. Este doar citire: fișele se creează și își schimbă starea în continuare din Sattotal, unde se semnează procesul-verbal de predare și ridicarea. Cheia are nevoie de resursa Reparații bifată; cheile pentru clienți sau furnizori nu au acces la ele.

Câmpurile fișei

Fiecare fișă conține numeroFicha, estado, prioridad, ubicacion, averiaDeclarada, diagnostico, datele ciclului (intrare, început și sfârșit de diagnostic și de reparație, anunțarea clientului, ridicare și ultimoCambioEstado, momentul în care a trecut în starea actuală), un rezumat al clientului (id, codigo, codigoVisible, nombre, apellidos, razonSocial), aparatul (id, codigo, tipo, marca, modelo, numeroSerie, imei, color), devizul (numero, total, estado, fechaEnvio și fechaRespuesta, sau null dacă nu există), tehnicianul alocat (doar numele lui) și plazoEntregaEstimado, termenul comunicat clientului pe bonul de primire. Notele interne, semnăturile, fotografiile, documentele și parolele aparatului nu sunt returnate niciodată.

Cerere

GET /api/v1/clientes/CLI-0042/reparaciones?estado=reparado
Authorization: Bearer sat_Ab3k9…x9Zq

Răspuns (201)

{
  "success": true,
  "data": [{
    "id": "64b0…0042",
    "numeroFicha": "ORD-2026-0042",
    "estado": "reparado",
    "prioridad": "normal",
    "averiaDeclarada": "No carga",
    "diagnostico": "Conector de carga dañado",
    "fechas": {
      "entrada": "2026-09-20T09:00:00.000Z",
      "finReparacion": "2026-09-22T17:30:00.000Z",
      "entrega": null
    },
    "cliente": { "id": "64b0…0001", "codigoVisible": "801", "nombre": "Daniel" },
    "dispositivo": {
      "tipo": "movil", "marca": "Apple", "modelo": "iPhone 13",
      "numeroSerie": "F2LXX0000", "imei": "356789012345678"
    },
    "presupuesto": { "numero": "PRES-2026-0010", "total": 89.9, "estado": "aprobado" },
    "tecnico": { "nombre": "Andrei Popescu" },
    "plazoEntregaEstimado": "3 días laborables"
  }],
  "pagination": { "total": 1, "page": 1, "limit": 25, "totalPages": 1 }
}

Găsește clientul după numărul de la care sună

Dacă CRM-ul sau centrala ta telefonică deschide fișa clientului când intră un apel, folosește GET /clientes?telefono=<număr>. Caută în telefonul principal și în cel secundar și nu contează cum e scris: spații, cratime, prefixul internațional al țării tale (+40 sau 0040) și 0-ul de la început. Astfel, «0722 123 456» găsește un client salvat ca «+40 722-123-456». Sunt necesare cel puțin 6 cifre.

Rezumatul clientului pentru CRM-ul tău

GET /clientes/{id}/resumen returnează într-un singur apel ce arată de obicei un CRM în fișa clientului: totalReparaciones, reparacionesAbiertas (aparatul e încă în service), porEstado, totalPresupuestado și totalPresupuestosAprobados (în moneda service-ului, care vine în moneda), primeraReparacion, ultimaReparacion și ultimaActividad (ultima modificare în oricare dintre fișele lui). Are nevoie de resursa Reparații, la fel ca fișele.

Cerere

GET /api/v1/clientes?telefono=0722 123 456
→ { "data": [{ "id": "64b0…0001", "codigoVisible": "801", "telefono": "+40 722 123 456", … }] }

GET /api/v1/clientes/801/resumen
{
  "success": true,
  "data": {
    "cliente": { "id": "64b0…0001", "codigoVisible": "801" },
    "moneda": "RON",
    "totalReparaciones": 7,
    "reparacionesAbiertas": 1,
    "porEstado": { "entregado": 6, "en_reparacion": 1 },
    "totalPresupuestosAprobados": 1240.5,
    "ultimaReparacion": "2026-10-02T09:15:00.000Z",
    "ultimaActividad": "2026-10-06T16:40:00.000Z",
    …
  }
}

Sincronizează doar ce s-a schimbat

Nu e nevoie să aduci tot la fiecare rulare. Salvează în instrumentul tău data și ora ultimei rulări și cere doar clienții sau furnizorii modificați de atunci, cu parametrul actualizadoDesde. Răspunsul vine ordonat crescător după data modificării, cu un criteriu de departajare stabil, așa că îl poți pagina fără să sari peste înregistrări. Apar și cei arhivați (cu activo = false), ca CRM-ul tău să poată reflecta arhivarea.

GET /api/v1/clientes?actualizadoDesde=2026-09-18T10:00:00Z&limit=100&page=1
Authorization: Bearer sat_Ab3k9…x9Zq
1

Prima rulare

Parcurge GET /clientes cu limit=100 și page=1, 2, 3… până se epuizează totalPages. Salvează ora de început.

2

Rulările următoare

Cere GET /clientes?actualizadoDesde=<ora salvată> și procesează doar ce primești. Salvează din nou ora de început a acestei rulări.

3

Leagă, nu duplica

Salvează id-ul din Sattotal lângă înregistrarea din CRM-ul tău. Dacă la creare primești un 409 DUPLICADO, răspunsul conține existenteId: leagă-l pe acela în loc să creezi altul.

Paginare și căutare

Listările acceptă page (de la 1) și limit (25 implicit, maximum 100; dacă ceri mai mult, se reduce la 100). Câmpul busqueda caută în prenume, nume, denumirea firmei, cod fiscal, e-mail, cod și telefon.

Coduri de eroare și ce să faci

Toate răspunsurile de eroare conțin success: false, un text explicativ și un code stabil, gândit pentru a decide programatic. Acestea sunt cele pe care le poți primi:

NO_AUTORIZADO

Cheia lipsește, are un format care nu este al nostru sau nu există. Verifică antetul Authorization.

CLAVE_REVOCADA

Cheia era validă, dar un administrator a revocat-o. Creează una nouă în Setări → API și actualizeaz-o în instrumentul tău.

PLAN_REQUERIDO

Organizația este pe planul gratuit. API-ul funcționează din nou după trecerea la un plan cu plată.

PERMISO_DENEGADO

Cheia nu are permisiunea necesară pentru acea operațiune. Răspunsul indică în ambitoRequerido care lipsește: creează o cheie cu acea permisiune.

NO_ENCONTRADO

Nu există niciun client și niciun furnizor cu acel id în organizația ta. Cei ai altor organizații nu sunt niciodată vizibili și nu se face diferența între «nu există» și «nu este al tău».

DUPLICADO

Există deja o înregistrare cu acel dat: cod fiscal sau e-mail la clienți; cod fiscal, nume sau cod la furnizori. Răspunsul conține campo și existenteId ca să o poți lega în loc să creezi alta.

VALIDACION

Un câmp nu trece validarea (sau JSON-ul este malformat). În details găsești câmpul și motivul, exact ca în formular.

IDENTIFICADOR_FISCAL_REQUERIDO

Acel client are nevoie de cod fiscal: în țara ta este obligatoriu pentru tipul de client trimis (de exemplu, întotdeauna pentru firme).

RATE_LIMIT

Prea multe cereri. Așteaptă numărul de secunde indicat în antetul Retry-After și reîncearcă.

API_DESACTIVADA

API-ul este dezactivat temporar pentru mentenanță. Reîncearcă mai târziu.

Limite

120 de cereri pe minut per cheie (mai mult decât suficient pentru o sincronizare periodică; oprește o buclă accidentală). 10 chei active per organizație. Listările returnează cel mult 100 de înregistrări pe pagină. Dacă organizația este pe planul gratuit și cota lunară e epuizată, crearea de clienți este blocată, la fel ca în aplicație.

Pas cu pas: sincronizarea clienților cu Make

Un scenariu tipic: la fiecare 15 minute, aduci în CRM-ul tău clienții și furnizorii noi sau modificați în Sattotal. În n8n echivalentul se face cu nodul HTTP Request și un nod Schedule.

1

Creează cheia în Sattotal

Setări → API → Cheie nouă, permisiunea «Doar citire» dacă vei doar citi, «Citire și scriere» dacă vei crea și clienți din CRM. Copiază cheia.

2

Modulul HTTP «Make a request»

URL: URL-ul tău de bază + /clientes. Metoda GET. Antetul Authorization cu valoarea Bearer și cheia ta. Bifează «Parse response» ca să lucrezi cu JSON-ul.

3

Testează conexiunea

Înainte de orice, rulează o dată o cerere la /me: dacă returnează organizația ta și numele cheii, autentificarea este în regulă.

4

Adaugă filtrul incremental

Salvează data ultimei rulări într-un Data store sau într-o variabilă și trimite-o ca actualizadoDesde în URL. Programează scenariul la fiecare 15 minute.

5

Mapează câmpurile către CRM-ul tău

Iterează data[] și mapează id, codigo, nombre, apellidos, email, telefono, nif_cif și direccion. Salvează id-ul din Sattotal în CRM-ul tău ca să actualizezi în loc să dublezi.

Pentru a crea clienți din CRM, adaugă alt modul HTTP cu metoda POST către /clientes și corpul JSON al clientului. Dacă primești 409, folosește existenteId pentru a lega.

Bune practici de securitate

O cheie pentru fiecare integrare

Astfel poți revoca una fără să le strici pe celelalte, iar în listă vezi când a fost folosită ultima dată fiecare.

Niciodată în browser sau într-un repository public

Păstrează-o în seiful de credențiale al instrumentului tău (conexiuni Make, credențiale n8n, variabile de mediu). Dacă ajunge într-un repository sau pe un site, consideră-o compromisă.

Dacă este compromisă, revocă-o și creează alta

Revocarea este imediată: cheia veche începe să primească 401 CLAVE_REVOCADA. Actualizează cheia nouă în instrumentul tău și gata.

Specificația API

Referința tehnică completă (rute, parametri, scheme și coduri de eroare) este publicată într-un format deschis la /api/v1/openapi.json, fără să ai nevoie de cheie. Implicit este în spaniolă; adaugă ?lang= cu limba ta ca s-o ai tradusă (de exemplu /api/v1/openapi.json?lang=ro sau ?lang=en). O poți importa în Postman, Insomnia, Make sau n8n ca să ai toate apelurile pregătite.

Întrebări frecvente

Am pierdut cheia, o pot vedea din nou?

Nu. Este afișată doar la creare, apoi este salvată ireversibil. Revocă-o în Setări → API și creează alta.

Există webhook-uri prin care Sattotal să anunțe CRM-ul meu când se schimbă ceva?

Încă nu. Modul recomandat este să interoghezi periodic cu parametrul actualizadoDesde, care returnează doar ce s-a schimbat.

Ce date expune API-ul?

Clienți și furnizori: listare, creare, consultare, actualizare și arhivare. Permisiunile sunt pe resursă, așa că o cheie creată înainte să existe furnizorii nu ajunge la ei până când un administrator nu i-o bifează. În plus, fișele de reparație doar în citire (stare, date, aparat și deviz), cu permisiune proprie.

Pot șterge un client prin API?

Nu, doar îl poți arhiva (activo = false), la fel ca în aplicație. Este valabil atât pentru clienți, cât și pentru furnizori. O înregistrare arhivată continuă să apară în sincronizare, ca CRM-ul tău să o reflecte.

API-ul este inclus în planul gratuit?

Nu. Este inclus în Basic, Pro și Enterprise și în perioada de probă. Pe planul gratuit poți în continuare să vezi și să revoci cheile pe care le-ai creat.

Ajunge doar numele de familie al clientului. De ce nu se salvează prenumele?

Aproape întotdeauna e de vină maparea câmpurilor: prenumele merge în nombre, iar numele de familie în apellidos. Dacă instrumentul dumneavoastră trimite prenumele sub altă cheie (firstName, name, apellido…), API-ul o ignoră și vă anunță în avisos.camposIgnorados din răspuns. Corectați maparea și retrimiteți clientul cu un PATCH.

Pot găsi clientul după numărul care mă sună?

Da. Apelează GET /api/v1/clientes?telefono= cu numărul exact cum îl primești: nu contează dacă are prefix internațional, spații sau cratime, iar căutarea include și telefonul secundar. Cu id-ul lui poți cere apoi fișele (/clientes/{id}/reparaciones) și rezumatul (/clientes/{id}/resumen).

Vrei să încerci chiar tu?

Încearcă Sattotal gratuit cu date exemplu, fără card de credit.