{"id":21662,"date":"2026-06-08T08:18:23","date_gmt":"2026-06-08T06:18:23","guid":{"rendered":"https:\/\/www.drugshortage.ch\/?page_id=21662"},"modified":"2026-06-08T10:16:04","modified_gmt":"2026-06-08T08:16:04","slug":"api-vereinbarung","status":"publish","type":"page","link":"https:\/\/www.drugshortage.ch\/index.php\/api-vereinbarung\/","title":{"rendered":"API-Vereinbarung"},"content":{"rendered":"\n<!-- ============================================================\n     drugshortage.ch API \u2013 Nutzungsvereinbarung (DE)\n     Seite: \"vereinbarung\" (\u00f6ffentlich, mit ?api_key=xxx)\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  .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-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  .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; }\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-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>Wird geladen\u2026\n    <\/div>\n\n    <div id=\"nv-invalid\" style=\"display:none;\" class=\"nv-alert nv-alert-err\">\n      Ung\u00fcltiger API-Key. Bitte pr\u00fcfen Sie den Link in Ihrer 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>Vereinbarung bereits akzeptiert<\/h3>\n      <p id=\"nv-already-datum\"><\/p>\n      <p>Ihr API-Key ist aktiv. Sie k\u00f6nnen die API jetzt nutzen.<\/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;\">Zur API-Dokumentation \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>Nutzungsvereinbarung \u2013 drugshortage.ch API<\/h2>\n          <p>Bitte lesen und akzeptieren Sie die Vereinbarung um Ihren API-Key zu aktivieren.<\/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\">Beschreibung<\/div>\n          <div class=\"nv-key-value\" id=\"nv-beschreibung\"><\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"nv-text\">\n        <h3>1. Vertragsparteien<\/h3>\n        <p>Diese Nutzungsvereinbarung wird abgeschlossen zwischen <strong>Martinelli Consulting GmbH<\/strong> (nachfolgend \u201eAnbieter&#8220;) und dem Nutzer der drugshortage.ch API (nachfolgend \u201eLizenznehmer&#8220;).<\/p>\n        <h3>2. Gegenstand der Vereinbarung<\/h3>\n        <p>Der Anbieter gew\u00e4hrt dem Lizenznehmer Zugang zur drugshortage.ch API, welche strukturierte Daten \u00fcber Arzneimittel-Lieferengp\u00e4sse in der Schweiz bereitstellt.<\/p>\n        <h3>3. Nutzungsrechte<\/h3>\n        <p>Der Lizenznehmer erh\u00e4lt ein nicht-exklusives, nicht-\u00fcbertragbares Recht zur Nutzung der API f\u00fcr:<\/p>\n        <ul>\n          <li>Integration in eigene Softwaresysteme und Applikationen<\/li>\n          <li>Interne Datenverarbeitung und -analyse<\/li>\n          <li>Anzeige von Informationen f\u00fcr Endnutzer im vereinbarten Rahmen<\/li>\n        <\/ul>\n        <h3>4. Verbotene Nutzung<\/h3>\n        <ul>\n          <li>Weitergabe, Verkauf oder Lizenzierung der Daten oder des API-Keys an Dritte<\/li>\n          <li>Erstellung von Diensten in direktem Wettbewerb zu drugshortage.ch<\/li>\n          <li>Scraping oder massenhafte Downloads \u00fcber die vereinbarten Limits hinaus<\/li>\n          <li>Entfernung von Urheberrechts- oder Herkunftshinweisen<\/li>\n        <\/ul>\n        <h3>5. Datenschutz und Vertraulichkeit<\/h3>\n        <p>Der API-Key ist vertraulich zu behandeln. Bei Verdacht auf Missbrauch ist der Anbieter unverz\u00fcglich zu informieren.<\/p>\n        <h3>6. Urheberrecht<\/h3>\n        <p>Alle Daten sind Eigentum der Martinelli Consulting GmbH und urheberrechtlich gesch\u00fctzt (Art. 62 URG).<\/p>\n        <h3>7. Haftung<\/h3>\n        <p>Der Anbieter haftet nur bei grobem Verschulden. Keine Garantie f\u00fcr ununterbrochenen Betrieb.<\/p>\n        <h3>8. K\u00fcndigung<\/h3>\n        <p>Der Anbieter kann den Zugang bei Verstoss ohne Vorank\u00fcndigung sperren. Ordentliche K\u00fcndigung: 30 Tage.<\/p>\n        <h3>9. Anwendbares Recht<\/h3>\n        <p>Schweizer Recht. Gerichtsstand: Sitz der Martinelli Consulting GmbH.<\/p>\n        <h3>10. Version<\/h3>\n        <p>Version 1.0 \u2013 g\u00fcltig ab 1. Juni 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          Ich habe die Nutzungsvereinbarung vollst\u00e4ndig gelesen und akzeptiere diese verbindlich im Namen des Lizenznehmers. Ich best\u00e4tige, dass ich berechtigt bin, diese Vereinbarung f\u00fcr mein Unternehmen\/meine Person abzuschliessen. Die Akzeptanz wird mit Datum, IP-Adresse und Browser-Informationen protokolliert.\n        <\/label>\n      <\/div>\n\n      <button class=\"nv-btn\" id=\"nv-btn\" onclick=\"nvAkzeptieren()\" disabled>\n        Vereinbarung akzeptieren &amp; API-Key aktivieren\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>Vereinbarung akzeptiert!<\/h3>\n      <p>Ihr API-Key ist jetzt aktiv. Bitte notieren Sie Ihren Key:<\/p>\n      <div class=\"nv-code-box\" id=\"nv-success-key\"><\/div>\n      <p style=\"font-size:11px;color:#a0aec0;margin-bottom:16px;\">Behandeln Sie ihn vertraulich.<\/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;\">Zur API-Dokumentation \u2192<\/a>\n    <\/div>\n\n  <\/div>\n<\/div>\n\n<script>\nconst NV_API = \"https:\/\/www.drugshortage.ch\/ds.php?a=vereinbarung\";\nconst AMP = String.fromCharCode(38);\n\nfunction nvGetKey() {\n  return new URLSearchParams(window.location.search).get('api_key') || '';\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  try {\n    const res = await fetch(NV_API + AMP + 'action=status' + AMP + 'api_key=' + encodeURIComponent(apiKey), {headers:{'X-Requested-With':'XMLHttpRequest'}});\n    const d = await res.json();\n    document.getElementById('nv-loading').style.display = 'none';\n    if (!d.ok) { document.getElementById('nv-invalid').style.display = 'block'; return; }\n    if (d.vereinbarung && d.vereinbarung.akzeptiert) {\n      document.getElementById('nv-already-datum').textContent = 'Akzeptiert am: ' + d.vereinbarung.datum;\n      document.getElementById('nv-already-key').textContent = apiKey;\n      document.getElementById('nv-already').style.display = 'block';\n      return;\n    }\n    document.getElementById('nv-email').textContent        = d.email;\n    document.getElementById('nv-tier').textContent         = d.tier ? d.tier.toUpperCase() : '';\n    document.getElementById('nv-beschreibung').textContent = d.beschreibung || '\u2013';\n    document.getElementById('nv-content').style.display    = 'block';\n  } catch(e) {\n    document.getElementById('nv-loading').style.display = 'none';\n    document.getElementById('nv-invalid').innerHTML = 'Fehler: ' + 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  btn.disabled = true;\n  btn.innerHTML = \"<span class='nv-spinner'><\/span> Wird verarbeitet\u2026\";\n  alert.innerHTML = '';\n  try {\n    const res = await fetch(NV_API + AMP + 'action=akzeptieren', {\n      method: 'POST',\n      headers: {'Content-Type':'application\/json','X-Requested-With':'XMLHttpRequest'},\n      body: JSON.stringify({api_key: apiKey})\n    });\n    const d = await res.json();\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'>\" + (d.fehler || d.message) + \"<\/div>\";\n      btn.disabled = false;\n      btn.innerHTML = \"Vereinbarung akzeptieren &amp; API-Key aktivieren\";\n    }\n  } catch(e) {\n    alert.innerHTML = \"<div class='nv-alert nv-alert-err'>Fehler: \" + e + \"<\/div>\";\n    btn.disabled = false;\n    btn.innerHTML = \"Vereinbarung akzeptieren &amp; API-Key aktivieren\";\n  }\n}\n\ndocument.addEventListener('DOMContentLoaded', nvLaden);\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>Wird geladen\u2026 Ung\u00fcltiger API-Key. Bitte pr\u00fcfen Sie den Link in Ihrer E-Mail. &#x2705; Vereinbarung bereits akzeptiert Ihr API-Key ist aktiv. Sie k\u00f6nnen die API jetzt nutzen. Zur API-Dokumentation \u2192 &#x1f4cb; Nutzungsvereinbarung \u2013 drugshortage.ch API Bitte lesen und akzeptieren Sie die Vereinbarung um Ihren API-Key zu aktivieren. E-Mail Tier Beschreibung 1. Vertragsparteien Diese Nutzungsvereinbarung wird abgeschlossen&#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-21662","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/pages\/21662","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=21662"}],"version-history":[{"count":2,"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/pages\/21662\/revisions"}],"predecessor-version":[{"id":21672,"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/pages\/21662\/revisions\/21672"}],"wp:attachment":[{"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/media?parent=21662"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}