Datacopro API · guide fonctionnel

Consolider des fiches contact en super-contacts

Comment regrouper, à l'échelle d'un domaine, les fiches contact dupliquées entre copropriétés en un seul dossier de référence, et le rattacher à un fournisseur consolidé avec un rôle.

À propos de ce guide. Ce document décrit uniquement le contrat de l'API : les appels à effectuer, dans quel ordre, avec quels paramètres, et pourquoi. Aucune connaissance d'un logiciel de gestion copropriété en particulier n'est nécessaire pour le suivre — un seul encadré, plus bas, s'appuie sur un logiciel existant à titre d'illustration, clairement signalé comme tel.

Sauf mention contraire, chaque route est relative à la racine de l'API et suppose un jeton d'accès valide transmis en paramètre de requête (access_token), et non dans un en-tête d'autorisation.

1

Modèle & périmètre

Trois niveaux de granularité coexistent, à l'intérieur d'un domaine — le périmètre qui regroupe l'ensemble des copropriétés d'un même portefeuille de gestion. Les comprendre dans l'ordre évite l'erreur la plus fréquente : confondre « la fiche d'une personne dans une copropriété » avec « le dossier consolidé de cette même personne à l'échelle du domaine ».

Copropriété A M. Lefèvre idContact 4021 Copropriété B M. Lefèvre idContact 4108 Copropriété C M. Lefèvre idContact 4390 Super-contact (domaine) M. Lefèvre idSuperContact 77 3 fiches rattachées fonction : « Comptable » Super-fournisseur (domaine) Net&Propre SARL Consolide les fiches fournisseur de A, B, C idSuperFournisseur 118

Trois fiches contact identiques par accident de saisie deviennent un seul super-contact, ensuite rattaché avec un rôle à un fournisseur lui-même consolidé.

Fiche contact — rattachée à une copropriété

Une fiche contact appartient à une copropriété précise. Elle porte l'identité et les coordonnées d'une personne, ainsi qu'une référence — super — vers le super-contact auquel elle est éventuellement déjà rattachée (absente/nulle tant qu'elle ne l'est pas).

idReferencestable à travers les versions
prenom / nom
adresse / complement
codePostal / ville / pays
langue
telephone / mobile / fax
email
typeContactcatégorie du contact (comptable, gestionnaire, technique…), tirée d'une liste de référence
receptionEmail / receptionCourrier / receptionLREcanaux de réception acceptés
supersuper-contact rattaché, ou vide

Super-contact — porté par le domaine

Un super-contact reprend exactement les mêmes attributs d'identité et de coordonnées, plus des tags libres, mais n'est rattaché à aucune copropriété : il vit au niveau du domaine et référence la liste des fiches contact qu'il consolide. Il porte son propre identifiant (id), utilisé dans les routes ci-dessous comme {idSuperContact} — à ne pas confondre avec idReference, qui n'existe que sur les fiches contact.

Rattachement à un fournisseur — deux échelles

Avant même toute consolidation, une fiche contact peut déjà être rattachée à une fiche fournisseur au sein d'une même copropriété, avec un rôle (fonction) propre à ce rattachement local. La consolidation ajoute l'équivalent au niveau du domaine : un super-contact rattaché à un super-fournisseur, avec sa propre fonction (ex. « Comptable », « Commercial ») et une note interne. Ce rattachement consolidé est un objet à part entière, retourné avec son propre id (utilisé plus loin comme {idRattachement}) — distinct des rattachements locaux par copropriété, mais capable d'agir sur eux (voir parcours 5).

2

Contrôle d'accès

Toutes les routes de ce guide sont scopées au domaine (idDomaine) : le client doit être autorisé sur ce domaine précis, sinon l'appel renvoie 403 Forbidden — y compris quand l'identifiant demandé existe mais appartient à un autre domaine. Il n'existe pas de granularité plus fine (aucun rôle spécifique « gestion des contacts ») : l'autorisation sur le domaine suffit et conditionne tout le reste.

Base URL Toutes les routes de ce guide sont préfixées /v2 et servies depuis https://syndic.datacopro.org en production, ou https://preprod-syndic.datacopro.org sur la plateforme de test.
3

Parcours fonctionnels

Six enchaînements couvrent le cycle de vie complet : repérer, consolider, faire évoluer, rattacher à un fournisseur, faire évoluer le rôle, puis relire la vue d'ensemble.

1 · Repérer les fiches à consolider

01
GET/v2/domaines/{idDomaine}/contacts

Récupère les fiches contact du domaine. Chaque fiche indique dans son champ super si elle est déjà rattachée à un super-contact.

Paramètres utiles : filters, sorts, paginates, displays (voir §6).

