Le Guide de l'utilisateur de l'API des rappels et des avis de sécurité canadiens

Table des matières

Introduction

Le site Web des rappels et des avis de sécurité réunit les renseignements de Santé Canada, de Transports Canada et de l'Agence canadienne d'inspection des aliments afin d'offrir aux consommateurs canadiens un endroit unique où s'informer sur les rappels et les avis de sécurité.

Cette interface de programmation d'applications (API) permet aux concepteurs d'accéder à ces renseignements en format JSON afin de les utiliser dans leurs propres applications.

L'adresse URI de base du site Web des rappels et des avis de sécurité est http://canadiensensante.gc.ca/recall-alert-rappel-avis/index-fra.php. Toute requête est effectuée par l'entremise de cette adresse URI.

Récents rappels

La plupart des applications commenceraient avec les récents rappels. Cette requête affiche les 15 derniers rappels de chaque catégorie.

Paramètres

Il n'y a qu'un seul paramètre dans la requête : la langue.

Paramètre de langue pour la requête
Paramètre Définition Valeurs Requis? Notes
/api/recent/lang Change la langue
  • en - Anglais
  • fr - Français
Oui Détermine si la réponse est affichée en anglais ou en français.

Il est possible d'accéder aux récents rappels par l'entremise de ces adresses URI :

Format de réponse

La réponse est en format JSON et contient un objet résultat qui comporte cinq objets :

Objets retournés par la réponse
Code Valeur
ALL Les 15 derniers rappels de toutes les catégories, affichés dans un tableau de 15 objets de rappel
FOOD Les 15 derniers rappels de la catégorie aliments, affichés dans un tableau de 15 objets de rappel
VEHICLES Les 15 derniers rappels de la catégorie véhicules, affichés dans un tableau de 15 objets de rappel
HEALTH Les 15 derniers rappels de la catégorie produits de santé, affichés dans un tableau de 15 objets de rappel
CPS Les 15 derniers rappels de la catégorie produits de consommation, affichés dans un tableau de 15 objets de rappel

Chaque objet de rappel contient les valeurs suivantes :

Valeurs des objets de rappel
Code Valeur
recallId Le numéro d'identification du rappel
title Le titre du rappel
category Un groupe des catégories dans lesquelles le rappel a été publié (habituellement, une seule catégorie est visible) :
1 pour les aliments, 2 pour les véhicules, 3 pour les produits de santé, 4 pour les produits de consommation
date_published Horodatage en format UNIX de la date d'affichage
url Une adresse URL partielle qui fournit tous les détails du rappel en format JSON.

Exemple de réponse

{
    "results": {
        "ALL": [{  //Toutes les catégories
            "recallId": "41799",
            "title": "Enjoying  Leftover Food Safely",
            "category": ["1"],
            "date_published": 1412899200,
            "url": "\/api\/41799\/en"
        }],
        "FOOD": [{  //Rappels et avis de sécurité  concernant les aliments, catégorie 1
            "recallId": "41799",
            "title": "Enjoying  Leftover Food Safely",
            "category": ["1"],
            "date_published": 1412899200,
            "url": "\/api\/41799\/en"
        }],
        "VEHICLE": [{  //Rappels et avis de sécurité  concernant les véhicules, catégorie 2
            "recallId": "41163",
            "title": "FORD  issued a recall on the ESCAPE,  and FOCUS  models",
            "category": ["2"],
            "date_published": 1407801600,
            "url": "\/api\/41163\/en"
        }],
        "HEALTH": [{  //Rappels et avis de sécurité  concernant les produits de santé, catégorie 3
            "recallId": "41655",
            "title": "Health  Canada takes action to stop import of products from three sites in India",
            "category": ["3"],
            "date_published": 1412035200,
            "url": "\/api\/41655\/en"
        }],
        "CPS": [{  //Rappels et avis de sécurité  concernant les produits de consommation, catégorie 4
            "recallId": "41765",
            "title": "Shoppers  Drug Mart recalls \"Novelty Toy\" Halloween Squish Ball",
            "category": ["4"],
            "date_published": 1412899200,
            "url": "\/api\/41765\/en"
        }],
    }
}			

Exemple de jQuery

Exemple d'une fonctionnalité qui ajoute une liste des plus récents rappels parmi toutes les catégories à un élément avec le numéro d'identification du rappel "#responses", selon la langue sélectionnée :

