Afficher vos animaux sur votre propre site (web service)

ÉleveurRefuge

Vous avez déjà un site internet pour votre élevage ou votre refuge, et vous voulez y présenter vos animaux sans les saisir deux fois ? Le web service des animaux est une adresse web qui renvoie les informations publiques de vos animaux au format JSON, un format lisible par les sites internet. Votre site les lit à chaque visite et les affiche comme vous le souhaitez : vous mettez à jour vos animaux dans l'application, votre site suit tout seul.

Il est disponible pour les espaces Éleveur et Refuge. Si votre refuge propose aussi une pension, seuls les animaux du refuge sont partagés : les animaux confiés par vos clients en pension ne le sont jamais. Un espace uniquement pension n'a pas d'animaux à partager.

Activer le web service

  1. Ouvrez le menu latéral, rubrique Organisation > Réglages.
  2. Touchez la ligne Page publique et site.
  3. Dans la carte Vos animaux sur votre propre site, activez Autoriser le web service des animaux.

Le réglage s'enregistre aussitôt : l'adresse du web service s'affiche avec le bouton Copier l'adresse, suivie d'un exemple prêt à coller dans une page de votre site et du bouton Copier l'exemple. Transmettez l'un ou l'autre à la personne qui s'occupe de votre site.

Le web service est désactivé par défaut. Il est indépendant de votre site internet Son espace santé : il fonctionne même si celui-ci est désactivé (les liens vers vos pages publiques sont alors vides).

Voir aussi Page publique et site : si vous n'avez pas de site internet, celui fourni par Son espace santé présente déjà vos animaux, sans aucun code.

Ce qui est partagé, et ce qui ne l'est jamais

Le web service ne partage que ce qu'un visiteur voit déjà sur votre page publique.

PourInformations partagées
Tous les animauxNom, espèce, race, sexe, date de naissance, description, photo principale, dernier poids, LOF et confirmation, tests génétiques. Une galerie de photos, tirée des publications publiques du journal de l'animal (12 photos au plus par animal).
ÉleveurDisponibilité de l'étalon et conditions de saillie (seulement si l'étalon est indiqué disponible). Les portées en cours, avec leurs chiots et leur statut (disponible, réservé, vendu).
RefugeStatut (à l'adoption, en famille d'accueil, réservé), catégorie, histoire, caractère, ententes avec les autres animaux et les enfants, profil d'adoptant idéal, morsures et port de la muselière.
Jamais partagés : numéro de puce, passeport, santé, identité de la famille d'accueil, emplacement dans le refuge, commentaires internes, étiquettes, publications du journal qui ne sont pas publiques.

Ne figurent pas non plus dans la liste : les animaux masqués ou archivés et, pour un refuge, les animaux en quarantaine ou non visibles sur la page publique.

Pour votre webmaster

Cette partie s'adresse à la personne qui réalise votre site internet.

L'adresse

L'application affiche l'adresse exacte de votre web service. Elle a la forme https://server.sonespacesante.com/fr/organization/ws_public/<ID>/PublicAnimals/, où <ID> est le numéro de votre organisation. Remplacez fr par en, de, it, es ou pt pour obtenir les noms d'espèce dans une autre langue.

Paramètres facultatifs, à ajouter après l'adresse (?species=…&litters=all) :

  • species=<code> : seulement les animaux d'une espèce, désignée par son code (le champ species.code de la réponse).
  • litters=all : inclut aussi les portées terminées ; par défaut, seules les portées en cours sont renvoyées.
  • lang=<code> : langue des noms d'espèce, à la place de celle de l'adresse.

Utilisation

  • L'adresse s'appelle directement depuis le navigateur des visiteurs, depuis n'importe quel site : pas de clé, pas de connexion, pas de serveur intermédiaire nécessaire.
  • Les réponses sont gardées en cache 5 minutes : une modification faite dans l'application peut mettre jusqu'à 5 minutes à apparaître.
  • Chaque visiteur est limité à 90 appels par minute, largement assez pour un affichage normal.
  • Si le web service n'est pas activé, l'adresse répond avec une erreur 403 et le code PublicApiDisabled. Si l'organisation n'existe pas, elle répond avec une erreur 404 et le code OrganizationNotFound.
  • Les adresses de photo (photo, photos[].url) sont stables et redirigent vers l'image : utilisez-les telles quelles dans <img src>. Ne recopiez pas l'adresse vers laquelle elles redirigent : elle expire au bout d'une heure.