PourquoiSans ce croisement, rien ne signale qu'un même comptable revient, identique, sur cinq copropriétés différentes : chaque fiche est vue isolément par copropriété.
LimiteIl n'existe pas de filtre serveur dédié « fiches non consolidées » : le tri (par nom, email ou téléphone identique entre plusieurs fiches) doit être fait côté intégration après réception de la liste.

2 · Créer un super-contact à partir de fiches existantes

01
POST/v2/domaines/{idDomaine}/super-contacts

Crée le dossier consolidé avec l'identité et les coordonnées de référence (mêmes champs que la fiche contact), plus un objet contacts qui combine deux informations dans une seule structure : une liste d'identifiants de fiches à rattacher immédiatement, et des indicateurs nommés par champ disant lequel doit en plus être répercuté sur ces fiches.

Exemple : contacts[]=4021, contacts[]=4108 (les fiches à rattacher) et, dans le même objet, contacts[nom]=1, contacts[email]=1 (les champs à propager). Les deux cohabitent sous la même clé contacts : n'envoyez que les indicateurs de champs réellement nécessaires, au risque sinon de propager une valeur non voulue.

PourquoiLe super-contact n'est pas qu'un dossier de regroupement passif : il peut aussi réécrire l'identité affichée par les fiches d'origine — utile quand un email a changé et doit être harmonisé partout à la fois.
PiègePour toute fiche dont un champ « activé » diffère de la valeur envoyée sur le super-contact, l'API ne modifie pas la fiche en place : elle crée une nouvelle fiche contact, avec un nouvel identifiant. L'ancienne fiche reste consultable comme trace historique mais n'est plus la version courante. Seul idReference reste stable d'une version à l'autre — c'est cet identifiant qu'il faut retenir côté intégration si des champs peuvent être propagés, jamais idContact seul.

3 · Faire évoluer la composition d'un super-contact

01
PUT/v2/domaines/{idDomaine}/super-contacts/{idSuperContact}

Met à jour l'identité de référence et/ou la liste des fiches rattachées (même objet contacts qu'à la création, avec les mêmes deux usages : identifiants à rattacher et indicateurs de propagation par champ).

PourquoiUne nouvelle copropriété peut faire apparaître une fiche supplémentaire pour une personne déjà consolidée ailleurs, ou un numéro de téléphone qui a changé doit être répercuté partout à la fois.
PiègeSi contacts est absent de la requête, la liste actuelle est conservée telle quelle. Mais dès qu'il est présent — même vide — il remplace intégralement la liste des fiches rattachées : toute fiche déjà rattachée et non réincluse est détachée. Il faut donc toujours renvoyer la liste complète voulue, jamais seulement l'ajout. Par ailleurs, exactement comme à la création (parcours 2), tout indicateur de propagation activé ici déclenche la même création d'une nouvelle fiche versionnée pour chaque fiche impactée : ce n'est pas propre au POST, cette mise à jour produit le même effet.

4 · Rattacher un super-contact à un fournisseur consolidé, avec un rôle

01
POST/v2/domaines/{idDomaine}/super-fournisseurs/{idSuperFournisseur}/contacts

Crée le rattachement : superContact (identifiant), fonction (rôle libre), note (interne, facultative). La réponse renvoie ce rattachement avec son propre id — c'est cette valeur qu'il faut conserver pour le modifier ensuite (parcours 5), sous le nom {idRattachement}.

PourquoiUn fournisseur consolidé sur dix copropriétés a souvent plusieurs interlocuteurs, chacun avec un rôle distinct (comptable, commercial, technique) — le rattachement porte cette information au niveau du fournisseur consolidé plutôt qu'à répéter par copropriété.
PiègeAucune contrainte n'empêche de rattacher deux fois le même super-contact au même super-fournisseur : c'est à l'intégration de vérifier l'absence de doublon avant l'appel si elle veut l'éviter.

5 · Faire évoluer le rôle d'un interlocuteur déjà rattaché

01
PUT/v2/domaines/{idDomaine}/super-fournisseurs/{idSuperFournisseur}/contacts/{idRattachement}

Modifie fonction et/ou note du rattachement.

PourquoiChanger le rôle à ce niveau consolidé répercute automatiquement la même valeur sur chacun des rattachements locaux (fiche contact / fiche fournisseur, présentés en §1) qui composent ce super-contact, copropriété par copropriété — sans avoir à modifier chaque rattachement local un par un.
PiègeUne route de suppression est déclarée pour ce même rattachement (DELETE sur la même URL) mais échoue actuellement à l'exécution avec une erreur serveur. Ne construisez pas de flux de désassociation automatisé sur cet appel tant que ce comportement n'a pas été confirmé corrigé — mieux vaut, pour l'instant, vérifier au cas par cas ou solliciter le support avant de considérer une désassociation comme acquise.

6 · Relire la vue consolidée d'un fournisseur

