Référence de l’API partenaires
Catalogue
Lire le catalogue de la clinique (actes et produits, appelés Treats dans l'application) avec le prix pratiqué par un site, l'arbre des catégories, et chercher un acte ou un produit par son nom. Lecture seule : aucune route ne crée ni ne modifie un article, une catégorie ou un prix. Seul le catalogue propre à l'organisation est visible, jamais le référentiel des centrales. Droit exigé : catalog:read.
Lire l'arbre des catégories
GET/api/partner/v1/catalog/categories#
Rend toutes les catégories du catalogue de l'organisation, actives et inactives, sous forme d'arbre : les racines dans items, les sous-catégories dans children. Tri à chaque niveau : produits puis actes, ordre d'affichage choisi par la clinique, puis nom. L'arbre tient en une seule réponse (nextCursor toujours null). Les catégories sont communes à l'organisation : aucun site n'est à préciser.
Paramètres
| typerequête · enum | Restreint à l'arbre des produits ou à celui des actes. Insensible à la casse. Absent : les deux. |
Réponse
200Les catégories racines et leurs descendantes.
Champs de la réponse (2)
| itemsCatalogCategory[] | |
| iduuid | Identifiant de la catégorie. |
| codestring | Code de la catégorie. peut être null |
| namestring | Nom de la catégorie. |
| parentIduuid | Catégorie parente ; |
| itemTypeenum | Type des articles rangés dans la catégorie. PRODUCTSERVICEpeut être null |
| activeboolean |
|
| childrenCatalogCategory[] | Sous-catégories, triées comme les racines. Liste vide pour une feuille. |
| nextCursorstring | Curseur opaque de la page suivante, à repasser tel quel dans |
Erreurs propres à cette opération
| 400 INVALID_FIELD |
|
Et les erreurs communes à toutes les opérations : erreurs et limites.
Lister les articles du catalogue
GET/api/partner/v1/catalog/items#
Rend une page des articles du catalogue de l'organisation, actifs et inactifs, avec le prix effectif du site visé : le prix propre du site s'il en a un, sinon le prix de l'organisation. Le site se donne par site_id ou Treats-Site-Id ; il est implicite quand l'organisation n'a ouvert qu'un site à l'application.
Tri par date de synchronisation (updatedAt) puis identifiant. Un changement de prix au seul site, ou l'entrée en vigueur d'un prix programmé, fait revenir l'article dans updated_since. Les modifications des 60 dernières secondes n'apparaissent qu'aux appels suivants ; la lecture par identifiant est immédiate.
Paramètres
| typerequête · enum | Restreint aux produits ou aux actes. Insensible à la casse. |
| category_idrequête · uuid | Restreint à une catégorie, sous-catégories comprises. |
| qrequête · string | Texte cherché dans le nom ou le code de l'article (contient, insensible à la casse). Les caractères |
| activerequête · boolean |
|
| site_idrequête · uuid | Site dont le prix est rendu. Obligatoire si l'organisation a ouvert plusieurs sites à l'application (ou passer l'en-tête |
| updated_sincerequête · date-time | Ne rend que les articles dont |
| cursorrequête · string | Curseur |
| limitrequête · integer | Nombre d'articles par page, de 1 à 200 (au-delà de 200, ramené à 200). Défaut :50 |
| Treats-Site-Iden-tête · uuid | Site visé, à la place du paramètre |
Réponse
200Une page d'articles.
Champs de la réponse (2)
| itemsCatalogItem[] | |
| iduuid | Identifiant de l'article. |
| typeenum |
PRODUCTSERVICE |
| codestring | Code de l'article dans le catalogue de la clinique. peut être null |
| namestring | Nom de l'article. |
| categoryIduuid | Catégorie de l'article (voir |
| categoryNamestring | Nom de cette catégorie. peut être null |
| vatRatePercentnumber | Taux de TVA en pourcentage ( |
| siteIduuid | Site dont le prix est rendu. |
| priceHtCentsinteger | Prix effectif hors taxes pour ce site, en centimes. |
| priceTtcCentsinteger | Prix effectif toutes taxes comprises pour ce site, en centimes. |
| currencyenum | Devise des montants, toujours EUR |
| priceScopeenum | Origine du prix : SITEORGANIZATION |
| gtinstring | Code GTIN (code-barres) d'un produit. peut être null |
| prescriptionOnlyboolean |
|
| activeboolean |
|
| billableboolean |
|
| updatedAtdate-time | Date de synchronisation : dernière modification de l'article ou d'un prix qui le concerne pour ce site, y compris l'entrée en vigueur d'un prix programmé (minuit, heure de Paris, du jour d'effet). Sert de clé à |
| nextCursorstring | Curseur opaque de la page suivante, à repasser tel quel dans |
Erreurs propres à cette opération
| 400 INVALID_FIELD |
|
| 400 INVALID_SITE_ID |
|
| 404 SITE_NOT_FOUND | Le site demandé n'est pas ouvert à l'application. |
Et les erreurs communes à toutes les opérations : erreurs et limites.
Lire un article du catalogue
GET/api/partner/v1/catalog/items/{id}#
Rend un article du catalogue de l'organisation avec le prix effectif du site visé, le même que celui de la fiche dans l'application. Le site se donne par site_id ou Treats-Site-Id ; il est implicite quand l'organisation n'a ouvert qu'un site. Un article inactif reste lisible. Un article d'une autre organisation, ou du référentiel d'une centrale, répond 404.
Paramètres
| idchemin · uuidrequis | Identifiant de l'article. |
| site_idrequête · uuid | Site dont le prix est rendu. Obligatoire si l'organisation a ouvert plusieurs sites à l'application (ou passer l'en-tête |
| Treats-Site-Iden-tête · uuid | Site visé, à la place du paramètre |
Réponse
200L'article.
Champs de la réponse (17)
| iduuid | Identifiant de l'article. |
| typeenum |
PRODUCTSERVICE |
| codestring | Code de l'article dans le catalogue de la clinique. peut être null |
| namestring | Nom de l'article. |
| categoryIduuid | Catégorie de l'article (voir |
| categoryNamestring | Nom de cette catégorie. peut être null |
| vatRatePercentnumber | Taux de TVA en pourcentage ( |
| siteIduuid | Site dont le prix est rendu. |
| priceHtCentsinteger | Prix effectif hors taxes pour ce site, en centimes. |
| priceTtcCentsinteger | Prix effectif toutes taxes comprises pour ce site, en centimes. |
| currencyenum | Devise des montants, toujours EUR |
| priceScopeenum | Origine du prix : SITEORGANIZATION |
| gtinstring | Code GTIN (code-barres) d'un produit. peut être null |
| prescriptionOnlyboolean |
|
| activeboolean |
|
| billableboolean |
|
| updatedAtdate-time | Date de synchronisation : dernière modification de l'article ou d'un prix qui le concerne pour ce site, y compris l'entrée en vigueur d'un prix programmé (minuit, heure de Paris, du jour d'effet). Sert de clé à |
Erreurs propres à cette opération
| 400 INVALID_SITE_ID |
|
| 404 CATALOG_ITEM_NOT_FOUND | Aucun article de ce catalogue ne porte cet identifiant. |
| 404 SITE_NOT_FOUND | Le site demandé n'est pas ouvert à l'application. |
Et les erreurs communes à toutes les opérations : erreurs et limites.
Chercher un article du catalogue
GET/api/partner/v1/catalog/search#
Recherche plein texte dans le catalogue de l'organisation, la même que celle de la saisie d'un acte dans l'application, classée par pertinence. Chaque résultat est rendu comme par GET /catalog/items, avec le prix du site visé ; seuls les articles du catalogue de l'organisation sont rendus, ce qui peut donner moins de résultats que limit. Pas de pagination : nextCursor est toujours null.
Si le moteur de recherche est indisponible, la route répond 503 SEARCH_UNAVAILABLE avec Retry-After: 30, jamais une liste vide. En attendant, GET /catalog/items?q= cherche dans le nom et le code.
Paramètres
| qrequête · stringrequis | Texte cherché. |
| speciesrequête · string | Code d'espèce de l'animal ( |
| modulerequête · string | Module de consultation ( |
| site_idrequête · uuid | Site dont le prix est rendu. Obligatoire si l'organisation a ouvert plusieurs sites à l'application (ou passer l'en-tête |
| limitrequête · integer | Nombre maximal de résultats, de 1 à 100 (au-delà, ramené à 100). Défaut :20 |
| Treats-Site-Iden-tête · uuid | Site visé, à la place du paramètre |
Réponse
200Les meilleurs résultats, du plus pertinent au moins pertinent.
Champs de la réponse (2)
| itemsCatalogItem[] | |
| iduuid | Identifiant de l'article. |
| typeenum |
PRODUCTSERVICE |
| codestring | Code de l'article dans le catalogue de la clinique. peut être null |
| namestring | Nom de l'article. |
| categoryIduuid | Catégorie de l'article (voir |
| categoryNamestring | Nom de cette catégorie. peut être null |
| vatRatePercentnumber | Taux de TVA en pourcentage ( |
| siteIduuid | Site dont le prix est rendu. |
| priceHtCentsinteger | Prix effectif hors taxes pour ce site, en centimes. |
| priceTtcCentsinteger | Prix effectif toutes taxes comprises pour ce site, en centimes. |
| currencyenum | Devise des montants, toujours EUR |
| priceScopeenum | Origine du prix : SITEORGANIZATION |
| gtinstring | Code GTIN (code-barres) d'un produit. peut être null |
| prescriptionOnlyboolean |
|
| activeboolean |
|
| billableboolean |
|
| updatedAtdate-time | Date de synchronisation : dernière modification de l'article ou d'un prix qui le concerne pour ce site, y compris l'entrée en vigueur d'un prix programmé (minuit, heure de Paris, du jour d'effet). Sert de clé à |
| nextCursorstring | Curseur opaque de la page suivante, à repasser tel quel dans |
Erreurs propres à cette opération
| 400 INVALID_FIELD |
|
| 400 INVALID_SITE_ID |
|
| 404 SITE_NOT_FOUND | Le site demandé n'est pas ouvert à l'application. |
| 503 SEARCH_UNAVAILABLE | Le moteur de recherche est momentanément indisponible. Réessayer après le délai de l'en-tête |
Et les erreurs communes à toutes les opérations : erreurs et limites.