Exemple de réponse

Réponse raccourcie, pour un élevage :

{
  "success": true, "version": 1, "generatedAt": "2026-10-04T13:00:00Z",
  "organization": {"id": 12, "name": "…", "types": ["breeder"], "logo": "https://…",
                   "city": "Lyon", "publicUrl": "https://apps.sonespacesante.com/elevage/…-12"},
  "count": 1,
  "animals": [{
    "id": 345, "activity": "breeder", "name": "Rex",
    "species": {"code": "…", "name": "Chien"}, "race": "Berger australien",
    "gender": "m", "birthday": "2022-01-01", "isDead": false, "description": "…",
    "photo": "https://…", "photos": [{"url": "https://…", "date": "2026-09-01"}],
    "weight": {"value": 24.5, "unit": "kg", "date": "2026-09-01"},
    "publicUrl": "https://…/345", "isLOF": true, "isConfirmed": true, "geneticTests": "",
    "breeder": {"isStud": true, "stud": {"fee": 800, "terms": "…"}}
  }],
  "litters": [{
    "id": 8, "name": "Rex x Luna 2026", "year": 2026, "matingDate": "2026-07-01",
    "birthDate": null, "expectedBirthDate": "2026-09-02", "description": "…", "isClosed": false,
    "father": {"id": 345, "name": "Rex", "race": "…", "photo": "https://…"},
    "mother": {…},
    "counts": {"total": 6, "available": 3, "reserved": 2, "sold": 1},
    "puppies": [{"id": 901, "name": "Bleu", "gender": "m", "birthday": "2026-09-02", "race": "…",
                 "color": "#3366ff", "photo": "https://…", "photos": [], "status": "available"}]
  }]
}

Pour un refuge, chaque animal porte un bloc refuge à la place du bloc breeder :

"refuge": {
  "status": "ADOPTABLE" | "FOSTER" | "RESERVED" | null, "statusSince": "…",
  "adoptionAvailable": true, "category": {"name": "…", "color": "…"} | null,
  "history": "…", "character": "…", "agreements": "…", "adoptingProfile": "…",
  "biting": false, "muzzle": false
}

Le statut d'un chiot (status) vaut available (disponible), reserved (réservé) ou sold (vendu). Celui d'un animal de refuge vaut ADOPTABLE (à l'adoption), FOSTER (en famille d'accueil) ou RESERVED (réservé).

Exemple d'affichage

C'est l'exemple proposé par le bouton Copier l'exemple : il affiche la photo, le nom et la description de chaque animal. Remplacez l'adresse par la vôtre.

<div id="animals"></div>
<script>
fetch('https://server.sonespacesante.com/fr/organization/ws_public/<ID>/PublicAnimals/')
  .then(r => r.json())
  .then(data => {
    const list = document.getElementById('animals');
    data.animals.forEach(a => {
      const card = document.createElement('div');
      if (a.photo) {
        const img = document.createElement('img');
        img.src = a.photo; img.alt = a.name; img.width = 200;
        card.appendChild(img);
      }
      const name = document.createElement('h3');
      name.textContent = a.name;
      const text = document.createElement('p');
      text.textContent = a.description;
      card.append(name, text);
      list.appendChild(card);
    });
  });
</script>

Les textes sont insérés avec textContent, jamais avec innerHTML : c'est la bonne pratique pour afficher sans risque des textes venus d'ailleurs.

Questions fréquentes

J'ai modifié un animal, mais mon site affiche encore l'ancienne version.

Les informations sont gardées en mémoire 5 minutes : patientez quelques minutes puis rechargez la page de votre site.

Comment arrêter le partage ?

Désactivez Autoriser le web service des animaux dans Réglages > Page publique et site (le changement s'enregistre aussitôt). L'adresse cesse de renvoyer vos animaux, au plus tard 5 minutes après.

Puis-je ne pas afficher un animal en particulier ?

Oui : masquez-le ou archivez-le. Pour un refuge, vous pouvez aussi décocher sa visibilité sur la page publique dans sa fiche.