Aller au contenu principal

API Gesteos

Introduction​

Objectifs​

L'objectif de ce document est de définir :

  • Les principes généraux de fonctionnement des APIs

  • Les fonctionnalités exposées par l'API de Gesteos

Glossaire​

Tenant : instance d'une application GESTEOS (définie par un ou plusieurs noms de domaine)

L'identification est une phase qui consiste à établir l'identité de l'utilisateur. Elle permet répondre à la question : "Qui êtes-vous ?". L'utilisateur utilise un identifiant (que l'on nomme "Compte d'accès", "Nom d'utilisateur" ou "Login" en anglais) qui l'identifie et qui lui est attribué individuellement. Cet identifiant est unique.

L'authentification est une phase qui permet à l'utilisateur d'apporter la preuve de son identité. Elle intervient après la phase dite d'identification. Elle permet de répondre à la question : "Êtes-vous réellement cette personne ?". L'utilisateur utilise un authentifiant ou "code secret" que lui seul connait.

Principes fondamentaux​

Cette API doit respecter les critères suivants :

  • Sécurité

  • Robustesse

Sécurité​

La sécurité permet que seul un compte autorisé puisse effectuer une action.

On distingue plusieurs types d'autorisations :

  • Compte authentifié

  • Permissions

  • Filtrage par adresse IP

Compte authentifié​

L'accès aux APIs n'est disponible que pour un compte authentifié.

L'authentification passe par un token au format JWT fourni dans le header http Authorization.

Le compte est authentifié si :

  • Le compte est valide (existe)

  • La date d'expiration du token n'est pas atteinte

Permissions​

L'accès à une API n'est disponible que si le compte authentifié a les droits/permissions requises.

Filtrage par adresse IP​

L'accès à une API n'est disponible pour un compte authentifié que si l'adresse IP utilisée pour y accéder a été autorisée.

Robustesse​

La robustesse permet de s'assurer que l'application reste au maximum opérationnel.

La robustesse se fait au travers :

  • Performance des accès aux données

  • Protection contre une utilisation abusive

  • Versionning

Performance​

Différentes solutions pourront être mises en place pour améliorer la performance d'accès aux données :

  • Mise en cache (Redis ou autre solution)

  • Limiter les appels redondants à la base sur les mêmes données

Protection contre une utilisation abusive​

L'usage des APIs si elle n'est pas limitée/contrôlée peut causer des problèmes de performance sur l'application Gesteos voir un écroulement du serveur.

Pour limiter l'usage des APIs, il y a une mise en place de :

  • Stratégie de limitation d'usage des APIs par quota (throttling policy) : 1000 requêtes maximum autorisées par minute, paramétrable par compte.

Throttling policy​

Une throttling policy permet de limiter le nombre d'appels (quota) à une API par un client sur une période donnée.

Si le quota est atteint, les appels à l'API sont rejetés, jusqu'à ce que la période de référence soit écoulée.

Une throttling policy DOIT être définie pour chaque compte.

Versionning​

Le versionning permet que les applications clientes existantes ne soient pas impactées par une mise à disposition d'une nouvelle version d'une API existante.

Identification​

L'API d'identification implémente OAuth ou OpenIDConnect.

Cette API ne permet pas d'identifier un compte (pas de fourniture d'access_token à partir d'un login/mot de passe), mais permet de générer un access_token uniquement à partir d'un refresh_token.

Le refresh_token a une durée de vie glissante (i.e. sa date de validité est rafraichie à chaque demande de génération d'access_token) et pour une durée configurable (au bout de ce délai sans activité, le refresh_token n'est plus valide).

La demande de génération d'access_token ne renvoie pas de nouveau refresh_token, ni le refresh_token courant. L'access_token a une durée de validité configurable (15 minutes par défaut).

L'administrateur sécurité DOIT générer le refresh_token à fournir au client.

L'administrateur sécurité PEUT révoquer le refresh_token (exemple : sur demande du client en cas de brèche de sécurité).

En cas de perte, révocation ou expiration du refresh_token, l'administrateur sécurité DEVRA générer un nouveau refresh_token.

Le body de la requête doit être encodé en x-www-form-urlencoded et inclure les champs grant_type avec la valeur refresh_token ainsi que refresh_token contenant la clé API

Fonctions de l'API​

Description​

L'utilisateur peut :

  • Administrer les sociétés

  • Administrer les utilisateurs

  • Administrer les clients

  • Administrer les événements

  • Administrer les référentiels

Modèles communs​

Adresse postale​

| Champ | Description  | Type  | | recipient  | Libellé du destinataire  | string  | | streetAddress | Rue et compléments d'adresse | string | | floor | Etage | string  | | zipCode | Code postal | string  | | city | Ville | string  | | country | Pays | Objet | | | | Pays |

streetAddress est un champ sur plusieurs lignes (au maximum sur 4 lignes). Chaque ligne est séparée par « \r\n ».

Pays​


Champ Description  Type 


id Identifiant du pays. int 

label Nom du pays (Ex : France) string

code Code iso 2 du pays (Ex : Fr) string ​

Si l'id n'est pas renseigné, on cherche le pays avec le code iso sinon avec le label.

Informations de contact​


Champ Description  Type 


postalAddress Adresse postale (cf §4.2.1) object

mail1 Adresse mail principale string 

mail2 Adresse mail secondaire string 

phone1 Numéro de téléphone fixe string 

phone2 Numéro de téléphone mobile string 

phone3 Numéro de téléphone fixe 2 string 

phone4 Numéro de téléphone mobile 2 string 

fax1 Numéro de fax string 

fax2 Numéro de fax string 

url URL du site internet string 

notes string ​

Evénement​


Champ Description  Type 


Id Identifiant de l'événément String

Subject Sujet string 

Deal Affaire associée object  | null

Deal.Id Identifiant de l'affaire string 

Deal.Label Libellé de l'affaire string 

DateDebut Date de début de l'événément Date

DateFin Date de fin de l'événement Date | null

User Utilisateur qui a créé Object l'événement

User.id Identifiant de l'utilisateur string 

User.lastName Nom de l'utilisateur string 

User.firstName Prénom de l'utilisateur string 

Client Client associé object

Client.Id Identifiant du client

Client.Name Nom du client

Client.FirstName Prénom du client

Mean Moyen d'événement object

Type Type d'événement Object

State Etat d'événement object

IsAllDay Indique si la date de début et bool de fin s'applique sur une journée entière

DateCreation Date de création de l'événement Date

Origine Origine de l'événement String

Notes Notes/Mémo sur l'événement String

Revision Identifiant unique ordonné Int​

Moyen d'événement​


Champ Description  Type 


Id  Identifiant Int

Code Identifiant texte String

Label Libellé dans la langue de Bool l'utilisateur courant

IsSystem Indique si le moyen est défini Bool pour le système (true) ou spécifique au client (false)​

Type d'événement​


Champ Description  Type 


Id  Identifiant Int

Code Identifiant texte String

Label Libellé dans la langue de Bool l'utilisateur courant

IsSystem Indique si le moyen est défini Bool pour le système (true) ou spécifique au client (false)

Target Indique s'il s'applique à un int client (1) ou à une affaire (2)​

Etat d'événement​


Champ Description  Type 


Id  Identifiant Int

Code Identifiant texte String

Label Libellé dans la langue de Bool l'utilisateur courant

IsSystem Indique si le moyen est défini Bool pour le système (true) ou spécifique au client (false)

IsComplete Indique si l'état est un état bool indiquant une fin de traitement (true) ou pas (false)​

Recherche paginée​

Requête​


Champ Description  Type 


offset  Index  int (>=0)

pageSize Nombre maximum d'éléments à int (> 0) renvoyer​

Chaque requête doit définir :

  • Une taille de page par défaut et une taille de page maximum.

  • Les critères de recherche

Réponse​


Champ Description  Type 


total Nombre total d'éléments résultat Int (>= 0)  de la recherche

items Eléments recherchés dans la object[] plage demandée​

Type d'origine​


code valeur  Description


Internet 1

Parrainage 2 Notes contient le parrain

FoireSalon 3 Notes contient le nom du salon/foire

CommunicationLocale 4

PagesJaunes 5

PubliciteNationale 6

Prescription 7

ImportPermisConstruire 8

ImportFichierTiers 9

Presse 10

Flyer 11

Voiture 12

ReseauxSociaux 13

Magasin 14

ContactTelephonique 15

Panneau 16

Affichage 18

Radio 19

AncienClient 20

Television 21

ReseauPersonnel 22

Autre 999​

Type civilité​


code valeur 


Madame 1

Monsieur 2

MonsieurMadame 3

Mesdames 4

Messieurs 5

EntrepriseAutre 6

Docteur 7

MonsieurMessieurs 8​

External identifier​


Champ Description  Type 


provider Clés string

externalID Valeur string​

Administrer des utilisateurs​

Description​

L'utilisateur autorisé peut :

  • Lister les utilisateurs

  • Créer un utilisateur

  • Modifier un utilisateur existant

  • Lire les informations d'un utilisateur existant

  • Désactiver un utilisateur existant

Autorisations​

Nécessite les rôles User ou UserRead

Modèle Utilisateur​

Modèle résumé​

| Champ | Description  | Type  | | id  | Identifiant unique de | string  | | | l'utilisateur | | | | (read only) | | | firstName | Rue et compléments d'adresse | string | | lastName | Etage | string  | | creationTime | Code postal | string  | | updateTime | Ville | string  | | company | Informations de la société | object | | | associée à l'utilisateur | | | company.id | Identifiant de la société | string |

Modèle complet​

| Champ | Description  | Type  | | initials  | Initiales de l'utilisateur | string  | | login | Identifiant de connexion de | string | | | l'utilisateur | | | contact | Adresse mail | string  | | culture | Code culture | string | | enabled | Indique si l'utilisateur est | boolean | | | actif | | | | (read only) | | | notes | | string | | externalId | Identifiant de l'utilisateur | string | | | dans le système externe du | | | | client | | | company.name | Nom de la société | string |

Lister les utilisateurs​

POST /users

Autorisation​

Nécessite le rôle User ou UserRead

Description​

TODO

Données en entrée​

Modèle de requête de recherche paginée

| Champ | Description  | Type  | | pageSize  | Par défaut : 100, | int  | | | Max : 500 | | | filter.company | La recherche s'effectue sur | string | | | les utilisateurs appartenant | | | | à la société spécifiée par | | | | son identifiant | | | filter.enabledOnly | Indique si la recherche ne | boolean  | | | renvoie que les utilisateurs | | | | actifs | |

Données en sortie​

Modèle de réponse de recherche paginée. Les items sont de type « Modèle utilisateur complet »


Champ Description  Type 


total Nombre total d'éléments résultat Int (>= 0)  de la recherche

items Eléments recherchés dans la object[] plage demandée​

Les informations retournées pour chaque utilisateur sont les suivantes :

| Champ | Description  | Type  | | id  | Identifiant unique de | string  | | | l'utilisateur | | | | (read only) | | | firstName | Prénom | string | | lastName | Nom | string  | | login | Identifiant de connexion | string | | enabled | Indique si le compte est | boolean | | | activé | | | creationTime | Date de création | string  | | updateTime | Date de dernière modification | string  | | company | Informations de la société | object | | | associée à l'utilisateur | | | > company.id | Identifiant de la société | string |

Créer un utilisateur​

POST /user

Autorisation​

Nécessite le rôle User

Description​

TODO

Données en entrée​

| Champ | Description  | Type  | | firstName | Prénom | string | | lastName | Nom | string  | | login | Identifiant de connexion | string | | company | Informations de la société | object | | | associée à l'utilisateur | | | > company.id | Identifiant de la société | string | | initials  | Initiales de l'utilisateur | string  | | culture | Code culture | string | | notes | | string | | contact | Informations de contact de | object | | | l'utilisateur (cf §3.2) | |

Données en sortie​

Modèle utilisateur avec les champs suivants :

  • id

  • creationTime

  • updateTime

  • company.id, company.name

Modifier un utilisateur​

PUT /user/{userId}

Autorisation​

Nécessite le rôle User

Description​

TODO

Données en entrée​

| Champ | Description  | Type  | | id  | Identifiant unique de | string  | | | l'utilisateur | | | | (read only) | | | firstName | Prénom | string | | lastName | Nom | string  | | initials  | Initiales de l'utilisateur | string  | | culture | Code culture | string | | notes | | string | | contact | Informations de contact de | object | | | l'utilisateur (cf §3.2) | |

Les informations de l'utilisateur pouvant être modifiées sont celles ci-dessus (sauf id).

Données en sortie​

Les informations détaillées de l'utilisateur

Lire les informations d'un utilisateur​

GET /user/{userId}

Autorisation​

Nécessite le rôle User ou UserRead

Description​

Obtient les informations de l'utilisateur spécifié par son identifiant unique.

Données en entrée​

Requête URI : {userId} = identifiant de l'utilisateur

Données en sortie​

| Champ | Description  | Type  | | id  | Identifiant unique de | string  | | | l'utilisateur | | | | (read only) | | | firstName | Prénom | string | | lastName | Nom | string  | | login | Identifiant de connexion | string | | enabled | Indique si le compte est | boolean | | | activé | | | creationTime | Date de création | string  | | updateTime | Date de dernière modification | string  | | company | Informations de la société | object | | | associée à l'utilisateur | | | > company.id | Identifiant de la société | string | | > company.name | Nom de la société | string | | initials  | Initiales de l'utilisateur | string  | | culture | Code culture | string | | notes | | string | | contact | Informations de contact de | object | | | l'utilisateur (cf §4.2.2) | |

Désactiver un utilisateur​

DELETE /user/{userId}

Autorisation​

Nécessite le rôle User.

Description​

Désactive un utilisateur.

Données en entrée​

Requête URI : {userId} = identifiant de l'utilisateur

Données en sortie​

Appliquer un profile de droits à un utilisateur​

POST /user/{userId}/permissions

Autorisation​

Nécessite le rôle User.

Données en entrée​

Requête URI : {userId} = identifiant de l'utilisateur (champ id de l'utilisateur)

