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