{"id":28896,"date":"2024-09-09T05:00:00","date_gmt":"2024-09-09T03:00:00","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=28896"},"modified":"2024-08-27T10:05:55","modified_gmt":"2024-08-27T08:05:55","slug":"adaptive-card-extension-wskazowki-i-porady-dla-programistow","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/adaptive-card-extension-wskazowki-i-porady-dla-programistow\/","title":{"rendered":"Adaptive Card Extension \u2013 wskaz\u00f3wki i porady dla programist\u00f3w"},"content":{"rendered":"\n<p>Je\u015bli jeste\u015b programist\u0105 i korzystasz z Viva Connections, by\u0107 mo\u017ce wiesz, \u017ce istnieje dedykowany typ komponent\u00f3w SPFx do tej platformy \u2013 Adaptive Card Extension, czyli ACE. ACE sprawdzi si\u0119 \u015bwietnie w wielu scenariuszach \u2013 od przedstawiania szczeg\u00f3\u0142\u00f3w lotu albo zam\u00f3wienia, po wy\u015bwietlanie galerii obraz\u00f3w. Na stronie Microsoft mo\u017cesz znale\u017a\u0107 <a href=\"https:\/\/learn.microsoft.com\/en-us\/sharepoint\/dev\/spfx\/viva\/get-started\/build-first-sharepoint-adaptive-card-extension\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >podstawowy samouczek<\/a> dotycz\u0105cy ich tworzenia.<\/p>\n\n\n\n<p>Nawet je\u015bli jeste\u015b prawdziwym fanem Microsoft i krok po kroku prze\u015bledzisz jego tutorial, mo\u017cesz mie\u0107 pytania na temat ACE. W artykule rozwiejemy te w\u0105tpliwo\u015bci i stworzymy najlepsze rozszerzenie SPFx w \u017cyciu! Zaczynajmy \ud83d\ude09<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/08\/pic1.png\"><img decoding=\"async\" width=\"914\" height=\"411\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/08\/pic1.png\" alt=\"Przyk\u0142ad panelu Viva Connections\" class=\"wp-image-28897\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/08\/pic1.png 914w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/08\/pic1-300x135.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/08\/pic1-768x345.png 768w\" sizes=\"(max-width: 914px) 100vw, 914px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 1 Przyk\u0142ad panelu Viva Connections<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Jak mog\u0119 stworzy\u0107 projekt Adaptive Card Extension? Nie widz\u0119 takiej opcji w moim Yeoman!<\/strong><\/h2>\n\n\n\n<p>Hej, zachowaj spok\u00f3j! Upewnij si\u0119, \u017ce Tw\u00f3j generator SharePoint w Yeoman jest zaktualizowany. Na chwil\u0119 obecn\u0105 najlepiej, aby Tw\u00f3j SPFx by\u0142 co najmniej w wersji 1.18. Je\u015bli nie wiesz, jak sprawdzi\u0107 swoj\u0105 wersj\u0119, mo\u017cesz skorzysta\u0107 <a href=\"https:\/\/blog.mastykarz.nl\/how-to-check-sharepoint-framework-version\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >z postu Waldka<\/a>.<\/p>\n\n\n\n<p>Przy okazji warto rzuci\u0107 okiem na <a href=\"https:\/\/learn.microsoft.com\/en-us\/sharepoint\/dev\/spfx\/compatibility#spfx-development-environment-compatibility\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >tabel\u0119 kompatybilno\u015bci<\/a>, aby upewni\u0107 si\u0119, \u017ce Twoje pakiety Node.js, TypeScript i React r\u00f3wnie\u017c maj\u0105 odpowiedni\u0105 wersj\u0119. \u00a0<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Temat adaptive cards wydaje si\u0119 by\u0107 bardzo skomplikowany. Od czego mam zacz\u0105\u0107?<\/strong><\/h2>\n\n\n\n<p>Zainspiruj si\u0119 <a href=\"https:\/\/adaptivecards.io\/samples\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >projektami Microsoft<\/a> lub sp\u00f3jrz na <a href=\"https:\/\/github.com\/pnp\/AdaptiveCards-Templates\/tree\/main\/samples\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >przyk\u0142ady dostarczone przez PnP<\/a>. Gdy znajdziesz co\u015b interesuj\u0105cego, dostosuj rozwi\u0105zanie <a href=\"https:\/\/adaptivecards.io\/designer\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >w projektancie<\/a>.<\/p>\n\n\n\n<p>Pami\u0119taj \u2013 nie musisz kopiowa\u0107 swojego szablonu do projektanta za ka\u017cdym razem, gdy chcesz go zaktualizowa\u0107! Do niewielkich zmian i szybkiego podgl\u0105du \u015bwietnie sprawdzi si\u0119 rozszerzenie Microsoft \u201eAdaptive Card Previewer\u201d. Zainstaluj je w swoim Visual Studio Code.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/08\/pic2.png\"><img decoding=\"async\" width=\"605\" height=\"151\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/08\/pic2.png\" alt=\"Rozszerzenie Adaptive Card Previewer w Visual Studio Code\" class=\"wp-image-28899\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/08\/pic2.png 605w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/08\/pic2-300x75.png 300w\" sizes=\"(max-width: 605px) 100vw, 605px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 2 Rozszerzenie Adaptive Card Previewer w Visual Studio Code<\/figcaption><\/figure>\n\n\n\n<p>I pami\u0119taj \u2013 jak w przypadku wielu umiej\u0119tno\u015bci, trening czyni mistrza!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Ikona rozszerzenia nie jest wy\u015bwietlana. Czy \u017ale co\u015b ustawiam?<\/strong><\/h2>\n\n\n\n<p>Po pierwsze, zajrzyj do poradnika Microsoft \u2013 znajdziesz tam informacj\u0119, \u017ce ikon\u0119 nale\u017cy ustawi\u0107 w manife\u015bcie rozwi\u0105zania. Sugeruj\u0119 skonfigurowanie dw\u00f3ch w\u0142a\u015bciwo\u015bci ikon:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u201eofficeFabricIconFontName\u201d \u2013 aby Twoje rozwi\u0105zanie mia\u0142o \u0142adnie wygl\u0105daj\u0105cy obrazek w przyborniku edytora,<\/li>\n\n\n\n<li>\u201eiconProperty\u201d (zgodnie z sugesti\u0105 Microsoft) \u2013 do wy\u015bwietlenia ikony na pasku Twojego adaptive card.<\/li>\n<\/ul>\n\n\n\n<p>Po drugie, upewnij si\u0119, \u017ce wykorzystujesz prawid\u0142ow\u0105 ikonografi\u0119. Jak zawsze, dla w\u0142a\u015bciwo\u015bci \u201eofficeFabricIconFontName\u201d mo\u017cesz u\u017cy\u0107 ikon Fluent UI. W przypadku obrazka na pasku adaptive card, ob\u0142ugiwane s\u0105 <a href=\"https:\/\/learn.microsoft.com\/en-us\/sharepoint\/dev\/spfx\/viva\/get-started\/fluent-icons-limitations#card-designer-icons-set\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >tylko wybrane warto\u015bci<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>U\u017cytkownik powiedzia\u0142, \u017ce m\u00f3j ACE jest trudny do przegl\u0105dania, a obrazy maj\u0105 dziwne t\u0142o! W mojej aplikacji wszystko wygl\u0105da \u015bwietnie!<\/strong><\/h2>\n\n\n\n<p>Pami\u0119taj, \u017ce u\u017cytkownicy maj\u0105 mo\u017cliwo\u015b\u0107 zmiany motyw\u00f3w swoich aplikacji. W rezultacie Tw\u00f3j pi\u0119kny adaptive card mo\u017ce wygl\u0105da\u0107 inaczej dla r\u00f3\u017cnych odbiorc\u00f3w.<\/p>\n\n\n\n<p>Motyw u\u017cytkownika mo\u017cesz sprawdzi\u0107 w funkcji onInit swojego rozwi\u0105zania:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nthis.context.sdks?.microsoftTeams?.teamsJs.app.getContext().then((context) =&gt; {\n    this.setState({\n      theme: context.app.appInfo.theme\n    });\n  });\n<\/pre><\/div>\n\n\n<p><strong>Wa\u017cne!<\/strong> Upewnij si\u0119, \u017ce u\u017cywasz SPFx co najmniej w wersji 1.18 \u2013 w przeciwnym razie w kontek\u015bcie mo\u017ce brakowa\u0107 w\u0142a\u015bciwo\u015bci \u201esdks\u201d. Teraz mo\u017cesz wyrenderowa\u0107 swoj\u0105 kart\u0119 zgodnie z aktualnym motywem, o kt\u00f3rej dowiesz si\u0119 wi\u0119cej <a href=\"https:\/\/learn.microsoft.com\/en-us\/sharepoint\/dev\/spfx\/viva\/get-started\/making-quickview-compatable-darkmode-mobile\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >ze strony Microsoftu<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/08\/pic3-scaled.jpg\"><img decoding=\"async\" width=\"1024\" height=\"646\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/08\/pic3-1024x646.jpg\" alt=\"Przyk\u0142ad rozwi\u0105zania reaguj\u0105cego na r\u00f3\u017cne motywy \" class=\"wp-image-28901\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/08\/pic3-1024x646.jpg 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/08\/pic3-300x189.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/08\/pic3-768x485.jpg 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/08\/pic3-1536x970.jpg 1536w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/08\/pic3-2048x1293.jpg 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 3 <a href=\"https:\/\/learn.microsoft.com\/en-us\/sharepoint\/dev\/images\/viva-design\/img_quickview_tutorial_light_and_dark.png\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >Przyk\u0142ad rozwi\u0105zania reaguj\u0105cego na r\u00f3\u017cne motywy<\/a><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Chc\u0119 pokaza\u0107 dynamiczn\u0105 zawarto\u015b\u0107 na moim adaptive card. Jak mog\u0119 wy\u015bwietli\u0107 elementy listy SharePoint? Czy istnieje spos\u00f3b, aby przekaza\u0107 je do szablonu?<\/strong><\/h2>\n\n\n\n<p>Oczywi\u015bcie, \u017ce tak! Po pierwsze, odwo\u0142aj si\u0119 do swoich danych w klasie z \u201equick view\u201d \u2013 na przyk\u0142ad przeka\u017c warto\u015bci ze stanu adaptive card:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\npublic get data(): IQuickViewData {\n  return {\n    items: this.state.items\n  };\n}\n<\/pre><\/div>\n\n\n<p>Dzi\u0119ki temu potem mo\u017cesz wy\u015bwietli\u0107 elementy listy w widoku swojej karty. Pami\u0119taj, \u017ce kontener nadrz\u0119dny powinien mie\u0107 ustawion\u0105 w\u0142a\u015bciwo\u015b\u0107 \u201e$data\u201d:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n{\n  &quot;type&quot;: &quot;AdaptiveCard&quot;,\n  &quot;$schema&quot;: &quot;http:\/\/adaptivecards.io\/schemas\/adaptive-card.json&quot;,\n  &quot;version&quot;: &quot;1.5&quot;,\n  &quot;body&quot;: &#x5B;\n    {\n      &quot;type&quot;: &quot;Container&quot;,\n      &quot;$data&quot;: &quot;${items}&quot;,\n      &quot;items&quot;: &#x5B;\n        {\n          &quot;type&quot;: &quot;TextBlock&quot;,\n          &quot;text&quot;: &quot;${title}&quot;,\n        },\n        \u2026\n      ]\n    }\n}\n<\/pre><\/div>\n\n\n<p>W efekcie na karcie zostan\u0105 wy\u015bwietlone wszystkie pozycje z listy! Podobnie jak w przypadku w\u0142a\u015bciwo\u015bci \u201edata\u201d, w\u0142a\u015bciwo\u015bci elementu s\u0105 identyfikowane za pomoc\u0105 znaku dolara, na przyk\u0142ad \u201e${title}\u201d.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Wygl\u0105da na to, \u017ce adaptive card nie pozwala na u\u017cywanie ikon w swoim schemacie. Naprawd\u0119 chc\u0119 u\u017cywa\u0107 ikony Fluent UI na mojej karcie. Co powinienem zrobi\u0107?<\/strong><\/h2>\n\n\n\n<p>Zamiast tego u\u017cyj obrazu! Odwo\u0142aj si\u0119 do adresu URL zdj\u0119cia:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n{\n      &quot;type&quot;: &quot;Image&quot;,\n      &quot;url&quot;: &quot;https:\/\/adaptivecards.io\/content\/cats\/1.png&quot;,\n      &quot;altText&quot;: &quot;Cat&quot;\n    }\n<\/pre><\/div>\n\n\n<p>lub alternatywnie przekonwertuj ikon\u0119 na format base64:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n{\n      &quot;type&quot;: &quot;Image&quot;,\n      &quot;url&quot;: &quot;data:image\/png;base64,iVBORw0KGgoAAAA\u2026&quot;,\n      &quot;altText&quot;: &quot;Cat&quot;\n    }\n<\/pre><\/div>\n\n\n<p>Mo\u017cesz poszuka\u0107 w Internecie konwerter\u00f3w obraz\u00f3w lub wypr\u00f3bowa\u0107 to <a href=\"https:\/\/codepen.io\/joshmcrty\/pen\/GOBWeV\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >sprytne rozwi\u0105zanie CodePen<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Podsumowanie<\/strong><\/h2>\n\n\n\n<p>Mam nadziej\u0119, \u017ce odpowiedzia\u0142am na najcz\u0119\u015bciej pojawiaj\u0105ce si\u0119 pytania i dzi\u0119ki temu \u0142atwiej odnajdziesz si\u0119 w \u015bwiecie Adaptive Card Extension. Ch\u0119tnie dowiem si\u0119, jakie s\u0105 Twoje porady i obserwacje na temat pracy z tym narz\u0119dziem \ud83d\ude0a<\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;28896&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;2&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;5&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;11&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;5\\\/5 ( votes: 2)&quot;,&quot;size&quot;:&quot;18&quot;,&quot;title&quot;:&quot;Adaptive Card Extension \u2013 wskaz\u00f3wki i porady dla programist\u00f3w&quot;,&quot;width&quot;:&quot;139.5&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} ( {votes}: {count})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 139.5px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 14.4px;\">\n            5\/5 ( votes: 2)    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Je\u015bli jeste\u015b programist\u0105 i korzystasz z Viva Connections, by\u0107 mo\u017ce wiesz, \u017ce istnieje dedykowany typ komponent\u00f3w SPFx do tej platformy &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/adaptive-card-extension-wskazowki-i-porady-dla-programistow\/\">Continued<\/a><\/p>\n","protected":false},"author":546,"featured_media":28904,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","inline_featured_image":false,"footnotes":""},"categories":[1314],"tags":[2652,1546,1512,624],"class_list":["post-28896","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development-na-twardo","tag-adaptive-card-extension","tag-przeglad-narzedzi","tag-poradnik","tag-microsoft"],"acf":[],"aioseo_notices":[],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/08\/Adaptive-Card-Extension-\u2013-wskazowki-i-porady-dla-programistow.jpg","category_names":["Development na twardo"],"_links":{"self":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/28896"}],"collection":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/users\/546"}],"replies":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/comments?post=28896"}],"version-history":[{"count":1,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/28896\/revisions"}],"predecessor-version":[{"id":28903,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/28896\/revisions\/28903"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media\/28904"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media?parent=28896"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/categories?post=28896"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/tags?post=28896"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}