Body au format JSON


Champ Description  Type 


profile Libellé du profile string


Les profiles sont configurés au niveau de l'application.

Données en sortie​

N/A

Administrer des societes​

Description​

L'utilisateur peut :

  • Lister les sociétés

  • Lire les informations d'une société

Autorisations​

Nécessite les droits Company (accès en lecture/écriture) ou CompanyRead (accès en lecture seule).

Lister les sociétés​

GET /companies

Description​

Renvoie la liste des sociétés appartenant au réseau associé au compte courant.

Données en entrée​

N/A

Données en sortie​

La réponse est un objet au format JSON.


Champ Description  Type 


total  Nombre de sociétés int 

items La liste des sociétés object []​

Les informations suivantes sont renvoyées pour chaque société (élément de items) :

| Champ | Description  | Type  | | id  | Identifiant unique la société | string  | | | (read only) | | | name | Nom de la société | string | | externalIdentifiers | Liste des identifiants et de | object | | | leur source/fournisseur | |

Le format de externalIdentifiers est le suivant :

{

Provider1 : identifiant1,

Provider2 : identifiant2

}

Lire les informations d'une société​

GET /company/{companyId}

Description​

Renvoie les informations détaillées d'une société.

Données en entrée​

Requête URI : {companyId} = identifiant de la société dont on veut le détail