function  getRecent(lang) {
    var base = 'http://canadiensensante.gc.ca/recall-alert-rappel-avis';
    var uri = base + '/api/recent/' + lang;
    $.ajax({
        url:uri,
        type:'GET',
        Accept:"application/json",
        dataType: 'json',
        success:function(data){
            var frag = document.createDocumentFragment();
            for (var i=0; i<data.results.ALL.length; i++) {
                var a =  document.createElement("a");
                var title  = document.createTextNode(data.results.ALL[i].title);
                a.appendChild(title);
                a.setAttribute("href", base + data.results.ALL[i].url);
                frag.appendChild(a);
                frag.appendChild(document.createElement("br"));
            }
            $("#responses")[0].appendChild(frag);
        },
         error:function(error){
        },
    });
    return;
};			

Détails du rappel

Lorsque vous faites une requête pour les détails du rappel, vous n'avez qu'à spécifier deux paramètres dans l'appel API : le numéro d'identification du rappel du produit, et la langue (en ou fr) dans laquelle vous aimeriez recevoir la réponse.

Paramètres

Paramètres de détails du rappel
Paramètre Définition Valeurs Requis? Notes
/api/##### Affiche les détails du rappel ##### - Affiche le numéro d'identification du produit recherché Oui Les numéros d'identification de rappel peuvent être trouvés en effectuant une requête parmi les récents rappels à l'aide de l'API ou par le biais du site Web des rappels et des avis de sécurité.
/api/#####/lang Change la langue
  • en - Anglais
  • fr - Français
Non, mais l'anglais est la langue par défaut si elle n'est pas spécifiée Détermine si la réponse est affichée en anglais ou en français.

Format de réponse

Valeurs de format de réponse
Code Valeur
url L'adresse URL du rappel sur le site Web complet des rappels et des avis de sécurité
recallId Le numéro d'identification du rappel
start_date Horodatage en format UNIX de la date de début du rappel
date_published Horodatage en format UNIX de la date d'affichage
category La catégorie dans laquelle le rappel a été publié; 1 pour les aliments, 2 pour les véhicules, 3 pour les produits de santé, 4 pour les produits de consommation.
panels Des détails supplémentaires au sujet du rappel. Un « panneau » correspond à environ une section du rappel sur la page Web complète. De ces panneaux, les renseignements suivants sont les plus susceptibles de vous intéresser.
  • basic_details: Un court sommaire du rappel
  • cms_issue_problem: Des détails concernant le problème. Ne sont pas affichés pour tous les rappels.
  • cms_who_what_consumer: Des directives aux consommateurs (p. ex. retourner le produit au commerçant). Généralement indiquées dans les rappels de produits de consommation.
  • details: Des détails concernant le problème. Ne sont pas affichés pour tous les rappels.
  • product_1: Des détails concernant le produit touché. Pour un rappel touchant plus d'un produit, des panneaux consécutifs intitulés product_2,product_3, et ainsi de suite seront ajoutés.
  • more_information: Des références à d'autres informations reliées au sujet.
  • media_enquiries: Les coordonnées pour les demandes de renseignements des médias.
  • public_enquiries: Les coordonnées pour les demandes de renseignement du public.
  • id_numbers: Le numéro d'identification du rappel.

Exemple de réponse

