Aller au contenu

API et intégrations (CRM, Make, n8n)

Connectez votre CRM ou votre ERP à Sattotal grâce aux clés API : synchronisez clients et fournisseurs automatiquement et en toute sécurité

L'API de Sattotal permet à un autre programme — votre CRM, votre ERP, Make, n8n, Zapier ou un script maison — de lire et de créer des clients et des fournisseurs dans votre organisation sans que personne n'ait à importer un CSV à la main. Elle est contrôlée par des clés API que l'administrateur crée dans Configuration → API, chacune avec son propre nom et des permissions par ressource, et qui peuvent être révoquées à tout moment. Voici ce qu'elle fait, comment créer une clé, comment appeler l'API et comment mettre en place une synchronisation avec Make, pas à pas.

Connectez votre CRM et vos automatisations

Tout outil capable d'envoyer une requête HTTP (Make, n8n, Zapier, votre propre CRM ou ERP) peut lire, créer et mettre à jour des clients et des fournisseurs.

Des clés nommées, avec des permissions

Une clé par intégration et, dans chaque clé, une permission par ressource : vous pouvez accorder la lecture des fournisseurs sans accorder l'écriture des clients. Jusqu'à 10 clés actives par organisation.

Synchronisation incrémentale

Avec le paramètre actualizadoDesde, vous ne récupérez que les clients ou les fournisseurs qui ont changé depuis le dernier passage : idéal pour un scénario qui tourne toutes les quelques minutes.

Sécurisée par conception

La clé n'est affichée qu'une seule fois et elle est stockée chiffrée de façon irréversible. Chaque clé n'accède qu'aux données de son organisation et se révoque instantanément.

Qui peut l'utiliser

Les clés sont créées et révoquées par les administrateurs de l'organisation. L'API est incluse dans les forfaits payants (Basic, Pro et Enterprise) et pendant la période d'essai ; avec le forfait gratuit, l'écran affiche un cadenas avec la possibilité de changer de forfait. Une clé agit toujours au nom de l'organisation, pas d'une personne : elle n'hérite des permissions d'aucun technicien et n'apparaît pas comme utilisateur dans l'équipe.

Comment créer une clé

1

Ouvrez Configuration → API

Depuis le menu latéral, Configuration, carte « API ». Vous verrez la liste des clés de votre organisation (actives et révoquées) et une carte « Comment se connecter » avec l'URL de base et un exemple.

2

Cliquez sur « Nouvelle clé »

Donnez-lui un nom qui identifie l'intégration (« CRM de la boutique », « Make », « n8n »). Ainsi, si vous devez un jour la révoquer, vous saurez laquelle c'est.

3

Choisissez les permissions

Cochez les ressources dont l'intégration a besoin — Clients, Fournisseurs ou les deux — et, pour chacune, choisissez « Lecture seule » (consulter) ou « Lecture et écriture » (consulter, créer, mettre à jour et archiver). Une ressource non cochée est une ressource que la clé n'atteint pas. Choisissez le minimum dont elle a besoin.

4

Copiez la clé et enregistrez-la dans votre outil

La clé complète (elle commence par sat_) n'est affichée qu'une seule fois. Copiez-la avec le bouton et collez-la dans Make, n8n ou votre CRM. Si vous la perdez, impossible de la récupérer : on la révoque et on en crée une autre.

Configuration → API : liste des clés et clé qui vient d'être créée

CRM Make

sat_Ab3k…x9Zq

Révoquer

n8n

sat_Qm7t…p2Lk

Révoquée

Clé créée

sat_Ab3k9Zq2Xv8Lp1Mn4Rt7Wy0Cd5Fg6Hj3Kl8Sx9ZqCopier

C'est la seule fois où vous verrez la clé complète. Si vous la perdez, révoquez-la et créez-en une autre.

Permissions d'une clé

Lecture seule