Données en sortie​

La réponse est un objet au format JSON.

| Champ | Description  | Type  | | id  | Identifiant unique la société | string  | | | (read only) | | | name | Nom de la société | string | | mail | Adresse mail de la société | string | | phone | Numéro de téléphone de la | string | | | société | | | fax | Numéro de fax de la société | string | | externalIdentifiers | Liste des identifiants et de | object | | | leur source | |

Rechercher une société par son identifiant externe​

POST /companies

Données en entrée​


Champ Description  Type 


provider Code du fournisseur de string  l'identifiant externe

id Identifiant recherché string

actifOnly Lister les sociétés non Bool | supprimées et non de formation false

asActifUser Lister les sociétés ayant Bool | uniquement des utilisateurs false actifs

asAdminRights Lister les sociétés ayant des Bool | utilisateurs possédant le droit false admin société​

Données en sortie​


Champ Description  Type 


total  Nombre de sociétés int 

items La liste des sociétés Object[]​

Les informations suivantes sont renvoyées pour chaque société (élément de items) :

| Champ | Description  | Type  | | id  | Identifiant unique la société | string  | | | (read only) | | | name | Nom de la société | string |

Administrer des clients​

Description​

L'utilisateur peut :

  • Rechercher les clients

  • Créer un client

  • Modifier un client

  • Obtenir les informations d'un client