{
    "url": "http:\/\/canadiensensante.gc.ca\/recall-alert-rappel-avis\/hc-sc\/2014\/41799a-eng.php",
    "recallId": "RA-41799",
    "title": "\n  Enjoying Leftover Food Safely",
    "start_date": 1412899200,
    "date_published": -62169984000,
    "category": ["1"],
    "panels": [{
        "panelName": "basic_details",
        "title": "Summary",
        "text": "<b>Issue:<\/b>  Food Safety, Important Safety  Information<BR\/><b>Audience:<\/b> General  Public<BR\/><b>Category:<\/b> Other<BR\/><b>Alert  type:<\/b> Information Update<BR\/><b>Department:<\/b>  Health Canada<BR\/>"
    }, {
        "panelName": "cms_issue_problem",
        "title": "Issue",
        "text": "\n  Many Canadians enjoy eating leftovers from family dinners and from dining out  as a time-saving and budget-friendly meal. It is important to remember that  leftovers need to be properly handled to help reduce the risk of foodborne  illness. It's estimated that there are approximately 4 million cases of  food-related illnesses in Canada every year. Many of these illnesses could be  prevented by following proper food handling and preparation techniques.\n\n  Here are some tips to help make sure your leftovers are safe to  eat:\n<h3>\n Handling leftovers<\/h3>\n<ul>\n  <li>\n  Wash your hands before and  after handling leftovers. Wash all utensils, dishes and work surfaces with hot  soapy water.<\/li>\n <li>\n   Keep foods out of the danger zone, between 4\u00b0C (40\u00b0F) and  60\u00b0C (140\u00b0F), to prevent the growth of harmful bacteria. Throw away  any cooked food left in the danger zone for more than two hours.<\/li>\n  <li>\n  Never rely on your nose,  eyes or taste buds to judge the safety of food. You cannot tell if food is  contaminated by its look, smell or taste. <strong>When in doubt, throw it  out!<\/strong><\/li>\n<\/ul>\n<h3>\n Cooling  leftovers<\/h3>\n<ul>\n <li>\n  Refrigerate or freeze all leftovers within  two hours to minimize the chance of bacteria growing.<\/li>\n  <li>\n  Refrigerate all hot  leftovers promptly in uncovered, shallow containers so they cool quickly.<\/li>\n  <li>\n  Very hot items can first be  cooled at room temperature and then refrigerated once the steaming  stops.<\/li>\n <li>\n  Leave  the lid off or wrap loosely until the food is cooled to refrigeration  temperature.<\/li>\n<\/ul>\n<h3>\n Storing  leftovers<\/h3>\n<ul>\n <li>\n  Always use a clean container or leak-proof  plastic bag to store leftovers.<\/li>\n <li>\n  Meat from large cooked birds should be cut,  deboned and stored refrigerated or frozen for safety.<\/li>\n  <li>\n  Keep different types of  leftovers separate to prevent cross contamination.<\/li>\n  <li>\n  Don't overstock the  refrigerator - allow cool air to circulate freely.<\/li>\n  <li>\n  Eat refrigerated leftovers  within 2 to 4 days, or freeze them for later use. The recommended refrigeration  times may vary slightly, depending on the food: <a  href=\"http:\/\/canadiensensante.gc.ca\/eating-nutrition\/safety-salubrite\/storage-entreposage-eng.php\">follow  these guidelines<\/a> to be safe.<\/li>\n <li>\n  Label the leftovers so you can identify the  contents and include the date, to make sure they aren't stored too  long.<\/li>\n<\/ul>\n<h3>\n Defrosting  leftovers<\/h3>\n<ul>\n <li>\n  Thaw frozen leftovers in the refrigerator or  using the \"defrost\" setting on your microwave. Make sure leftovers  are completely defrosted before reheating.<\/li>\n <li>\n  Consume or cook the leftovers immediately  after they have thawed.<\/li>\n<\/ul>\n<h3>\n Reheating  leftovers<\/h3>\n<ul>\n <li>\n  When reheating leftovers, cook to a safe  internal temperature of 74\u00b0C (165\u00b0F).<\/li>\n <li>\n  Use a digital food thermometer to check the  internal temperature.<\/li>\n <li>\n  Bring gravies, soups and sauces to a full,  rolling boil and stir during the process.<\/li>\n <li>\n  Discard uneaten leftovers after they have  been reheated - <strong>don't reheat leftovers more than  once<\/strong>.<\/li>\n<\/ul>\n<h3>\n Reheating in a  microwave<\/h3>\n<ul>\n <li>\n  Use only containers or plastic wrap designed  for use in the microwave.<\/li>\n <li>\n  Loosen the lid or wrap to allow steam to  escape.<\/li>\n <li>\n  Stop  the microwave midway through reheating and stir the food so that the heat is  evenly distributed.<\/li>\n <li>\n   Rotate the plate several times during cooking if your microwave does not  have a rotating tray.<\/li>\n<\/ul>"
    }, {
        "panelName": "more_information",
        "title": "For  more information",
        "text": "<p><h3>\n  Government of Canada<\/h3>\n<ul>\n <li>\n  <a  href=\"http:\/\/www.canadiensensante.gc.ca\/eating-nutrition\/safety-salubrite\/leftovers-restes-eng.php\">Food  safety tips for leftovers<\/a><\/li>\n <li>\n  <a  href=\"http:\/\/www.canadiensensante.gc.ca\/eating-nutrition\/safety-salubrite\/storage-entreposage-eng.php\">Safe  food storage<\/a><\/li>\n <li>\n  <a  href=\"http:\/\/www.canadiensensante.gc.ca\/eating-nutrition\/safety-salubrite\/fours-micro-ovens-eng.php\">Microwaves<\/a><\/li>\n  <li>\n  <a  href=\"http:\/\/www.canadiensensante.gc.ca\/eating-nutrition\/safety-salubrite\/cook-temperatures-cuisson-eng.php\">Safe  internal cooking temperatures<\/a><\/li>\n <li>\n  <a href=\"http:\/\/www.canadiensensante.gc.ca\/eating-nutrition\/poisoning-intoxication\/index-eng.php\">Food  Poisoning<\/a><\/li>\n<\/ul>\n<h3>\n Partnership for  Consumer Food Safety Education<\/h3>\n<ul>\n <li>\n  <a  href=\"http:\/\/www.befoodsafe.ca\/\">Be Food  Safe<\/a><\/li>\n<\/ul>\n<p>\n Stay connected with  Health Canada, and receive the latest advisories and product recalls using  <a  href=\"http:\/\/www.hc-sc.gc.ca\/home-accueil\/sm-ms\/index-eng.php\">social  media<\/a> tools.<\/p><\/p>\n"
    }, {
        "panelName": "media_enquiries",
        "title": "Media  enquiries",
        "text": "\n  Health Canada<br \/>\n 613-957-2983"
    }, {
        "panelName": "public_enquiries",
        "title": "Public  enquiries",
        "text": "\n  613-957-2991<br \/>\n 1-866 225-0709"
    }, {
        "panelName": "id_numbers",
        "title": "Identification  number",
        "text": "<b>Identification  number:<\/b> RA-41799<BR\/>"
    }]
}			