Peut lister et consulter cette ressource. Toute tentative de création, de modification ou d'archivage reçoit une erreur 403 avec le code PERMISO_DENEGADO et la permission manquante.

Lecture et écriture

En plus de consulter, elle peut créer, mettre à jour et archiver dans cette ressource. C'est la permission dont a besoin une synchronisation bidirectionnelle.

Les permissions sont définies par ressource

Les permissions sont définies par ressource, et cela s'est déjà vu : lors de l'ajout des fournisseurs, les clés existantes — toutes pour les clients — n'ont PAS obtenu l'accès. Il a fallu le cocher. Il en ira de même pour toute ressource ajoutée par la suite : une intégration ne voit jamais plus que ce que vous lui avez accordé.

Comment s'authentifier

Envoyez la clé à chaque requête, de serveur à serveur, dans l'en-tête Authorization: Bearer sat_…. Si votre outil n'autorise pas les en-têtes d'autorisation, elle est aussi acceptée dans l'en-tête x-api-key. L'URL de base est celle de votre Sattotal suivie de /api/v1 (elle est prête à copier sur l'écran Configuration → API).

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

L'API n'a volontairement pas de CORS : elle est conçue pour des serveurs et des outils d'automatisation, pas pour des pages web ou des applications qui s'exécutent dans le navigateur de vos clients. Une clé ne doit jamais atteindre un navigateur.

Ce que l'on peut faire (endpoints)

Toutes les réponses ont la forme success + data (et pagination pour les listes). Un client peut être demandé par son id ou par son code (CLI-0007) ; un fournisseur, uniquement par son id.

MéthodeCheminCe qu'il faitPermission
GET/meRenvoie votre organisation et la clé avec laquelle vous appelez. Utilisez-le pour « tester la connexion » dans Make ou n8n.N'importe laquelle
GET/clientesListe paginée des clients. Filtres : busqueda, tipo, activo et actualizadoDesde. Sans activo, elle renvoie aussi les clients archivés.Lecture
POST/clientesCrée un client avec les mêmes règles que le formulaire (identifiant fiscal selon votre pays, pas de doublon d'identifiant fiscal ni d'email).Écriture
GET/clientes/{id}Renvoie un client par id ou par code.Lecture
PATCH/clientes/{id}Met à jour uniquement les champs envoyés. PUT est accepté comme synonyme.Écriture
DELETE/clientes/{id}Archive le client (activo = false). Rien n'est supprimé et l'appel peut être répété sans erreur.Écriture
GET/proveedoresListe paginée des fournisseurs. Filtres : busqueda, activo, tipoProveedor, codigo et actualizadoDesde. Sans activo, elle renvoie aussi les fournisseurs archivés.Lecture
POST/proveedoresCrée un fournisseur. Seul le nom est obligatoire. S'il en existe déjà un avec le même identifiant fiscal ou le même nom, la réponse est un 409 avec l'id de celui qui existe.Écriture
GET/proveedores/{id}Renvoie un fournisseur par son id. Ici, le code NE fonctionne PAS : voyez l'avertissement plus bas.Lecture
PATCH/proveedores/{id}Met à jour uniquement les champs envoyés. La liste de contacts est remplacée en entier. PUT est accepté comme synonyme.Écriture
DELETE/proveedores/{id}Archive le fournisseur (activo = false). Rien n'est supprimé et l'appel peut être répété sans erreur.Écriture
GET/reparacionesListe paginée des fiches, de l’entrée la plus récente à la plus ancienne. Filtres : cliente, estado, entradaDesde, entradaHasta et actualizadoDesde.Lecture
GET/reparaciones/{id}Renvoie une fiche par son id ou son numéro de fiche.Lecture
GET/clientes/{id}/reparacionesLes fiches d’un client (par son id ou son code), avec les mêmes filtres.Lecture
GET/clientes/{id}/resumenRésumé de l'activité du client : combien de fiches il a (au total, ouvertes et par statut), le montant total de ses devis et la date de sa dernière visite.Lecture