Modèles​

Client​


Champ Description  Type 


id Identifiant du client string

notes Memo sur le client

creationTime Date de création

updateTime Date de dernière modification

CiviliteId Identifiant du type de civilité Nullable Int

FirstName Prénom du client

Name Nom du client

companyId Identifiant de la société rattachée au client

origin Identifiant de l'origine du int client

Abandon Objet de type Information Object d'abandon

contact Objet de type Informations de Object contact

externalId Identifiant du client dans la string source externe

externalProvider Identifiant de la source externe string

userId Identifiant du compte string utilisateur responsable du client​

Informations d'abandon​


Champ Description  Type 


id Identifiant du type d'abandon string

Code Code du motif d'abandon String

label Libellé du motif d'abandon String

Reason Information complémentaire au string motif

value Date complémentaire Date | null

when Date d'abandon date​

Rechercher les clients​

POST /clients

Description​

L'utilisateur peut rechercher les clients selon :

  • La société ou l'utilisateur rattaché

  • La date de création (dans une période)

  • La date de mise à jour (dans une période)

Si plusieurs critères sont utilisés, on effectue une recherche qui respecte tous les critères (AND).

Autorisations​

Nécessite le droit Deal ou DealRead.

Données en entrée​

Format du body​

Champ Description  Type 


