Un client est un compte client final au sein de votre workspace. La plupart des ressources d'intégration (clés d'intégration CRM, historique des appels, Smart Routings…) appartiennent à un client.
Tous les endpoints de cette section sont scopés au workspace.
En-têtes : Authorization: Bearer {token-workspace}
#Permissions
| Endpoint | Condition |
|---|---|
GET /api/customers |
Utilisateur admin avec la permission customer.view |
GET /api/customers/{id} |
Permission customer.view, ou utilisateur contact de ce client |
POST /api/customers |
Utilisateur admin avec la permission customer.create |
PUT /api/customers/{id} |
Utilisateur admin avec la permission customer.edit |
DELETE /api/customers/{id} |
Utilisateur admin avec la permission customer.delete |
GET /api/customers/resolve |
Scope OAuth client + accès au compte client sélectionné |
PUT /api/customers/settings |
Scope OAuth client + utilisateur admin avec la permission customer.edit |
#L'objet client
{
"id": 12,
"uuid": "3f0c6a51-8d0e-4b7e-a1c2-6f1f0b2d9e44",
"representative_id": null,
"main_contact_id": 41,
"active": true,
"name": "Acme Corp",
"registration_number": "12345678900012",
"tax_registration_number": "FR12345678900",
"main_address_line_1": "10 rue de la Paix",
"main_address_line_2": null,
"main_address_post_code": "75002",
"main_address_city": "Paris",
"main_address_country": "France",
"customer_account": "ACME01",
"email_address": "contact@acme.com",
"account_email_address": "billing@acme.com",
"fax": null,
"phone": "+33142000000",
"mobile_phone": null,
"website": "https://acme.com",
"logo": null,
"type": null,
"capital": null,
"activity_code": null,
"sector_id": null,
"origin_id": null,
"abroad": false,
"zone": 0,
"quick_search_label": null,
"quick_search_index": 0,
"deleted_at": null,
"created_at": "2024-03-01T09:00:00.000000Z",
"updated_at": "2024-06-12T14:30:00.000000Z"
}
customer_account est le code de compte qui permet de cibler ce client sur les endpoints scopés au client (voir Smart Routings).
#GET /api/customers
Retourne tous les clients du workspace sous forme de tableau JSON simple (non paginé).
Réponse 200 : tableau d'objets client
#GET /api/customers/{id}
Retourne un client.
Réponse 200 : objet client
Réponse 403 : accès non autorisé
#POST /api/customers
Crée un client. Le corps doit être un objet JSON.
Corps de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
name |
string | oui | Raison sociale (2 à 255 caractères) |
customer_account |
string | non | Code de compte (2 à 255 caractères) |
active |
boolean | non | Compte actif ou non |
registration_number |
string | non | Numéro d'immatriculation (SIRET…, 2 à 20 caractères) |
tax_registration_number |
string | non | Numéro de TVA (2 à 20 caractères) |
main_address_line_1 |
string | non | Ligne d'adresse 1 |
main_address_line_2 |
string | non | Ligne d'adresse 2 |
main_address_post_code |
string | non | Code postal |
main_address_city |
string | non | Ville |
main_address_country |
string | non | Pays |
email_address |
string | non | Adresse email principale |
account_email_address |
string | non | Adresse email de facturation |
phone |
string | non | Numéro de téléphone |
mobile_phone |
string | non | Numéro de mobile |
fax |
string | non | Numéro de fax |
website |
string | non | Site web |
type |
string | non | Type de client (texte libre) |
capital |
string | non | Capital social |
activity_code |
string | non | Code d'activité |
abroad |
boolean | non | Client basé à l'étranger |
zone |
integer | non | Numéro de zone |
main_contact_id |
integer | non | ID d'un contact existant |
representative_id |
integer | non | ID d'un utilisateur existant |
sector_id |
integer | non | ID du secteur |
origin_id |
integer | non | ID de l'origine |
id, uuid, created_at et updated_at ne peuvent pas être définis.
Réponse 201 : l'objet client créé
Réponse 400 : échec de validation
{
"response": "bad request: please check body parameters.",
"hint": ["The name field is required."]
}
#PUT /api/customers/{id}
Modifie un client. Accepte les mêmes champs que POST /api/customers, tous facultatifs. Seuls les champs envoyés sont modifiés.
Réponse 201 : l'objet client modifié
#DELETE /api/customers/{id}
Supprime un client (suppression logique).
Réponse 200
{ "response": "element deleted" }
#GET /api/customers/resolve
Retourne le compte client ciblé par la requête. Utile pour vérifier qu'un identifiant d'accès et un customer_account désignent bien le client attendu avant d'appeler d'autres endpoints scopés au client.
Requiert le scope OAuth client.
Paramètres de requête
| Paramètre | Type | Requis | Description |
|---|---|---|---|
customer_account |
string | oui* | Code de compte client |
customer_id |
integer | oui* | ID du client |
*Fournir l'un des deux.
Réponse 200
{
"response": "ok",
"id": 12,
"customer_account": "ACME01"
}
Réponse 403 : aucun client ne correspond aux paramètres, ou l'identifiant d'accès n'a pas accès à ce client
#PUT /api/customers/settings
Définit les paramètres régionaux généraux du client sélectionné. Requiert le scope OAuth client.
Paramètres de requête
| Paramètre | Type | Requis | Description |
|---|---|---|---|
customer_account |
string | oui* | Code de compte client |
customer_id |
integer | oui* | ID du client |
*Fournir l'un des deux.
Corps de la requête (objet JSON, tous les champs sont facultatifs, au moins un champ requis)
| Champ | Type | Requis | Description |
|---|---|---|---|
country |
string | non | Pays par défaut, code à 2 lettres (ex. fr) |
language |
string | non | Langue, code à 2 lettres (ex. fr) |
timezone |
string | non | Fuseau horaire valide (ex. Europe/Paris) |
date_format |
string | non | Format de date, 20 caractères max. (ex. d/m/Y) |
Le fuseau horaire est utilisé par les Smart Routings pour évaluer les plages horaires et les exceptions dans l'heure locale du client.
Réponse 200 : l'ensemble des paramètres généraux du client après la mise à jour
{
"response": "ok",
"settings": {
"general.default_country": "fr",
"general.timezone": "Europe/Paris",
"general.language": "fr",
"general.date_format": "d/m/Y"
}
}
Réponse 400 : échec de validation (ex. fuseau horaire inconnu)
Réponse 403 : aucun client ne correspond aux paramètres, ou accès non autorisé