Champs du client

Les champs sont les mêmes que dans la fiche client : nombre et tipo (particular ou empresa) sont obligatoires ; nif_cif, apellidos, razonSocial, email, telefono, telefonoSecundario, direccion (calle, numero, piso, codigoPostal, localidad, provincia, pais) et notas sont facultatifs. L'identifiant fiscal est enregistré en majuscules et l'email en minuscules. Dans la réponse, toutes les clés sont toujours présentes, avec null quand il n'y a pas de valeur, pour que le mappage des champs dans votre outil ne casse jamais. Attention au nom : nombre est le prénom (ou le nom commercial pour une entreprise) et le nom de famille va à part, dans apellidos, au pluriel.

Champs que l'API ne reconnaît pas

Si le corps contient une clé qui n'existe pas (par exemple firstName au lieu de nombre, ou apellido au singulier au lieu de apellidos), la requête n'est pas refusée, mais cette donnée n'est pas enregistrée. Pour que cela ne passe pas inaperçu, la réponse à la création et à la modification d'un client contient avisos.camposIgnorados avec la liste de ces clés ; celles de l'adresse portent leur chemin, comme direccion.ciudad. Si vous la voyez, vérifiez le mappage des champs de votre intégration. Les champs renvoyés par l'API elle-même (id, codigo, createdAt…) ne déclenchent jamais d'avertissement : vous pouvez lire un client, le modifier et le renvoyer en entier.

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

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

Exemple : créer un client

Requête

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éponse (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"
  }
}

Fournisseurs

En plus des clients, l'API expose le catalogue des fournisseurs : les mêmes cinq endpoints, les mêmes codes d'erreur et la même synchronisation incrémentale. Il s'agit seulement du catalogue : les achats et les factures fournisseur restent là où ils sont déjà, dans votre ERP ou dans Sattotal.

Champs du fournisseur

Seul nombre est obligatoire. Facultatifs : codigo, cif, email, telefono, telefonoSecundario, web, direccion (sur une seule ligne, ce n'est pas un objet comme pour les clients), ciudad, provincia, codigoPostal, pais, contactos, tipoProveedor (general, producto, servicio, logistica ou otro), formaPago, plazoPago (en jours ; 0 signifie au comptant), cuentaCliente et notas. Chaque contact comporte nombre —obligatoire—, cargo, telefono, email et notas ; les contacts n'ont pas d'identifiant propre.

Comment les contacts sont mis à jour

La liste que vous envoyez REMPLACE celle qui était là. Une liste vide supprime tous les contacts ; si vous n'envoyez pas la clé (ou si vous envoyez null), ils restent tels quels. C'est ce qui vous permet de lire un fournisseur, d'en modifier un champ et de le renvoyer en entier sans effet de bord.

Requête

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éponse (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"
  }
}

Les coordonnées bancaires ne sortent pas par l'API

L'IBAN et les comptes bancaires du fournisseur ne sont ni renvoyés ni acceptés, et c'est volontaire : si une clé fuitait, elle ne servirait à rien pour la fraude au changement de compte, la plus courante avec les fournisseurs. En revanche, cuentaCliente est bien renvoyé : c'est VOTRE numéro de client chez ce fournisseur, celui avec lequel un ERP rapproche ses achats.

La majoration d'équivalence est en lecture seule