Offset

PageSize Nombre d'éléments maximums à retourner

Since

Creationtime Permet de filtrer sur la date de création

CreationTime.From Borne min Date | null

CreationTime.Until Borne max Date | null

UpdateTime Permet de filtrer sur la date de dernière mise à jour

UpdateTime.From Borne min Date | null

UpdateTime.Until Borne max Date | null

User Permet de filtrer selon l'utilisateur responsable

User.ExcludeInactive Exclure les clients associés aux bool utilisateurs inactifs

User.TypeExternId Filtrer sur le type extern id de Int | l'utilisateur responsable null

Company Permet de filtrer selon la société associée

Company.ExcludeDeleted Exclure les clients associés à une société désactivée

Company.EstDemo Exclure les sociétés de Bool | démonstration null

ClieNHSource Filtrer sur le fournisseur externe du client​

Format de la query​

La requête http accepte le paramètre fullFormat (bool, par défaut false) qui permet de renvoyer les informations complètes (fullFormat =true) ou partielles (fullFormat = false)

Données en sortie​

Créer un client​

POST /client

Description​

Autorisations​

Nécessite l'autorisation Deal

Données en entrée​

Objet client. Les données suivantes ne sont pas modifiables :

  • Id

  • Revision

  • companyId

  • Abandon

  • CreationTime

  • UpdateTime

Données en sortie​

Créer un contact pour le premier utilisateur admin de la société​

POST / client/addClientToFirstAdministrator

Description​

Cette api permet de créer un nouveau contact en l'associant automatiquement au premier utilisateur admin de la société passée dans le body

Autorisations​

Données en entrée​

Objet client. Les données suivantes sont obligatoires :

  • firstName

  • Name

  • companyId

Données en sortie​

