{"id":21667,"date":"2026-06-08T08:50:06","date_gmt":"2026-06-08T06:50:06","guid":{"rendered":"https:\/\/www.drugshortage.ch\/?page_id=21667"},"modified":"2026-09-14T20:34:14","modified_gmt":"2026-09-14T18:34:14","slug":"accord-utilisation","status":"publish","type":"page","link":"https:\/\/www.drugshortage.ch\/index.php\/accord-utilisation\/","title":{"rendered":"Accord utilisation"},"content":{"rendered":"\n<!-- ============================================================\n     drugshortage.ch API \u2013 Accord d'utilisation\n     Page : \"accord-utilisation\" (public, avec ?api_key=xxx)\n     Version 1.2 \u2013 transmission \u00e0 des tiers, journalisation, sources de donn\u00e9es, limites\n                   r\u00e9vision r\u00e9dactionnelle : base l\u00e9gale art. 31 LPD (RGPD en parall\u00e8le),\n                   adresse e-mail corrig\u00e9e sans lien mailto, affichage des symboles,\n                   avis de version en info au lieu d'erreur\n     ============================================================ -->\n<style>\n  #nv-outer { width:100%; max-width:720px; box-sizing:border-box; font-family:'Segoe UI',Arial,sans-serif; font-size:13px; color:#2d3748; margin:0 auto; }\n  .nv-card { background:#fff; border:1px solid #e2e8f0; border-radius:12px; padding:28px 32px; margin-bottom:16px; box-shadow:0 1px 4px rgba(0,0,0,.06); }\n  .nv-header { background:#1a202c; color:#fff; border-radius:10px; padding:20px 24px; margin-bottom:20px; display:flex; align-items:center; gap:16px; }\n  .nv-header-icon { font-size:28px; }\n  .nv-header h2 { font-size:16px; font-weight:700; margin:0 0 3px; }\n  .nv-header p  { font-size:12px; color:#a0aec0; margin:0; }\n  .nv-key-info { background:#f8fafc; border:1px solid #e2e8f0; border-radius:8px; padding:12px 16px; margin-bottom:18px; display:flex; gap:16px; flex-wrap:wrap; }\n  .nv-key-field { flex:1; min-width:150px; }\n  .nv-key-label { font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.5px; color:#718096; margin-bottom:3px; }\n  .nv-key-value { font-size:13px; font-weight:600; color:#2d3748; }\n  .nv-key-tier { display:inline-block; padding:2px 9px; border-radius:8px; font-size:11px; font-weight:700; background:#fefcbf; color:#744210; }\n\n  .nv-text { background:#f8fafc; border:1.5px solid #e2e8f0; border-radius:8px; padding:20px 22px; max-height:400px; overflow-y:auto; margin-bottom:18px; line-height:1.7; font-size:13px; }\n  .nv-text h3 { font-size:14px; font-weight:700; color:#1a202c; margin:16px 0 6px; }\n  .nv-text h3:first-child { margin-top:0; }\n  .nv-text p  { margin:0 0 10px; color:#4a5568; }\n  .nv-text ul { margin:0 0 10px 20px; color:#4a5568; }\n  .nv-text li { margin-bottom:4px; }\n  .nv-text strong { color:#2d3748; }\n  .nv-text table { width:100%; border-collapse:collapse; margin:8px 0 12px; font-size:12px; }\n  .nv-text th { background:#edf2f7; text-align:left; padding:6px 9px; border:1px solid #e2e8f0; font-weight:700; color:#4a5568; }\n  .nv-text td { padding:6px 9px; border:1px solid #e2e8f0; color:#4a5568; vertical-align:top; }\n  .nv-note { background:#ebf8ff; border:1px solid #bee3f8; border-radius:6px; padding:10px 12px; font-size:12px; color:#2c5282; margin:10px 0; }\n  .nv-x { display:none; }\n\n  .nv-accept-wrap { display:flex; align-items:flex-start; gap:10px; margin-bottom:14px; background:#fffbeb; border:1.5px solid #fbd38d; border-radius:8px; padding:12px 14px; }\n  .nv-accept-wrap input { width:18px; height:18px; margin-top:1px; flex-shrink:0; accent-color:#e53e3e; cursor:pointer; }\n  .nv-accept-label { font-size:13px; color:#744210; line-height:1.5; cursor:pointer; }\n  .nv-btn { width:100%; padding:13px; border:none; border-radius:8px; background:#e53e3e; color:#fff; font-size:15px; font-weight:700; cursor:pointer; transition:background .2s; }\n  .nv-btn:hover { background:#c53030; }\n  .nv-btn:disabled { opacity:.5; cursor:not-allowed; }\n  .nv-spinner { display:inline-block; width:16px; height:16px; border:3px solid rgba(255,255,255,.4); border-top-color:#fff; border-radius:50%; animation:nvspin .7s linear infinite; vertical-align:middle; margin-right:6px; }\n  @keyframes nvspin { to { transform:rotate(360deg); } }\n\n  .nv-success { text-align:center; padding:30px 20px; }\n  .nv-success-icon { font-size:48px; margin-bottom:12px; }\n  .nv-success h3 { font-size:18px; font-weight:700; color:#276749; margin-bottom:8px; }\n  .nv-success p  { font-size:13px; color:#718096; margin-bottom:16px; }\n  .nv-code-box { background:#1a202c; color:#68d391; border-radius:8px; padding:12px 16px; font-family:monospace; font-size:12px; word-break:break-all; margin-bottom:12px; }\n  .nv-alert { border-radius:8px; padding:12px 16px; margin-bottom:14px; font-size:13px; line-height:1.55; }\n  .nv-alert-err  { background:#fff5f5; border:1px solid #feb2b2; color:#742a2a; }\n  .nv-alert-ok   { background:#f0fff4; border:1px solid #9ae6b4; color:#1a4731; }\n  .nv-alert-info { background:#ebf8ff; border:1px solid #bee3f8; color:#2c5282; }\n  .nv-loading { text-align:center; padding:40px; color:#718096; }\n  .nv-load-spinner { display:inline-block; width:28px; height:28px; border:3px solid #e2e8f0; border-top-color:#e53e3e; border-radius:50%; animation:nvspin .7s linear infinite; margin-bottom:10px; }\n<\/style>\n\n<div id=\"nv-outer\">\n  <div class=\"nv-card\">\n\n    <div id=\"nv-loading\" class=\"nv-loading\">\n      <div class=\"nv-load-spinner\"><\/div><br>Chargement\u2026\n    <\/div>\n\n    <div id=\"nv-invalid\" style=\"display:none;\" class=\"nv-alert nv-alert-err\">\n      &#x274c; Cl\u00e9 API non valable. Veuillez v\u00e9rifier le lien re\u00e7u par e-mail.\n    <\/div>\n\n    <div id=\"nv-already\" style=\"display:none;\" class=\"nv-success\">\n      <div class=\"nv-success-icon\">&#x2705;<\/div>\n      <h3>Accord d\u00e9j\u00e0 accept\u00e9<\/h3>\n      <p id=\"nv-already-datum\"><\/p>\n      <p>Votre cl\u00e9 API est active. Vous pouvez d\u00e9sormais utiliser l&#8217;API.<\/p>\n      <div class=\"nv-code-box\" id=\"nv-already-key\"><\/div>\n      <a href=\"https:\/\/www.drugshortage.ch\/index.php\/api-dokumentation\/\" style=\"display:inline-block;padding:10px 22px;background:#e53e3e;color:#fff;border-radius:8px;font-weight:600;text-decoration:none;\">Vers la documentation API \u2192<\/a>\n    <\/div>\n\n    <div id=\"nv-content\" style=\"display:none;\">\n      <div class=\"nv-header\">\n        <div class=\"nv-header-icon\">&#x1f4cb;<\/div>\n        <div>\n          <h2>Accord d&#8217;utilisation \u2013 API drugshortage.ch<\/h2>\n          <p>Veuillez lire et accepter l&#8217;accord afin d&#8217;activer votre cl\u00e9 API.<\/p>\n        <\/div>\n      <\/div>\n\n      <div id=\"nv-alert\"><\/div>\n\n      <div class=\"nv-key-info\">\n        <div class=\"nv-key-field\">\n          <div class=\"nv-key-label\">E-mail<\/div>\n          <div class=\"nv-key-value\" id=\"nv-email\"><\/div>\n        <\/div>\n        <div class=\"nv-key-field\">\n          <div class=\"nv-key-label\">Tier<\/div>\n          <div class=\"nv-key-value\"><span class=\"nv-key-tier\" id=\"nv-tier\"><\/span><\/div>\n        <\/div>\n        <div class=\"nv-key-field\">\n          <div class=\"nv-key-label\">Description<\/div>\n          <div class=\"nv-key-value\" id=\"nv-beschreibung\"><\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"nv-text\">\n        <h3>1. Parties contractantes<\/h3>\n        <p>Le pr\u00e9sent accord d&#8217;utilisation est conclu entre <strong>Martinelli Consulting GmbH<\/strong> (ci-apr\u00e8s \u00ab le fournisseur \u00bb) et l&#8217;utilisateur de l&#8217;API drugshortage.ch (ci-apr\u00e8s \u00ab le licenci\u00e9 \u00bb).<\/p>\n\n        <h3>2. Objet de l&#8217;accord<\/h3>\n        <p>Le fournisseur accorde au licenci\u00e9 l&#8217;acc\u00e8s \u00e0 l&#8217;API drugshortage.ch, qui met \u00e0 disposition des donn\u00e9es structur\u00e9es sur les p\u00e9nuries de m\u00e9dicaments en Suisse.<\/p>\n        <p>Les informations proviennent de deux types de sources : d&#8217;une part de sources accessibles au public, en particulier des communications de l&#8216;<strong>Office f\u00e9d\u00e9ral pour l&#8217;approvisionnement \u00e9conomique du pays (OFAE)<\/strong> ; d&#8217;autre part d&#8217;annonces adress\u00e9es directement \u00e0 drugshortage.ch. Ces derni\u00e8res \u00e9manent majoritairement des titulaires d&#8217;autorisation, \u00e0 d\u00e9faut de grossistes ou du march\u00e9. Ces annonces ne sont en r\u00e8gle g\u00e9n\u00e9rale pas accessibles au public et ne le deviennent que par l&#8217;interm\u00e9diaire de drugshortage.ch.<\/p>\n\n        <h3>3. Droits d&#8217;utilisation<\/h3>\n        <p>Le licenci\u00e9 obtient un droit non exclusif et non transf\u00e9rable d&#8217;utiliser l&#8217;API pour son usage propre au sein de son organisation, notamment pour :<\/p>\n        <ul>\n          <li>Int\u00e9gration dans ses propres syst\u00e8mes logiciels et applications<\/li>\n          <li>Traitement et analyse internes des donn\u00e9es<\/li>\n        <\/ul>\n        <p>Est r\u00e9put\u00e9e <strong>utilisateur<\/strong> toute organisation ou personne qui, par l&#8217;interm\u00e9diaire d&#8217;un syst\u00e8me, d&#8217;une plateforme, d&#8217;une application ou d&#8217;un autre service du licenci\u00e9, obtient l&#8217;acc\u00e8s aux donn\u00e9es de drugshortage.ch ou \u00e0 des informations qui en sont d\u00e9riv\u00e9es (notamment la disponibilit\u00e9 ou le statut de p\u00e9nurie) \u2013 que l&#8217;acc\u00e8s soit direct ou qu&#8217;il passe par un int\u00e9grateur, et que les donn\u00e9es soient pr\u00e9sent\u00e9es sous leur forme originale ou trait\u00e9e. La transmission \u00e0 des utilisateurs au-del\u00e0 de la propre organisation est r\u00e9gie par le chiffre 5.<\/p>\n\n        <h3>4. Utilisations interdites<\/h3>\n        <p>Il est express\u00e9ment interdit au licenci\u00e9 :<\/p>\n        <ul>\n          <li>De transmettre, vendre ou conc\u00e9der sous licence les donn\u00e9es ou la cl\u00e9 API \u00e0 des tiers<\/li>\n          <li>D&#8217;utiliser la cl\u00e9 API en dehors de l&#8217;organisation pour laquelle elle a \u00e9t\u00e9 d\u00e9livr\u00e9e<\/li>\n          <li>De rendre les donn\u00e9es ou des informations qui en sont d\u00e9riv\u00e9es accessibles \u00e0 des utilisateurs au-del\u00e0 de sa propre organisation, sans la licence requise \u00e0 cet effet (chiffre 5)<\/li>\n          <li>De cr\u00e9er des services ou produits en concurrence directe avec drugshortage.ch<\/li>\n          <li>De proc\u00e9der \u00e0 du scraping ou \u00e0 des t\u00e9l\u00e9chargements massifs au-del\u00e0 des limites convenues<\/li>\n          <li>De contourner les restrictions techniques d&#8217;acc\u00e8s ou d&#8217;utilisation, en particulier les limites de requ\u00eates<\/li>\n          <li>D&#8217;utiliser les donn\u00e9es \u00e0 des fins contraires au droit suisse<\/li>\n          <li>De supprimer ou modifier les mentions de droit d&#8217;auteur ou de provenance<\/li>\n        <\/ul>\n\n        <h3>5. Transmission \u00e0 des tiers et int\u00e9gration dans des plateformes<\/h3>\n        <p>Un acc\u00e8s API autorise exclusivement l&#8217;utilisation par le licenci\u00e9 au sein de sa propre organisation. Lorsque des donn\u00e9es de drugshortage.ch \u2013 sous leur forme originale ou sous une forme trait\u00e9e, enrichie ou int\u00e9gr\u00e9e \u2013 sont transmises \u00e0 des utilisateurs au sens du chiffre 3 ou rendues accessibles \u00e0 ceux-ci, un accord distinct est requis \u00e0 cet effet, ind\u00e9pendamment de la mise en \u0153uvre technique.<\/p>\n        <p>Cela vaut en particulier en cas d&#8217;int\u00e9gration dans un logiciel de pharmacie, un syst\u00e8me d&#8217;information hospitalier, un portail sp\u00e9cialis\u00e9, une application ou toute autre plateforme, o\u00f9 les donn\u00e9es sont affich\u00e9es \u00e0 plusieurs utilisateurs. Ce qui est d\u00e9terminant n&#8217;est pas de savoir si les donn\u00e9es brutes sont export\u00e9es ou revendues, mais que l&#8217;information devienne accessible \u00e0 un nombre d&#8217;utilisateurs allant au-del\u00e0 du licenci\u00e9. Le simple affichage d&#8217;un statut de disponibilit\u00e9 \u00e0 des tiers rel\u00e8ve d\u00e9j\u00e0 de la pr\u00e9sente disposition.<\/p>\n        <p>Les niveaux individuels (Basic, Pro) ne couvrent pas cette configuration. Pour la diffusion via une plateforme \u00e0 plusieurs utilisateurs, une <strong>licence Enterprise<\/strong> est requise ; ses conditions tiennent compte du nombre d&#8217;utilisateurs ou d&#8217;organisations atteints et sont convenues individuellement. Partout o\u00f9 des donn\u00e9es de drugshortage.ch sont affich\u00e9es, la mention \u00ab Disponibilit\u00e9 : drugshortage.ch \u00bb avec lien doit figurer \u00e0 un endroit bien visible ; elle ne remplace pas la licence requise.<\/p>\n\n        <h3>6. Limites de requ\u00eates<\/h3>\n        <p>Selon le niveau d&#8217;utilisation convenu, un nombre maximal de requ\u00eates par jour s&#8217;applique. La limite valable pour votre cl\u00e9 figure ci-dessus sous \u00ab Tier \u00bb. En cas de d\u00e9passement, les requ\u00eates suppl\u00e9mentaires sont refus\u00e9es avec le statut 429 jusqu&#8217;\u00e0 la fin de la journ\u00e9e. L&#8217;utilisation actuelle est indiqu\u00e9e dans les en-t\u00eates <code>X-RateLimit-Limit<\/code>, <code>X-RateLimit-Remaining<\/code> et <code>X-RateLimit-Reset<\/code> de chaque r\u00e9ponse.<\/p>\n\n        <h3>7. Journalisation des acc\u00e8s<\/h3>\n        <p>Afin d&#8217;assurer l&#8217;exploitation du service, de d\u00e9tecter les abus et de faire respecter les limites de requ\u00eates, le fournisseur enregistre lors de chaque appel \u00e0 l&#8217;API les donn\u00e9es techniques suivantes :<\/p>\n        <table>\n          <thead>\n            <tr><th style=\"width:38%;\">Donn\u00e9es<\/th><th>Finalit\u00e9<\/th><\/tr>\n          <\/thead>\n          <tbody>\n            <tr><td>Adresse IP<\/td><td>D\u00e9tection d&#8217;un usage abusif et d&#8217;une transmission non autoris\u00e9e de la cl\u00e9 API<\/td><\/tr>\n            <tr><td>Horodatage de l&#8217;acc\u00e8s<\/td><td>Tra\u00e7abilit\u00e9, application des limites de requ\u00eates<\/td><\/tr>\n            <tr><td>Point de terminaison appel\u00e9<\/td><td>Analyse d&#8217;exploitation, d\u00e9pannage, planification des capacit\u00e9s<\/td><\/tr>\n            <tr><td>Identifiant client (User-Agent)<\/td><td>D\u00e9tection de requ\u00eates automatis\u00e9es et de logiciels non autoris\u00e9s<\/td><\/tr>\n          <\/tbody>\n        <\/table>\n        <p>Le traitement intervient en lien avec l&#8217;ex\u00e9cution du pr\u00e9sent accord ainsi que sur la base de l&#8217;int\u00e9r\u00eat priv\u00e9 pr\u00e9pond\u00e9rant du fournisseur \u00e0 une exploitation s\u00fbre et exempte d&#8217;abus de la plateforme (art. 31 LPD). Pour les licenci\u00e9s de l&#8217;UE\/EEE, le traitement se fonde en outre sur l&#8217;int\u00e9r\u00eat l\u00e9gitime au sens de l&#8217;art. 6 par. 1 let. f RGPD.<\/p>\n        <p>Les donn\u00e9es sont utilis\u00e9es exclusivement aux fins mentionn\u00e9es, ne font l&#8217;objet d&#8217;aucune exploitation publicitaire et ne sont pas transmises \u00e0 des tiers. Une transmission n&#8217;a lieu que dans la mesure o\u00f9 une obligation l\u00e9gale l&#8217;exige ou lorsqu&#8217;elle est n\u00e9cessaire \u00e0 faire valoir des pr\u00e9tentions en cas d&#8217;abus av\u00e9r\u00e9.<\/p>\n        <p>Les donn\u00e9es de journalisation sont supprim\u00e9es automatiquement apr\u00e8s <strong>90 jours<\/strong>. En cas de suppression de la cl\u00e9 API, les donn\u00e9es de journalisation correspondantes sont supprim\u00e9es imm\u00e9diatement.<\/p>\n        <div class=\"nv-note\">\n          <strong>Vos droits :<\/strong> Vous pouvez en tout temps demander des renseignements sur les donn\u00e9es de journalisation enregistr\u00e9es pour votre cl\u00e9 API ainsi que leur suppression, pour autant qu&#8217;aucune obligation l\u00e9gale de conservation ne s&#8217;y oppose. Adressez vos demandes \u00e0 info<span class=\"nv-x\">.kein-spam.<\/span>@martinelli<span class=\"nv-x\">.invalid<\/span>.consulting.\n        <\/div>\n\n        <h3>8. Confidentialit\u00e9 de la cl\u00e9 API<\/h3>\n        <p>La cl\u00e9 API doit \u00eatre trait\u00e9e de mani\u00e8re confidentielle. Le licenci\u00e9 r\u00e9pond de toute utilisation de la cl\u00e9 API, y compris lorsqu&#8217;elle est le fait de tiers. En cas de soup\u00e7on d&#8217;abus ou de transmission non autoris\u00e9e, le fournisseur doit \u00eatre inform\u00e9 sans d\u00e9lai.<\/p>\n\n        <h3>9. Droit d&#8217;auteur<\/h3>\n        <p>Toutes les donn\u00e9es mises \u00e0 disposition via l&#8217;API sont la propri\u00e9t\u00e9 de Martinelli Consulting GmbH et prot\u00e9g\u00e9es par le droit d&#8217;auteur (art. 2 et art. 62 ss LDA). La collecte, la v\u00e9rification, le traitement et la structuration de ces informations constituent une prestation intellectuelle propre du fournisseur. Toute utilisation, transmission ou int\u00e9gration dans des syst\u00e8mes tiers en dehors du cadre convenu au chiffre 3 est interdite sans autorisation \u00e9crite expresse.<\/p>\n\n        <h3>10. Disponibilit\u00e9 et responsabilit\u00e9<\/h3>\n        <p>Le fournisseur s&#8217;efforce d&#8217;assurer une disponibilit\u00e9 \u00e9lev\u00e9e de l&#8217;API, sans toutefois garantir un fonctionnement ininterrompu. Des travaux de maintenance, des perturbations techniques ou des adaptations de l&#8217;interface peuvent entra\u00eener des interruptions temporaires. Le fournisseur ne r\u00e9pond des dommages r\u00e9sultant de l&#8217;utilisation ou de l&#8217;indisponibilit\u00e9 de l&#8217;API qu&#8217;en cas de faute grave.<\/p>\n        <p>Les informations obtenues via l&#8217;API ne remplacent aucun conseil m\u00e9dical, pharmaceutique ou juridique. Le fournisseur n&#8217;assume aucune garantie quant \u00e0 l&#8217;exhaustivit\u00e9, l&#8217;exactitude ou l&#8217;actualit\u00e9 des donn\u00e9es.<\/p>\n\n        <h3>11. R\u00e9siliation et blocage<\/h3>\n        <p>Le fournisseur se r\u00e9serve le droit de bloquer l&#8217;acc\u00e8s \u00e0 l&#8217;API sans pr\u00e9avis en cas de violation du pr\u00e9sent accord, en particulier lorsque des indices laissent penser \u00e0 une transmission de la cl\u00e9 \u00e0 des tiers ou \u00e0 un contournement syst\u00e9matique des limites de requ\u00eates. Une r\u00e9siliation ordinaire est possible de part et d&#8217;autre moyennant un pr\u00e9avis de 30 jours.<\/p>\n\n        <h3>12. Dispositions compl\u00e9mentaires<\/h3>\n        <p>Les <a href=\"https:\/\/www.drugshortage.ch\/index.php\/condidtions-d-utilisation\/\" target=\"_blank\" rel=\"noopener\">conditions d&#8217;utilisation de drugshortage.ch<\/a> s&#8217;appliquent \u00e0 titre compl\u00e9mentaire. En cas de contradiction, le pr\u00e9sent accord d&#8217;utilisation pr\u00e9vaut.<\/p>\n\n        <h3>13. Droit applicable<\/h3>\n        <p>Le pr\u00e9sent accord est soumis au droit suisse. Le for juridique est le si\u00e8ge de Martinelli Consulting GmbH.<\/p>\n\n        <h3>14. Version<\/h3>\n        <p>Version 1.2 \u2013 valable d\u00e8s le 9 septembre 2026<\/p>\n      <\/div>\n\n      <div class=\"nv-accept-wrap\">\n        <input type=\"checkbox\" id=\"nv-checkbox\" onchange=\"nvToggle(this)\">\n        <label for=\"nv-checkbox\" class=\"nv-accept-label\">\n          J&#8217;ai lu l&#8217;int\u00e9gralit\u00e9 de l&#8217;accord d&#8217;utilisation et l&#8217;accepte de mani\u00e8re contraignante au nom du licenci\u00e9. Je prends notamment acte du fait que chaque appel \u00e0 l&#8217;API est journalis\u00e9 conform\u00e9ment au chiffre 7 avec l&#8217;adresse IP, l&#8217;horodatage, le point de terminaison et l&#8217;identifiant client. Je confirme \u00eatre habilit\u00e9 \u00e0 conclure le pr\u00e9sent accord pour mon entreprise \/ ma personne. L&#8217;acceptation est enregistr\u00e9e avec la date, l&#8217;adresse IP et les informations du navigateur.\n        <\/label>\n      <\/div>\n\n      <button class=\"nv-btn\" id=\"nv-btn\" onclick=\"nvAkzeptieren()\" disabled=\"\">\n        Accepter l&#8217;accord &amp; activer la cl\u00e9 API\n      <\/button>\n    <\/div>\n\n    <div id=\"nv-success\" style=\"display:none;\" class=\"nv-success\">\n      <div class=\"nv-success-icon\">&#x1f389;<\/div>\n      <h3>Accord accept\u00e9 !<\/h3>\n      <p>Votre cl\u00e9 API est d\u00e9sormais active. Veuillez noter votre cl\u00e9 :<\/p>\n      <div class=\"nv-code-box\" id=\"nv-success-key\"><\/div>\n      <p style=\"font-size:11px;color:#a0aec0;margin-bottom:16px;\">Cette cl\u00e9 vous a \u00e9galement \u00e9t\u00e9 envoy\u00e9e par e-mail. Traitez-la de mani\u00e8re confidentielle.<\/p>\n      <a href=\"https:\/\/www.drugshortage.ch\/index.php\/api-dokumentation\/\" style=\"display:inline-block;padding:12px 28px;background:#e53e3e;color:#fff;border-radius:8px;font-weight:700;text-decoration:none;font-size:14px;\">Vers la documentation API \u2192<\/a>\n    <\/div>\n\n  <\/div>\n<\/div>\n\n<script>\nconst NV_API = \"https:\/\/www.drugshortage.ch\/api\/api_vereinbarung.php\";\nconst NV_VERSION = \"1.2\";\n\n\/\/ Les symboles sont toujours \u00e9crits comme caract\u00e8res r\u00e9els, jamais comme\n\/\/ entit\u00e9s HTML : avec textContent, une entit\u00e9 serait affich\u00e9e telle quelle.\nfunction nvGetKey() {\n  const params = new URLSearchParams(window.location.search);\n  return params.get('api_key') || '';\n}\n\nfunction nvEsc(s) {\n  return String(s == null ? '' : s)\n    .replace(\/&\/g,'&amp;').replace(\/<\/g,'&lt;').replace(\/>\/g,'&gt;')\n    .replace(\/\"\/g,'&quot;').replace(\/'\/g,'&#39;');\n}\n\nfunction nvToggle(cb) {\n  document.getElementById('nv-btn').disabled = !cb.checked;\n}\n\nasync function nvLaden() {\n  const apiKey = nvGetKey();\n  if (!apiKey) {\n    document.getElementById('nv-loading').style.display = 'none';\n    document.getElementById('nv-invalid').style.display = 'block';\n    return;\n  }\n\n  try {\n    const res = await fetch(NV_API + '?action=status&api_key=' + encodeURIComponent(apiKey), {\n      headers: {'X-Requested-With': 'XMLHttpRequest'}\n    });\n    const d = await res.json();\n\n    document.getElementById('nv-loading').style.display = 'none';\n\n    if (!d.ok) {\n      document.getElementById('nv-invalid').style.display = 'block';\n      return;\n    }\n\n    if (d.vereinbarung && d.vereinbarung.akzeptiert) {\n      document.getElementById('nv-already-datum').textContent = 'Accept\u00e9 le : ' + d.vereinbarung.datum;\n      document.getElementById('nv-already-key').textContent = apiKey;\n      document.getElementById('nv-already').style.display = 'block';\n      return;\n    }\n\n    \/\/ Accept\u00e9 pr\u00e9c\u00e9demment, mais ancienne version -> information, pas erreur\n    if (d.vereinbarung && d.vereinbarung.versionVeraltet) {\n      document.getElementById('nv-alert').innerHTML =\n        \"<div class='nv-alert nv-alert-info'>&#x2139;&#xfe0f; L'accord d'utilisation a \u00e9t\u00e9 r\u00e9vis\u00e9 \" +\n        \"(nouveau : chiffre 5 transmission \u00e0 des tiers, chiffre 6 limites de requ\u00eates et chiffre 7 journalisation des acc\u00e8s). \" +\n        \"Vous avez accept\u00e9 la version \" + nvEsc(d.vereinbarung.version) +\n        \" le \" + nvEsc(d.vereinbarung.datum) +\n        \". Veuillez confirmer la version actuelle afin de continuer \u00e0 utiliser votre cl\u00e9.<\/div>\";\n    }\n\n    document.getElementById('nv-email').textContent        = d.email;\n    document.getElementById('nv-tier').textContent         = (d.tier || '').toUpperCase();\n    document.getElementById('nv-beschreibung').textContent = d.beschreibung || '\u2013';\n    document.getElementById('nv-content').style.display    = 'block';\n\n  } catch(e) {\n    document.getElementById('nv-loading').style.display = 'none';\n    document.getElementById('nv-invalid').textContent = '&#x274c; Erreur : ' + e;\n    document.getElementById('nv-invalid').style.display = 'block';\n  }\n}\n\nasync function nvAkzeptieren() {\n  const apiKey = nvGetKey();\n  const btn    = document.getElementById('nv-btn');\n  const alert  = document.getElementById('nv-alert');\n\n  btn.disabled = true;\n  btn.innerHTML = \"<span class='nv-spinner'><\/span> Traitement en cours\u2026\";\n  alert.innerHTML = '';\n\n  try {\n    const res = await fetch(NV_API + '?action=akzeptieren', {\n      method: 'POST',\n      headers: {'Content-Type': 'application\/json', 'X-Requested-With': 'XMLHttpRequest'},\n      body: JSON.stringify({api_key: apiKey, version: NV_VERSION})\n    });\n    const d = await res.json();\n\n    if (d.ok) {\n      document.getElementById('nv-content').style.display  = 'none';\n      document.getElementById('nv-success-key').textContent = apiKey;\n      document.getElementById('nv-success').style.display  = 'block';\n    } else {\n      alert.innerHTML = \"<div class='nv-alert nv-alert-err'>&#x274c; \" +\n        nvEsc(d.fehler || d.message || 'Erreur inconnue') + \"<\/div>\";\n      btn.disabled = false;\n      btn.innerHTML = \"Accepter l'accord &amp; activer la cl\u00e9 API\";\n    }\n  } catch(e) {\n    alert.innerHTML = \"<div class='nv-alert nv-alert-err'>&#x274c; Erreur : \" + nvEsc(e) + \"<\/div>\";\n    btn.disabled = false;\n    btn.innerHTML = \"Accepter l'accord &amp; activer la cl\u00e9 API\";\n  }\n}\n\ndocument.addEventListener('DOMContentLoaded', nvLaden);\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Chargement\u2026 &#x274c; Cl\u00e9 API non valable. Veuillez v\u00e9rifier le lien re\u00e7u par e-mail. &#x2705; Accord d\u00e9j\u00e0 accept\u00e9 Votre cl\u00e9 API est active. Vous pouvez d\u00e9sormais utiliser l&#8217;API. Vers la documentation API \u2192 &#x1f4cb; Accord d&#8217;utilisation \u2013 API drugshortage.ch Veuillez lire et accepter l&#8217;accord afin d&#8217;activer votre cl\u00e9 API. E-mail Tier Description 1. Parties contractantes Le&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"","_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":"","_members_access_role":[],"_members_access_error":""},"class_list":["post-21667","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/pages\/21667","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/comments?post=21667"}],"version-history":[{"count":0,"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/pages\/21667\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/media?parent=21667"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}