Le champ excluidoRecargoEquivalencia est renvoyé et vous pouvez le réémettre avec la même valeur (afin de pouvoir renvoyer l'objet entier), mais le modifier par l'API donne une erreur 400 : il détermine si la majoration s'applique à vos achats chez ce fournisseur, autrement dit il déplace la base imposable de vos factures d'achat. Il se change depuis la fiche du fournisseur. Hors d'Espagne, il n'a aucun effet.

Le code fournisseur ne permet pas de le localiser

Contrairement au code client, le code fournisseur (PROV-004) n'est pas unique : il peut se répéter même à l'intérieur de votre propre atelier. C'est pourquoi GET /proveedores/{id} n'accepte que l'id. Si votre ERP ne conserve que le code, utilisez le filtre de la liste : GET /proveedores?codigo=PROV-004 renvoie tout ce qui correspond, et c'est vous qui tranchez.

Fiches de réparation (lecture seule)

L’API permet aussi de consulter les fiches de réparation : numéro de fiche, statut, dates, l’appareil (type, marque, modèle, numéro de série, IMEI) et le devis. C’est en lecture seule : les fiches se créent et changent de statut dans Sattotal, là où se signent le bon de dépôt et la restitution. La clé doit avoir la ressource Réparations cochée ; les clés clients ou fournisseurs n’y accèdent pas.

Champs de la fiche

Chaque fiche contient numeroFicha, estado, prioridad, ubicacion, averiaDeclarada, diagnostico, les dates du cycle (entrée, début et fin du diagnostic et de la réparation, avis au client, restitution et ultimoCambioEstado, le moment où elle est passée à son statut actuel), un résumé du client (id, codigo, codigoVisible, nombre, apellidos, razonSocial), l’appareil (id, codigo, tipo, marca, modelo, numeroSerie, imei, color), le devis (numero, total, estado, fechaEnvio et fechaRespuesta, ou null s’il n’y en a pas), le technicien assigné (son nom uniquement) et plazoEntregaEstimado, le délai indiqué au client sur le bon de dépôt. Les notes internes, signatures, photos, documents et mots de passe de l’appareil ne sortent jamais.

Requête

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

Réponse (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 }
}

Retrouver le client à partir du numéro qui appelle

Si votre CRM ou votre standard téléphonique ouvre la fiche du client à chaque appel entrant, utilisez GET /clientes?telefono=<numéro>. La recherche porte sur le téléphone principal et le secondaire, quelle que soit l'écriture du numéro : espaces, tirets, points, indicatif international de votre pays (+33 ou 0033) et 0 initial. Ainsi, « 06 12 34 56 78 » retrouve un client enregistré sous « +33 6.12.34.56.78 ». Il faut au moins 6 chiffres.

Résumé du client pour votre CRM

GET /clientes/{id}/resumen renvoie en un seul appel ce qu'un CRM affiche habituellement sur la fiche client : totalReparaciones, reparacionesAbiertas (l'appareil est encore à l'atelier), porEstado, totalPresupuestado et totalPresupuestosAprobados (dans la devise de l'atelier, indiquée dans moneda), primeraReparacion, ultimaReparacion et ultimaActividad (la dernière modification sur l'une de ses fiches). Il nécessite la ressource Réparations, comme les fiches.

Requête

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",
    …
  }
}

Ne synchroniser que ce qui a changé

Inutile de tout récupérer à chaque passage. Enregistrez dans votre outil la date et l'heure de la dernière exécution et ne demandez que les clients ou les fournisseurs modifiés depuis, avec le paramètre actualizadoDesde. La réponse est triée par date de modification croissante avec un critère de départage stable : vous pouvez donc la paginer sans sauter d'enregistrements. Les enregistrements archivés apparaissent aussi (avec activo = false), pour que votre CRM puisse refléter l'archivage.

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

Premier passage

Parcourez GET /clientes avec limit=100 et page=1, 2, 3… jusqu'à épuiser totalPages. Enregistrez l'heure de début.

2

Passages suivants

Demandez GET /clientes?actualizadoDesde=<heure enregistrée> et ne traitez que ce qui arrive. Enregistrez de nouveau l'heure de début de ce passage.

3

Liez, ne dupliquez pas

Enregistrez l'id Sattotal à côté de la fiche de votre CRM. Si la création renvoie un 409 DUPLICADO, la réponse contient existenteId : liez celui-là au lieu d'en créer un autre.