Objet client enrichi :

  • Id (id du nouveau client)

  • userId (id de l'utilisateur associé au contact)

  • date de création

Modifier un client​

PUT /client

Description​

Autorisations​

Nécessite l'autorisation Deal

Données en entrée​

Les propriétés suivantes sont modifiables :


Champ Description 


notes Memo sur le client

CiviliteId Identifiant du type de civilité

FirstName Prénom du client

Name Nom du client

ExternalId Identifiant du client dans la source externe

contact Objet de type Informations de contact​

Obtenir les informations d'un client​

GET /client/{clientId}

Description​

Autorisations​

Nécessite l'autorisation Deal ou DealRead

Données en entrée​

Requête URI : {clientId} = identifiant du client dont on veut le détail

Données en sortie​

Objet de type client

Rechercher un client à partir d'un identifiant externe​

GET /client/lookup/{externid}

Description​

Autorisations​

Nécessite l'autorisation Deal ou DealRead

Données en entrée​

Requête URI : {externId} = identifiant du client dans la source externe

Données en sortie​

Obtenir la liste des clients d'un utilisateur​

GET /user/{userid}/clients

Description​

Renvoie la liste des clients dont l'utilisateur spécifié est responsable.

Autorisations​

Nécessite l'autorisation Deal ou DealRead

Données en entrée​

Requête URI : {client} = identifiant du compte utilisateur pour lequel on veut extraire les clients

Données en sortie​


Champ Description  Type 


total Nombre de clients int

Items Liste des clients Object[]

Items[].id Identifiant du client String

Items[].Name Nom du client String

Items[].FirstName Prénom du client string​

Obtenir la liste des clients d'une société​

GET /company/{companyId}/clients

Description​

Renvoie la liste des clients associés à la société spécifiée.

Autorisations​

Nécessite l'autorisation Deal ou DealRead

Données en entrée​

Requête URI : {companyId} = identifiant de la société pour laquelle on veut extraire les clients

Données en sortie​

Obtenir la liste des événements d'un client​

GET /client/{clientid}/events

Description​

Renvoie la liste des événements associés à un client dont les événements associés à ses affaires.

Autorisations​

Nécessite l'autorisation Deal ou DealRead

Données en entrée​

Requête URI : {clientId} = identifiant du client dont on veut obtenir la liste des événements.

Données en sortie​

Liste d'objet de type Evénement.


Champ Description  Type 


total Nombre d'événements int

Items Liste des événements Object[]​

Import clients​

POST/client/batch/externalIdentifier

Description​

Autorisations​

Données en entrée​

Cette api prend en body une liste d'objet suivant :

| Champ | Description  | Type  | | name | Nom du client | string | | firstName | Prénom du client | string | | notes | Memo sur le client | string | | civiliteId | Identifiant du type de | Nullable Int | | | civilité | | | | | Voir Enum Type | | | | civilité | | type | Type du contact (particulier | Int | | | / entreprise) | | | | | 1 : particulier | | | Si le type = 2 pas besoin de | | | | renseigner la civilité | 2 : entreprise | | origine | Identifiant de l'origine du | Int | | | client | | | | | Voir | | | | Enum Type | | | | d'origine | | company | La société rattachée au | List<External | | | client | identifier> | | establishment | L'établissement rattaché au | List<External | | | client | identifier> | | user | L'utilisateur rattaché au | List<External | | | client | identifier> | | externalIdentifiers | Liste des identifiants et de | List<External | | | leur source | identifier> | | contact | Objet de type Informations | Object | | | de contact | | | | | Informations de | | | | contact |

Exemple json :

[

{

"name": "string",

"firstName": "string",

"notes": "string",

"civiliteId": 0,

"origine": 0,

"type": 0,

"company": [

{

"provider": "string",

"externalID": "string"

}

],

"establishment": [

{

"provider": "string",

"externalID": "string"

}

],

"user": [

{

"provider": "string",

"externalID": "string"

}

],

"externalIdentifiers": [

{

"provider": "string",

"externalID": "string"

}

],

"contact": {

"postalAddress": {

"streetAddress": "string",

"floor": "string",

"zipCode": "string",

"city": "string",

"country": {

"id": 0,

"label": "string",

"code": "string"

}

},

"mail1": "string",

"mail2": "string",

"phone1": "string",

"phone2": "string",

"phone3": "string",

"phone4": "string",

"fax1": "string",

"fax2": "string",

"url": "string",

"notes": "string"

}

}

]

Données en sortie​

L'api retourne uniquement les lignes non traitées (même format que l'entrée)

Administrer des affaires​

Description​

L'utilisateur peut :

  • Rechercher les affaires

  • Créer une affaire

  • Obtenir les informations d'une affaire