Exemple de jQuery

Exemple d'une fonctionnalité qui ajoute le titre et le sommaire d'un rappel à un élément avec le numéro d'identification du rappel "#responses", selon le numéro d'identification du rappel et la langue sélectionnée :

function  getRecall(id, lang) {
    var base = 'http://canadiensensante.gc.ca/recall-alert-rappel-avis';
    var uri = base + '/api/' + id + '/' + lang;
    $.ajax({
        url:uri,
        type:'GET',
        Accept:"application/json",
        dataType: 'json',
        success:function(data){
            console.log(data.title);
            var frag = document.createDocumentFragment();
            var h2 =  document.createElement("h2");
            var title  = document.createTextNode(data.title);
            var p =  document.createElement("p");
            var text =  document.createTextNode(data.panels[0].text);
            h2.appendChild(title);
            p.appendChild(text);
            frag.appendChild(h2);
            frag.appendChild(p);
            $("#responses")[0].appendChild(frag);
        },
        error:function(error){
        },
    });
    return;
};			

Recherche

L'API offre une fonctionnalité de recherche limitée.

Paramètres

Veuillez prendre note que ces paramètres sont passés dans la chaîne d'interrogation :

Paramètres de la chaîne d'interrogation
Paramètre Définition Valeurs Requis? Notes
/api/search?search=text Effectue la recherche dans la base de données text - La chaîne de caractères à rechercher dans la base de données Oui La réponse renfermera les résultats de recherche pour text. D'autres paramètres sont facultatifs, voir ci-dessous.
&lang=lang Change la langue
  • en - Anglais
  • fr - Français
Non, mais l'anglais est la langue par défaut si elle n'est pas spécifiée Détermine si la réponse est affichée en anglais ou en français.
&cat=n Sélectionne des catégories précises pour effectuer la recherche
  • 1 - Aliments
  • 2 - Véhicules
  • 3 - Produits de santé
  • 4 - Produits de consommation
Non, effectue la recherche dans toutes les catégories, si aucune n'est spécifiée. Détermine si la réponse est affichée en anglais ou en français.
&lim=n Restreint le nombre de résultats Une valeur positive entière n Non, établit la limite à cinq si aucune valeur n'est spécifiée. Si une valeur est spécifiée, la réponse comptera exactement n résultats.
&off=n Décale les résultats de la recherche Une valeur positive entière n Non, utilise zéro par défaut si aucune valeur n'est spécifiée. Si une valeur est spécifiée, la réponse commencera seulement à partir du ne résultat. Par exemple, si off=5, la réponse commencera à partir du 6e résultat.