Pagination et recherche

Les listes acceptent page (à partir de 1) et limit (25 par défaut, 100 au maximum ; au-delà, la valeur est ramenée à 100). Le champ busqueda cherche dans le prénom, le nom, la raison sociale, l'identifiant fiscal, l'email, le code et le téléphone.

Codes d'erreur et que faire

Toutes les réponses d'erreur contiennent success: false, un message explicatif et un code stable, conçu pour être traité par programme. Voici ceux que vous pouvez recevoir :

NO_AUTORIZADO

La clé est absente, a un format qui n'est pas le nôtre ou n'existe pas. Vérifiez l'en-tête Authorization.

CLAVE_REVOCADA

La clé était valide, mais un administrateur l'a révoquée. Créez-en une nouvelle dans Configuration → API et mettez-la à jour dans votre outil.

PLAN_REQUERIDO

L'organisation est sur le forfait gratuit. L'API refonctionne dès le passage à un forfait payant.

PERMISO_DENEGADO

La clé n'a pas la permission nécessaire pour cette opération. La réponse indique dans ambitoRequerido celle qui manque : créez une clé avec cette permission.

NO_ENCONTRADO

Aucun client ni fournisseur avec cet id dans votre organisation. Ceux des autres organisations ne sont jamais visibles, et « n'existe pas » n'est pas distingué de « n'est pas à vous ».

DUPLICADO

Un enregistrement avec cette donnée existe déjà : identifiant fiscal ou email pour les clients ; identifiant fiscal, nom ou code pour les fournisseurs. La réponse contient campo et existenteId pour que vous puissiez le lier au lieu d'en créer un autre.

VALIDACION

Un champ ne passe pas la validation (ou le JSON est mal formé). details indique le champ et la raison, comme dans le formulaire.

IDENTIFICADOR_FISCAL_REQUERIDO

Ce client a besoin d'un identifiant fiscal : dans votre pays, il est obligatoire pour le type de client envoyé (par exemple, toujours pour les entreprises).

RATE_LIMIT

Trop de requêtes. Attendez le nombre de secondes indiqué dans l'en-tête Retry-After et réessayez.

API_DESACTIVADA

L'API est temporairement désactivée pour maintenance. Réessayez plus tard.

Limites

120 requêtes par minute et par clé (largement assez pour une synchronisation périodique ; cela freine une boucle accidentelle). 10 clés actives par organisation. Les listes renvoient au maximum 100 enregistrements par page. Si l'organisation est sur le forfait gratuit avec son quota mensuel épuisé, la création de clients est bloquée, comme dans l'application.

Pas à pas : synchroniser les clients avec Make

Un scénario typique : toutes les 15 minutes, ramener dans votre CRM les clients et les fournisseurs créés ou modifiés dans Sattotal. Dans n8n, l'équivalent utilise le nœud HTTP Request et un nœud Schedule.

1

Créez la clé dans Sattotal

Configuration → API → Nouvelle clé, permission « Lecture seule » si vous ne faites que lire, « Lecture et écriture » si vous créez aussi des clients depuis le CRM. Copiez la clé.

2

Module HTTP « Make a request »

URL : votre URL de base + /clientes. Méthode GET. En-tête Authorization avec la valeur Bearer suivie de votre clé. Cochez « Parse response » pour travailler avec le JSON.

3

Testez la connexion

Avant tout, exécutez une fois une requête vers /me : si elle renvoie votre organisation et le nom de la clé, l'authentification fonctionne.

4

Ajoutez le filtre incrémental

Enregistrez la date de la dernière exécution dans un Data store ou une variable et passez-la comme actualizadoDesde dans l'URL. Planifiez le scénario toutes les 15 minutes.

5

Mappez les champs vers votre CRM

Parcourez data[] et mappez id, codigo, nombre, apellidos, email, telefono, nif_cif et direccion. Enregistrez l'id Sattotal dans votre CRM pour mettre à jour au lieu de dupliquer.