01
GET/v2/domaines/{idDomaine}/super-fournisseurs/{idSuperFournisseur}

La réponse inclut, par défaut, la liste contacts du fournisseur consolidé : chaque entrée porte fonction, note, et le super-contact complet. Aucun appel supplémentaire n'est nécessaire pour afficher les interlocuteurs.

LimiteGET /v2/domaines/{idDomaine}/super-contacts (la liste, sans un identifiant précis) ne renvoie pas les fiches contact rattachées à chaque super-contact — cette information n'apparaît que sur la lecture d'un super-contact précis. Pour auditer un grand nombre de super-contacts et leurs fiches, il faut les lire un par un.
Illustration. C'est cette même logique — regrouper une entité qui revient, identique, sur plusieurs copropriétés en une fiche unique consolidée — qu'un logiciel de gestion copropriété existant applique déjà côté fournisseurs : une société de nettoyage facturée séparément sur dix copropriétés y devient un seul « fournisseur consolidé », avec la même règle de remplacement complet de la liste rattachée décrite au parcours 3. La consolidation de contacts en est le prolongement côté personnes physiques.
4

Référence des endpoints

MéthodeRouteRôle
GET/v2/domaines/{idDomaine}/contactsListe des fiches contact du domaine
GET/v2/domaines/{idDomaine}/contacts/{idContact}Une fiche contact précise
GET/v2/domaines/{idDomaine}/super-contactsListe des super-contacts du domaine (sans leurs fiches rattachées)
POST/v2/domaines/{idDomaine}/super-contactsCréer un super-contact, éventuellement avec des fiches à rattacher
GET/v2/domaines/{idDomaine}/super-contacts/{idSuperContact}Un super-contact précis, avec ses fiches rattachées
PUT/v2/domaines/{idDomaine}/super-contacts/{idSuperContact}Modifier l'identité et/ou la composition d'un super-contact
DELETE/v2/domaines/{idDomaine}/super-contacts/{idSuperContact}Supprimer — refusé tant qu'une fiche y est rattachée
GET/v2/domaines/{idDomaine}/super-fournisseurs/{idSuperFournisseur}Fournisseur consolidé, contacts inclus par défaut
POST/v2/domaines/{idDomaine}/super-fournisseurs/{idSuperFournisseur}/contactsRattacher un super-contact à ce fournisseur, avec un rôle
PUT/v2/domaines/{idDomaine}/super-fournisseurs/{idSuperFournisseur}/contacts/{idRattachement}Modifier le rôle/la note du rattachement (propage le rôle en cascade)
DELETE/v2/domaines/{idDomaine}/super-fournisseurs/{idSuperFournisseur}/contacts/{idRattachement}Déclarée mais échoue actuellement à l'exécution — voir §6
5

Paramètres transverses

Les listes (fiches contact, super-contacts) acceptent les mêmes paramètres génériques que le reste de l'API :

filtersrestreint les lignes retournées
sortstri, ex. nom asc
paginatespagination
displayssélection de champs
Limitedisplays ne peut que réduire ou étendre la sélection parmi les champs déjà inclus par défaut pour cet appel précis — il ne peut pas faire réapparaître un champ qui, pour cette route, n'est structurellement jamais renvoyé (c'est le cas, par exemple, d'un éventuel indicateur de version courante d'une fiche contact : il n'est disponible à aucun niveau de ce guide, quels que soient les displays demandés). Ne construisez pas de logique reposant sur un champ absent d'une réponse d'exemple en espérant le faire apparaître via ce paramètre.
6

Limites & pièges connus

7

Questions de validation

Si je propage un email modifié depuis un super-contact vers ses fiches rattachées, l'identifiant de fiche que j'avais stocké reste-t-il valable ?
Non. Que la propagation soit déclenchée à la création (POST) ou plus tard lors d'une mise à jour (PUT), chaque fiche impactée reçoit un nouvel idContact ; seul idReference reste stable d'une version à l'autre. Rafraîchissez la référence de fiche à partir de la réponse du super-contact plutôt que de garder un idContact figé. Voir parcours 2 et 3, §6.
Je veux ajouter une nouvelle fiche à un super-contact existant sans toucher à celles déjà rattachées : quel appel dois-je faire exactement ?
Un PUT avec contacts contenant la liste complète — les fiches déjà rattachées plus la nouvelle. Omettre les anciennes les détache, ça n'est pas additif. Voir parcours 3.
Comment retirer proprement un interlocuteur (super-contact) d'un fournisseur consolidé ?
Il n'existe pas aujourd'hui d'appel de suppression fonctionnel pour ce rattachement précis : la route est déclarée mais échoue à l'exécution. Ne bâtissez pas de flux automatisé dessus tant que ce point n'est pas confirmé résolu — traitez-le comme une opération manuelle ou à vérifier au cas par cas. Voir parcours 5, §6.