Modèles​

Information d'abandon​


Champ Description  Type 


id Identifiant du type d'abandon string

Code Code du motif d'abandon String

label Libellé du motif d'abandon String

Reason Information complémentaire au string motif

value Date complémentaire Date | null

when Date d'abandon date​

Affaire​


Champ Description  Type 


id Identifiant de l'affaire string

Label Contremarque de l'affaire String

state Etape de l'affaire (Découverte, string Devis, Vente, Facture, Facture directe)

Client Référence du client

Client.id Identifiant du client string

Client.Name Nom du client String

Client.FirstName Prénom du client String

User Référence de l'utilisateur responsable de l'affaire

User.id Identifiant du compte String utilisateur

User.firstName Prénom de l'utilisateur String

User.lastName Nom de l'utilisateur string

Abandon Information de l'abandon object

ExternalId Identifiant de l'affaire dans la String source externe

Notes Notes/mémo de l'affaire String

Revision Identifiant séquentiel Int

TypeProjetId Type du projet Int

SellingHT Prix de vente HT Decimal

SellingTTC Prix de vente TTC Decimal

CreationDate Date de création Date

LastUpdateDate Date de dernière modification Date

Currency Code devise (EUR, USD,...) String

Contact Informations de contact Object

Decouverte Informations de découverte object​

D'autre information peut être récupérées en plus, si le query param fullFormat = true


Champ Description  Type 


Status Le statut de l'affaire object

DateQuote Date devis Date

QuoteNumber Numéro de devis string

DateSale Date de passage en vente Date

SaleNumber Numéro de commande String

DateInvoice Date de passage en facture Date

InvoiceNumber Numéro de facture String

comany.id Identifiant de la société de String l'affaire

comany.name Nom de la société string

typeProject.id Type de projet de l'affaire enum

typeProject.label Nom du projet String​

Informations de découverte​


Champ Description  Type 


BudgetType Type de budget Int | null

DelayType Type de délai de réalisation Int | null

HomeStatusType Propriétaire ou locataire Int | null

HouseOwnerAuthorized Travaux autorisés par le Bool | propriétaire si locataire null

HomeType Type de résidence (Appartment ou string House)

HasPose Pose à réaliser Bool | null

HasTtravaux Travaux à réaliser Bool | null

ClientDoTravaux Le client effectue les travaux Bool | null

RealisationDate Date de réalisation Date | null

Origine Type d'origine de l'affaire Int | null

OrigineNotes Informations d'origine string

IsHomeOlderThan2Years Le logement a plus de 2 ans Bool | null

CreationDate Date de création Date

LastUpdateDate Date de dernière mise à jour Date​

Rechercher les affaires​

POST /deals

Description​

L'utilisateur peut rechercher les affaires selon :

  • La société ou l'utilisateur rattaché

  • La date de création (dans une période)

  • La date de mise à jour (dans une période)

Si plusieurs critères sont utilisés, on effectue une recherche qui respecte tous les critères (AND).

Autorisations​

Nécessite l'autorisation Deal ou DealRead

Données en entrée​

Format du body​

Champ Description  Type 


Offset

PageSize Nombre d'éléments maximums à retourner

Since

Creationtime Permet de filtrer sur la date de création

CreationTime.From Borne min Date | null

CreationTime.Until Borne max Date | null

UpdateTime Permet de filtrer sur la date de dernière mise à jour

UpdateTime.From Borne min Date | null

UpdateTime.Until Borne max Date | null

User Permet de filtrer selon l'utilisateur responsable

User.ExcludeInactive Exclure les clients associés aux bool utilisateurs inactifs

User.TypeExternId Filtrer sur le type extern id de Int | l'utilisateur responsable null

Company Permet de filtrer selon la société associée

Company.ExcludeDeleted Exclure les clients associés à une société désactivée​

Paramètres​

La requête http accepte le paramètre fullFormat (bool, par défaut false) qui permet de renvoyer les informations complètes (fullFormat =true) ou partielles (fullFormat = false)

Données en sortie​

Créer une affaire​

POST /deal

Description​

