Docs
Connexion partenaire →

Niveaux d'accès

Comment les niveaux BASIC, STANDARD et FULL controlent la visibilite des champs

Principe

Chaque clé API possède un niveau d’accès qui determine quels champs sont retournes dans les réponses JSON. Cela permet à la clinique de controler precisement les données partagees avec chaque partenaire.

Le niveau d’accès ne change pas les endpoints accessibles (ca, c’est le role des permissions). Il filtre les champs dans les réponses.

Les trois niveaux

NiveauDescriptionCas d’usage
BASICIdentifiants et infos minimalesAffichage de listes, références croisees
STANDARDInformations metier courantesIntégrations metier classiques
FULLToutes les données disponiblesPartenaires de confiance, synchronisation complete

Configuration par clé

Chaque clé a :

  • Un niveau par défaut qui s’applique à toutes les ressources (STANDARD si la clinique n’en a pas choisi)
  • Des surcharges par ressource pour ajuster finement

Exemple de configuration :

{
  "defaultAccessLevel": "STANDARD",
  "resourceScopes": {
    "patient": "FULL",
    "client": "BASIC"
  }
}

Dans cet exemple :

  • /patients retourne tous les champs (FULL)
  • /clients retourne uniquement id, firstName, lastName (BASIC)
  • /invoices retourne le niveau STANDARD (défaut)

Les noms de ressource des surcharges sont patient, client, appointment, consultation, invoice et stock. Le niveau d’une ressource s’applique aux routes qui commencent par son chemin, sauf /appointments/types et /appointments/available-slots : le catalogue des types et les créneaux libres ne sont pas des rendez-vous (ni animal ni client), ils rendent tous leurs champs quel que soit le niveau.

Champs par ressource

En BASIC et en STANDARD, la réponse ne garde que les champs listés. En FULL, rien n’est filtré : la réponse porte tous les champs que la route renvoie, y compris ceux qui ne sont pas dans les tableaux ci-dessous. Le filtre s’applique au premier niveau de l’objet, de chaque objet d’une liste, ou de chaque élément d’une page (items, la pagination totalCount, limit, offset, hasMore étant gardée). Une réponse d’erreur n’est jamais filtrée : elle garde son message.

Patient

ChampBASICSTANDARDFULL
idxxx
namexxx
speciesxxx
breedxxx
sexxxx
clientIdxx
birthDatexx
microchipNumberxx
createdAtxx
tous les autres champs de la fiche (photoUrl, updatedAt…)x

Client

ChampBASICSTANDARDFULL
idxxx
firstNamexxx
lastNamexxx
phonexx
emailxx
createdAtxx
tous les autres champs de la fiche (address, updatedAt…)x

Rendez-vous

ChampBASICSTANDARDFULL
idxxx
patientIdxxx
vetIdxxx
startAt, endAt (horaire)xxx
workflow (avancement : PLANNED, CONFIRMED, WAITING, IN_PROGRESS, TO_BILL, COMPLETED)xxx
category (CANCELLED, NO_SHOW, DECEASED, EMERGENCY, WALK_IN, HOSPITALIZATION, ou null)xxx
clientIdxx
appointmentTypeIdxx
reasonxx
isUrgentxx
arrivedAtxx
calledAtxx
createdAtxx
durationMinutes, salle et les autres champsx

Consultation

ChampBASICSTANDARDFULL
idxxx
patientIdxxx
vetIdxxx
statusxxx
startedAtxxx
appointmentIdxx
importancexx
validatedAtxx
ownerSummaryxx
ownerDiagnosisxx
ownerInstructionsxx
createdAtxx
patient, client, vet (résumés)xx
tous les autres champsx

Facture

ChampBASICSTANDARDFULL
idxxx
clientIdxxx
invoiceNumberxxx
statusxxx
totalTtcxxx
consultationIdxx
subtotalxx
totalTaxxx
paidAmountxx
remainingAmountxx
createdAtxx
tous les autres champs (lines, totalHt…)x

Stock

ChampBASICSTANDARDFULL
idxxx
productNamexxx
quantityxxx
isLowStockxxx
isOutOfStockxxx
productIdxx
productCategoryxx
minThresholdxx
maxThresholdxx
lastMovementAtxx
updatedAtxx
tous les autres champsx

GET /stock répond une page (items, totalCount, limit, offset, hasMore) : chaque élément de items suit le tableau ci-dessus, la pagination est gardée.

Aujourd’hui, GET /invoices et GET /patients/list répondent des listes avec totaux et statistiques, que le filtre ne sait pas lire : en BASIC et en STANDARD, elles arrivent vides ({}). Lisez les pièces une par une (GET /invoices/{id}, GET /patients/{id}), ou demandez le niveau FULL.

esc
↵ ouvrir↑↓ naviguerrésultats limités à ce site