{"id":11355,"date":"2024-01-05T14:22:30","date_gmt":"2024-01-05T12:22:30","guid":{"rendered":"https:\/\/u-labs.de\/portal\/?p=11355"},"modified":"2024-01-05T14:22:30","modified_gmt":"2024-01-05T12:22:30","slug":"automatisierte-microsoft-teams-nachrichten-mit-python-curl-co-versenden","status":"publish","type":"post","link":"https:\/\/u-labs.de\/portal\/automatisierte-microsoft-teams-nachrichten-mit-python-curl-co-versenden\/","title":{"rendered":"Automatisierte Microsoft Teams Nachrichten mit Python, curl &#038; co versenden"},"content":{"rendered":"<p>Wer Microsoft Teams nutzt, will oder muss andere Anwendungen daran anbinden. Beispielsweise aus anderen Anwendungen heraus Nachrichten versenden, um Informationen in einem MS Teams Kanal bereitzustellen. Wie dies funktioniert, zeigt dieser Beitrag am Beispiel des bekannten curl sowie der Skriptsprache Python. Auf \u00e4hnliche Weise kann man aber auch mit anderen Technologien Chatnachrichten an den Clouddienst versenden.<\/p>\n<h2 class=\"wp-block-heading\">Vorbereitung: Anlegen eines Connectors<\/h2>\n<p>MS Teams nutzt Connectoren, um andere Anwendungen zu integrieren. Dies geschieht auf Kanalebene. Navigiert daher zu dem Kanal, in den ihr automatisiert Nachrichten senden m\u00f6chtet. Beim drauf zeigen mit der Maus erscheinen rechts drei Punkte. Sie \u00f6ffnen ein Men\u00fc mit dem Eintrag <strong>Connectors<\/strong>:<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/grafik-2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"551\" height=\"502\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/grafik-2.png\" alt=\"\" class=\"wp-image-11356\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/grafik-2.png 551w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/grafik-2-300x273.png 300w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/grafik-2-395x360.png 395w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/grafik-2-187x170.png 187w\" sizes=\"auto, (max-width: 551px) 100vw, 551px\" \/><\/a><\/figure>\n<\/div>\n<p>Sucht dort nach <strong>Incoming Webhook<\/strong>. Wurde dieser Connector noch nie zum Team hinzugef\u00fcgt, muss dies zuerst durch zweimal Klicken auf <strong>Hinzuf\u00fcgen<\/strong> durchgef\u00fchrt werden.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/webhook-add.png\"><img loading=\"lazy\" decoding=\"async\" width=\"775\" height=\"236\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/webhook-add.png\" alt=\"\" class=\"wp-image-11363\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/webhook-add.png 775w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/webhook-add-300x91.png 300w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/webhook-add-768x234.png 768w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/webhook-add-640x195.png 640w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/webhook-add-558x170.png 558w\" sizes=\"auto, (max-width: 775px) 100vw, 775px\" \/><\/a><\/figure>\n<\/div>\n<p>Anschie\u00dfend wiederholt man den obigen Schritt und klickt dieses mal beim <strong>Incomming Webhook<\/strong> <strong>Connector<\/strong> auf <strong>Konfigurieren<\/strong>:<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/grafik-3.png\"><img loading=\"lazy\" decoding=\"async\" width=\"770\" height=\"236\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/grafik-3.png\" alt=\"\" class=\"wp-image-11357\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/grafik-3.png 770w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/grafik-3-300x92.png 300w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/grafik-3-768x235.png 768w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/grafik-3-640x196.png 640w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/grafik-3-555x170.png 555w\" sizes=\"auto, (max-width: 770px) 100vw, 770px\" \/><\/a><\/figure>\n<\/div>\n<p>Gebt dem Connector einen frei w\u00e4hlbaren Namen, optional kann darunter ein Bild hochgeladen werden. Beides wird im Kanal angezeigt, wenn der Connector dort Nachrichten ver\u00f6ffentlicht. Schlussendlich wird der Bot mit <strong>Erstellen<\/strong> angelegt:<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/grafik-4.png\"><img loading=\"lazy\" decoding=\"async\" width=\"763\" height=\"654\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/grafik-4.png\" alt=\"\" class=\"wp-image-11364\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/grafik-4.png 763w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/grafik-4-300x257.png 300w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/grafik-4-420x360.png 420w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/grafik-4-198x170.png 198w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/grafik-4-210x180.png 210w\" sizes=\"auto, (max-width: 763px) 100vw, 763px\" \/><\/a><\/figure>\n<\/div>\n<p>Nach einigen Sekunden Wartezeit erscheint \u00fcber den Knopf eine URL, die ihr euch kopiert und abspeichert. Sie enth\u00e4lt alle notwendigen Informationen, um Nachrichten in diesem Kanal ver\u00f6ffentlichen zu k\u00f6nnen &#8211; sie ist daher wie ein API-Schl\u00fcssel zu behandeln.<sup data-fn=\"6f2bb19e-bae0-4435-8a2e-8e5c744ff2dd\" class=\"fn\"><a href=\"#6f2bb19e-bae0-4435-8a2e-8e5c744ff2dd\" id=\"6f2bb19e-bae0-4435-8a2e-8e5c744ff2dd-link\">1<\/a><\/sup> Das Erzeugen von Nachrichten ist von nahezu \u00fcberall m\u00f6glich, wo HTTP-Anfragen gesendet werden k\u00f6nnen. In den folgenden Abschnitten demonstriere ich dies auf der Kommandozeile mit curl sowie einem Python-Skript.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/msteams-connector-url.png\"><img loading=\"lazy\" decoding=\"async\" width=\"732\" height=\"252\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/msteams-connector-url.png\" alt=\"\" class=\"wp-image-11367\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/msteams-connector-url.png 732w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/msteams-connector-url-300x103.png 300w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/msteams-connector-url-640x220.png 640w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/msteams-connector-url-494x170.png 494w\" sizes=\"auto, (max-width: 732px) 100vw, 732px\" \/><\/a><\/figure>\n<\/div>\n<h2 class=\"wp-block-heading\">Senden von Nachrichten mit curl<\/h2>\n<p>An diese URL wird ein JSON-Dokument gesendet, das im einfachsten Falle nur den Text enth\u00e4lt. Es sind viele weitere Attribute m\u00f6glich: Etwa k\u00f6nnen Links angeheftet oder Karten mit Titeln erstellt werden.<sup data-fn=\"27eed329-cdfe-45d6-8011-77e4d3655550\" class=\"fn\"><a href=\"#27eed329-cdfe-45d6-8011-77e4d3655550\" id=\"27eed329-cdfe-45d6-8011-77e4d3655550-link\">2<\/a><\/sup> F\u00fcr eine einfache Nachricht ohne zus\u00e4tzliche Inhalte gen\u00fcgt ein JSON mit dem Attribut &#8222;text&#8220;:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"\" data-line=\"\">{&quot;text&quot;: &quot;Hi von curl!&quot;}<\/code><\/pre>\n<p>Daf\u00fcr ist eine HTTP-POST Anfrage notwendig, die sich mit dem freien und quelloffenen Werkzeug curl wie folgt senden l\u00e4sst:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"\" data-line=\"\">curl -s --header &quot;Content-Type: application\/json&quot; \\\n   --request POST \\\n   --data &#039;{&quot;text&quot;: &quot;Hi von curl!&quot;}&#039; \\\n   https:\/\/xx.webhook.office.com\/webhookb2\/xyz<\/code><\/pre>\n<p>MS Teams liefert <strong>1<\/strong> zur\u00fcck, wenn die Nachricht gesendet wurde. Dies kann einige Sekunden dauern. Wird die Nachricht nicht gesendet, ist entweder MS mal wieder down oder man hat ein Limit \u00fcberschritten. Beispielsweise etwa 28KB pro Nachricht.<sup data-fn=\"c332c296-b952-4680-b8e7-272f2a7f4f09\" class=\"fn\"><a href=\"#c332c296-b952-4680-b8e7-272f2a7f4f09\" id=\"c332c296-b952-4680-b8e7-272f2a7f4f09-link\">3<\/a><\/sup> Dazu wird ebenfalls die maximale Anzahl von Anfragen in bestimmten Intervallen (pro Sekunde, 30\/3600 Sekunden usw) beschr\u00e4nkt.<sup data-fn=\"b9d36d56-d0f9-4c1e-98c1-556b233b6d31\" class=\"fn\"><a href=\"#b9d36d56-d0f9-4c1e-98c1-556b233b6d31\" id=\"b9d36d56-d0f9-4c1e-98c1-556b233b6d31-link\">4<\/a><\/sup><\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/ms-teams-bot-ex.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"297\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/ms-teams-bot-ex-1024x297.png\" alt=\"\" class=\"wp-image-11368\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/ms-teams-bot-ex-1024x297.png 1024w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/ms-teams-bot-ex-300x87.png 300w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/ms-teams-bot-ex-768x222.png 768w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/ms-teams-bot-ex-640x185.png 640w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/ms-teams-bot-ex-587x170.png 587w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/ms-teams-bot-ex.png 1198w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n<h2 class=\"wp-block-heading\">Senden von Nachrichten mit Python<\/h2>\n<p>Python bringt Bibliotheken f\u00fcr JSON und HTTP-Anfragen mit, sodass eine Anfrage in nur wenigen Zeilen mit Boardmitteln durchgef\u00fchrt werden kann:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"\" data-line=\"\">import json\nimport sys\nimport datetime\nfrom urllib import request\n\nwebhook_url = &quot;https:\/\/xx.webhook.office.com\/webhookb2\/xyz&quot;\nmessage = &quot;Diese Nachricht wurde von Python gesendet: &quot; + str(datetime.datetime.now())\n\nreq = request.Request(url=webhook_url, method=&quot;POST&quot;)\nreq.add_header(key=&quot;Content-Type&quot;, val=&quot;application\/json&quot;)\ndata = json.dumps({&quot;text&quot;: message}).encode()\n\nwith request.urlopen(url=req, data=data) as response:\n    print(&quot;HTTP Status: &quot; + str(response.status))\n    print(&quot;MS Status: &quot; + response.text)<\/code><\/pre>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/grafik-5.png\"><img loading=\"lazy\" decoding=\"async\" width=\"982\" height=\"130\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/grafik-5.png\" alt=\"\" class=\"wp-image-11370\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/grafik-5.png 982w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/grafik-5-300x40.png 300w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/grafik-5-768x102.png 768w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/10\/grafik-5-640x85.png 640w\" sizes=\"auto, (max-width: 982px) 100vw, 982px\" \/><\/a><\/figure>\n<\/div>\n<p>Wer die JSON-Objekte nicht selbst erzeugen m\u00f6chte und mit der Verwendung von Drittanbieter-Paketen keine Probleme hat, kann die Bibliothek <strong>pymsteams<\/strong> nutzen.<sup data-fn=\"23ed59fc-c8df-4850-820d-f648d6d0ce9c\" class=\"fn\"><a href=\"#23ed59fc-c8df-4850-820d-f648d6d0ce9c\" id=\"23ed59fc-c8df-4850-820d-f648d6d0ce9c-link\">5<\/a><\/sup><sup data-fn=\"ae16168b-dfa1-4033-80e7-ef532a2700ae\" class=\"fn\"><a href=\"#ae16168b-dfa1-4033-80e7-ef532a2700ae\" id=\"ae16168b-dfa1-4033-80e7-ef532a2700ae-link\">6<\/a><\/sup> Grunds\u00e4tzlich l\u00e4sst sich auch mit anderen Plattformen eine Nachricht erzeugen &#8211; ein HTTP-Client ist in nahezu jeder Plattform vorhanden. <\/p>\n<h2 class=\"wp-block-heading\">Sicherheitshinweis: Der Totalschaden in Microsofts Wolke<\/h2>\n<p>Bedenkt, dass ihr hierbei die \u00f6ffentliche Cloud von Microsoft benutzt. Eure Daten befinden sich auf Servern des Konzerns. F\u00fcr deren Sicherheit m\u00fcsst ihr euch auf das Unternehmen verlassen &#8211; und zwar auf eines, das in der Vergangenheit bereits mehrfach mit extremen Sicherheitsm\u00e4ngeln aufgefallen ist. <a href=\"https:\/\/u-labs.de\/portal\/bingbang-hunderte-millionen-durch-azure-ad-konfigurationsfehler-bing-sicherheitsluecken-gefaehrdet-inklusive-microsoft-office-365-selbst\/\">Zuletzt beispielsweise BingBang<\/a>, bei dem auch zahlreiche interne Microsoft-Systeme f\u00fcr fremde Zugreifbar waren. <a href=\"https:\/\/u-labs.de\/portal\/outlook-online-in-der-microsoft-365-cloud-gehackt-zahlreiche-organisationen-betroffen-u-a-die-us-regierun-betroffen\/\" data-type=\"link\" data-id=\"https:\/\/u-labs.de\/portal\/outlook-online-in-der-microsoft-365-cloud-gehackt-zahlreiche-organisationen-betroffen-u-a-die-us-regierun-betroffen\/\">Auch Microsoft 365 wurde bereits gehackt<\/a>, da Microsofts Schutzma\u00dfnahmen unzureichend waren. Au\u00dferdem bemerkte der Konzern den Angriff nicht, sondern die Kunden selbst. Selbst dann versuchte Microsoft, den Angriff klein zu reden &#8211; obwohl gro\u00dfe Organisationen wie u.a. die US-Regierung betroffen waren.<\/p>\n<p>Microsoft hat bereits mit mehr als einem Totalschaden bewiesen, dass Daten dort nicht sicher aufgehoben sind. Ich halte es daher f\u00fcr Angebracht, vor diesen Gefahren zu warnen &#8211; \u00fcberlegt euch gut, ob ihr eure Daten unsicheren Cloudsystemen anvertrauen m\u00f6chtet, die zudem gerne mal ausfallen.<\/p>\n<h2 class=\"wp-block-heading\">Quellen &amp; weiterf\u00fchrende Informationen<\/h2>\n<ol class=\"wp-block-footnotes\">\n<li id=\"6f2bb19e-bae0-4435-8a2e-8e5c744ff2dd\">https:\/\/learn.microsoft.com\/en-us\/microsoftteams\/platform\/webhooks-and-connectors\/how-to\/add-incoming-webhook?tabs=dotnet <a href=\"#6f2bb19e-bae0-4435-8a2e-8e5c744ff2dd-link\" aria-label=\"Zur Fu\u00dfnotenreferenz 1 navigieren\">\u21a9\ufe0e<\/a><\/li>\n<li id=\"27eed329-cdfe-45d6-8011-77e4d3655550\">https:\/\/learn.microsoft.com\/en-us\/microsoftteams\/platform\/webhooks-and-connectors\/how-to\/connectors-using?tabs=cURL <a href=\"#27eed329-cdfe-45d6-8011-77e4d3655550-link\" aria-label=\"Zur Fu\u00dfnotenreferenz 2 navigieren\">\u21a9\ufe0e<\/a><\/li>\n<li id=\"c332c296-b952-4680-b8e7-272f2a7f4f09\">https:\/\/learn.microsoft.com\/en-us\/microsoftteams\/limits-specifications-teams <a href=\"#c332c296-b952-4680-b8e7-272f2a7f4f09-link\" aria-label=\"Zur Fu\u00dfnotenreferenz 3 navigieren\">\u21a9\ufe0e<\/a><\/li>\n<li id=\"b9d36d56-d0f9-4c1e-98c1-556b233b6d31\">https:\/\/learn.microsoft.com\/en-us\/microsoftteams\/platform\/webhooks-and-connectors\/how-to\/connectors-using?tabs=cURL#transactions-per-second-thresholds <a href=\"#b9d36d56-d0f9-4c1e-98c1-556b233b6d31-link\" aria-label=\"Zur Fu\u00dfnotenreferenz 4 navigieren\">\u21a9\ufe0e<\/a><\/li>\n<li id=\"23ed59fc-c8df-4850-820d-f648d6d0ce9c\">https:\/\/github.com\/rveachkc\/pymsteams <a href=\"#23ed59fc-c8df-4850-820d-f648d6d0ce9c-link\" aria-label=\"Zur Fu\u00dfnotenreferenz 5 navigieren\">\u21a9\ufe0e<\/a><\/li>\n<li id=\"ae16168b-dfa1-4033-80e7-ef532a2700ae\">https:\/\/stackoverflow.com\/questions\/59371631\/send-automated-messages-to-microsoft-teams-using-python <a href=\"#ae16168b-dfa1-4033-80e7-ef532a2700ae-link\" aria-label=\"Zur Fu\u00dfnotenreferenz 6 navigieren\">\u21a9\ufe0e<\/a><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Wer Microsoft Teams nutzt, will oder muss andere Anwendungen daran anbinden. Beispielsweise aus anderen Anwendungen heraus Nachrichten versenden, um Informationen in einem MS Teams Kanal bereitzustellen. Wie dies funktioniert, zeigt dieser Beitrag am Beispiel des bekannten curl sowie der Skriptsprache Python. Auf \u00e4hnliche Weise kann man aber auch mit anderen Technologien Chatnachrichten an den Clouddienst &#8230;<\/p>\n","protected":false},"author":5,"featured_media":12011,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"[{\"content\":\"https:\/\/learn.microsoft.com\/en-us\/microsoftteams\/platform\/webhooks-and-connectors\/how-to\/add-incoming-webhook?tabs=dotnet\",\"id\":\"6f2bb19e-bae0-4435-8a2e-8e5c744ff2dd\"},{\"content\":\"https:\/\/learn.microsoft.com\/en-us\/microsoftteams\/platform\/webhooks-and-connectors\/how-to\/connectors-using?tabs=cURL\",\"id\":\"27eed329-cdfe-45d6-8011-77e4d3655550\"},{\"content\":\"https:\/\/learn.microsoft.com\/en-us\/microsoftteams\/limits-specifications-teams\",\"id\":\"c332c296-b952-4680-b8e7-272f2a7f4f09\"},{\"content\":\"https:\/\/learn.microsoft.com\/en-us\/microsoftteams\/platform\/webhooks-and-connectors\/how-to\/connectors-using?tabs=cURL#transactions-per-second-thresholds\",\"id\":\"b9d36d56-d0f9-4c1e-98c1-556b233b6d31\"},{\"content\":\"https:\/\/github.com\/rveachkc\/pymsteams\",\"id\":\"23ed59fc-c8df-4850-820d-f648d6d0ce9c\"},{\"content\":\"https:\/\/stackoverflow.com\/questions\/59371631\/send-automated-messages-to-microsoft-teams-using-python\",\"id\":\"ae16168b-dfa1-4033-80e7-ef532a2700ae\"}]"},"categories":[61],"tags":[488,839,256,1025],"class_list":["post-11355","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-softwareentwicklung","tag-cloud","tag-curl","tag-microsoft","tag-python"],"_links":{"self":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/11355","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/comments?post=11355"}],"version-history":[{"count":8,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/11355\/revisions"}],"predecessor-version":[{"id":12012,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/11355\/revisions\/12012"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/media\/12011"}],"wp:attachment":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/media?parent=11355"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/categories?post=11355"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/tags?post=11355"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}