Crée une affaire à l'étape Découverte si une découverte est fournie, sinon l'affaire est créée à l'étape Devis.

Autorisations​

Nécessite le droit Deal.

Données en entrée​

Un objet de type affaire.

Données en sortie​

Le deal avec les informations autogénérées (date, id).

Obtenir les informations d'une affaire​

GET /deal/{dealId}

Description​

Autorisations​

Nécessite l'autorisation Deal ou DealRead

Données en entrée​

Requête URI : {dealId} = identifiant de l'affaire

Données en sortie​

Objet de type affaire.

Rechercher une affaire à partir d'un identifiant externe​

GET /deal/lookup/{externid}

Description​

Autorisations​

Nécessite le droit Deal ou DealRead.

Données en entrée​

Requête URI : {externid} = identifiant de l'affaire dans la source externe.

Données en sortie​

Objet de type Affaire.

Obtenir la liste des affaires d'un utilisateur​

GET /user/{userid}/deals

Description​

Autorisations​

Nécessite le droit Deal ou DealRead.

Données en entrée​

Requête URI : {userId} = identifiant de l'utilisateur responsable des affaires

Données en sortie​

Obtenir la liste des affaires d'un client​

GET /client/{clientId}/deals ?fullFormat=true

Description​

Renvoie la liste des affaires d'un client

Autorisations​

Nécessite le droit Deal ou DealRead.

Données en entrée​

| Requête URI | Description  | Type  | | {clientId} | Identifiant du client dont on veut obtenir | string | | | les affaires | | | fullFormat | Le paramètre qui détermine les infos qu'on | Bool | | | veut en sortie (facultatif) | || | | | | false | | | Si true : sortie objet Affaire | |

Données en sortie​


Champ Description  Type 


total Nombre d'affaires int

Items Liste des affaires Affaire[]​

Obtenir la liste des événements d'une affaire​

GET /deal/{dealid}/events

Description​

Renvoie la liste des événements associés à une affaire.

Autorisations​

Nécessite le droit Deal ou DealRead.

Données en entrée​

Requête URI : {dealId} = identifiant de l'affaire dont on veut obtenir les événements.

Données en sortie​

Liste d'objets de type Evénement.


Champ Description  Type 


total Nombre d'événements int

Items Liste des événements Object[]​

Administrer les évenements​

Description​

L'utilisateur peut :

  • Créer un événement pour un client

  • Lister les événements

Autorisations​

Nécessite les droits Deal ou DealRead

Lister les événements​

POST /events

Description​

Autorisations​

Nécessite les droits Deal ou DealRead

Données en entrée​


Champ Description  Type 


offset Offset de début de pagination int

PageSize Nombre d'événements à renvoyer int

Since Int | null​

Données en sortie​


Champ Description  Type 


total Nombre total d'événement de la int recherche

items Liste des événements Object[]​

Ajouter un événement​

POST /event

Description​

Autorisations​

Nécessite le droit Deal

Données en entrée​

Objet de type événement.

Données en sortie​

Administrer les référentiels​

Description​

L'utilisateur peut :

  • Obtenir la liste des types d'événement

  • Obtenir la liste des moyens d'événement

  • Obtenir la liste des états d'événement

Autorisations​

Tout compte authentifié a accès aux informations de référentiel.

Obtenir la liste des types d'événement​

GET /company/events/types

Description​

Renvoie la liste des types d'événement disponibles pour le réseau associé au compte courant

Données en sortie​


Champ Description  Type 


total  Nombre d'éléments dans la liste int 

items La liste des types d'événements Object[]​

Obtenir la liste des moyens d'événement​

GET /company/events/means

Description​

Renvoie la liste des moyens d'événement disponibles pour le réseau associé au compte courant

Données en sortie​


Champ Description  Type 


total  Nombre d'éléments dans la liste int 

items La liste des origines Object[]​

Obtenir la liste des états d'événement​

GET /company/events/states

Description​

Renvoie la liste des états d'événements disponibles pour le réseau associé au compte courant.

Données en sortie​


Champ Description  Type 


total  Nombre d'éléments dans la liste int 

items La liste des états d'événement Object[]​