Pour créer des clients depuis le CRM, ajoutez un autre module HTTP avec la méthode POST vers /clientes et le corps JSON du client. Si vous recevez un 409, utilisez existenteId pour lier.

Bonnes pratiques de sécurité

Une clé par intégration

Vous pouvez ainsi en révoquer une sans casser les autres, et la liste vous montre quand chacune a été utilisée pour la dernière fois.

Jamais dans le navigateur ni dans un dépôt public

Conservez-la dans le coffre d'identifiants de votre outil (connexions Make, credentials n8n, variables d'environnement). Si elle se retrouve dans un dépôt ou sur un site web, considérez-la comme compromise.

En cas de fuite, révoquez et créez-en une autre

La révocation est immédiate : l'ancienne clé commence à recevoir des 401 CLAVE_REVOCADA. Mettez la nouvelle à jour dans votre outil, et c'est terminé.

Spécification API

La référence technique complète (chemins, paramètres, schémas et codes d'erreur) est publiée dans un format ouvert à l'adresse /api/v1/openapi.json, sans clé nécessaire. Par défaut, elle est en espagnol ; ajoutez ?lang= avec votre langue pour l'obtenir traduite (par exemple /api/v1/openapi.json?lang=fr, ?lang=en ou ?lang=ro). Vous pouvez l'importer dans Postman, Insomnia, Make ou n8n pour avoir tous les appels prêts.

Questions fréquentes

J'ai perdu la clé, puis-je la revoir ?

Non. Elle n'est affichée qu'à sa création, puis stockée de façon irréversible. Révoquez-la dans Configuration → API et créez-en une autre.

Existe-t-il des webhooks pour que Sattotal prévienne mon CRM quand quelque chose change ?

Pas encore. La méthode recommandée est d'interroger l'API périodiquement avec le paramètre actualizadoDesde, qui ne renvoie que ce qui a changé.

Quelles données l'API expose-t-elle ?

Les clients et les fournisseurs : lister, créer, consulter, mettre à jour et archiver. Les permissions sont définies par ressource : une clé créée avant l'arrivée des fournisseurs ne les atteint pas tant qu'un administrateur ne la lui a pas cochée. Et les fiches de réparation en lecture seule (statut, dates, appareil et devis), avec leur propre permission.

Puis-je supprimer un client via l'API ?

Non, seulement l'archiver (activo = false), comme dans l'application. Cela vaut aussi bien pour les clients que pour les fournisseurs. Un enregistrement archivé continue d'apparaître dans la synchronisation pour que votre CRM puisse le refléter.

L'API est-elle incluse dans le forfait gratuit ?

Non. Elle est incluse dans Basic, Pro et Enterprise et pendant la période d'essai. Avec le forfait gratuit, vous pouvez toujours voir et révoquer les clés que vous avez créées.

Seul le nom de famille du client arrive. Pourquoi le prénom n'est-il pas enregistré ?

C'est presque toujours le mappage des champs : le prénom va dans nombre et le nom de famille dans apellidos. Si votre outil envoie le prénom sous une autre clé (firstName, name, apellido…), l'API l'ignore et vous le signale dans avisos.camposIgnorados de la réponse. Corrigez le mappage et renvoyez le client avec un PATCH.

Puis-je retrouver le client à partir du numéro qui m'appelle ?

Oui. Appelez GET /api/v1/clientes?telefono= avec le numéro tel que vous le recevez : peu importe qu'il contienne l'indicatif international, des espaces ou des tirets, et le téléphone secondaire est aussi pris en compte. Avec son id, vous pouvez ensuite demander ses fiches (/clientes/{id}/reparaciones) et son résumé (/clientes/{id}/resumen).

Envie de l'essayer vous-même ?

Essayez Sattotal gratuitement avec des données d'exemple, sans carte bancaire.