Exemple d'adresse URI d'une requête :

Format de réponse

Celle-ci est très semblable à la réponse obtenue d'après une requête des plus récents rappels, à l'exception de :

  • Le nombre de résultats obtenus dans la réponse n'est pas limité à 15; il peut être changé à l'aide du paramètre lim
  • Le nombre de résultats trouvés dans la base de données est indiqué à la fin de la réponse, comme results_count
  • Le department d'où proviennent les renseignements du rappel est indiqué

Autrement, la disposition est la même que celle des récents rappels.

Les objets recall comportent :

Valeurs des objets recall
Code Valeur
recallId Le numéro d'identification du rappel; veuillez prendre note que ce numéro du rappel est le même numéro que celui utilisé sur le site Web des rappels et des avis de sécurité. Ce numéro est aussi utilisé pour récupérer les détails du rappel (consultez la section suivante pour de plus amples renseignements).
title Le titre du rappel
department Le ministère d'où proviennent les renseignements du rappel est indiqué
category La catégorie dans laquelle le rappel a été publié; 1 pour les aliments, 2 pour les véhicules, 3 pour les produits de santé, 4 pour les produits de consommation
date_published Horodatage en format UNIX de la date d'affichage
url Une adresse URL partielle pour obtenir davantage de détails concernant le rappel.

Exemple de réponse 

{
    "results": [{
        "recallId": "41705",
        "title": "Next  by Nature brand Dark Chocolate Cherries recalled due to undeclared peanut",
        "department": "Canadian  Food Inspection Agency",
        "date_published": 1412208000,
        "category": ["1"],
        "url": "http:\/\/canadiensensante.gc.ca\/api\/41705\/en"
    }, {
        "recallId": "41349",
        "title": "EBM  brand biscuits recalled due to undeclared milk",
        "department": "Canadian  Food Inspection Agency",
        "date_published": 1409875200,
        "category": ["1"],
        "url": "http:\/\/canadiensensante.gc.ca\/api\/41349\/en"
    }, {
        "recallId": "41193",
        "title": "Allergens  and food safety at school - What's in your child's lunch?",
        "department": "Health  Canada",
        "date_published": 1408492800,
        "category": ["1"],
        "url": "http:\/\/canadiensensante.gc.ca\/api\/41193\/en"
    }, {
        "recallId": "40899",
        "title": "A1  Mountain Globe brand curry powders recalled due to undeclared peanuts and mustard",
        "department": "Canadian  Food Inspection Agency",
        "date_published": 1406764800,
        "category": ["1"],
        "url": "http:\/\/canadiensensante.gc.ca\/api\/40899\/en"
    }, {
        "recallId": "40397",
        "title": "Kawartha  Dairy brand Chocolate Ice Cream recalled due to improperly declared  peanuts",
        "department": "Canadian  Food Inspection Agency",
        "date_published": 1404086400,
        "category": ["1"],
        "url": "http:\/\/canadiensensante.gc.ca\/api\/40397\/en"
    }],
    "results_count": 90
}			

Exemple de jQuery

Exemple d'une fonctionnalité qui ajoute une liste des résultats de recherche à un élément avec le numéro d'identification du rappel "#responses", selon le texte recherché et la langue sélectionnée (et d'autres paramètres, si nécessaire) :

function doSearch(lang, text, cat, lim, off) {
    var base = 'http://canadiensensante.gc.ca/recall-alert-rappel-avis';
    var uri = base + '/api/search?search=' + text + '&lang=' + lang + '&lim=' + lim + '&off=' + off;
    $.ajax({
        url:uri,
        type:'GET',
        Accept:"application/json",
        dataType: 'json',
        success:function(data){
            var frag =  document.createDocumentFragment();
            for (var i=0;i<data.results.length;i++) {
                var a =  document.createElement("a");
                var title  = document.createTextNode(data.results[i].title);
                a.appendChild(title);
                a.setAttribute("href", data.results[i].url);
                frag.appendChild(a);
                frag.appendChild(document.createElement("br"));
            }
            $("#responses")[0].appendChild(frag);
        },
        error:function(error){
        },
    });
    return;
};			
Date de modification :