[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"btz8hO-MXSFLpybqvfjYVBre4OvrEJO1wFySe3Zmv-s":3,"9_t0YFtO844PW3-iCfPxRTbw8yv0-2zzu2bChZFenjo":39,"uEKcLKDoe5DGxbtSpKwcVYA_eOFBKLqB3cp-LNHGRCo":75,"waQ_iCy4NagvZx116BgPjSQVCVfDGIE6taoBjZ02R58":190,"_apollo:default":232},{"menu":4},{"__typename":5,"id":6,"name":7,"items":8},"Menu","footer","Fußzeile",[9,24,29,34],{"__typename":10,"id":11,"title":12,"description":13,"url":14,"langcode":15,"internal":20,"expanded":21,"attributes":22},"MenuItem","e2873307-b50a-4aab-b6b2-1950fd99c72e","Impressum",null,"/impressum",{"__typename":16,"id":17,"name":18,"direction":19},"Language","de","German","ltr",true,false,{"__typename":23,"class":13},"MenuItemAttributes",{"__typename":10,"id":25,"title":26,"description":13,"url":27,"langcode":15,"internal":20,"expanded":21,"attributes":28},"2cd9b7c9-142a-4ea3-b898-a0952c54a195","Datenschutz","/datenschutz",{"__typename":23,"class":13},{"__typename":10,"id":30,"title":31,"description":13,"url":32,"langcode":15,"internal":20,"expanded":21,"attributes":33},"a5effba3-5a8c-4125-8d78-0cdba09824db","AGB","/agb",{"__typename":23,"class":13},{"__typename":10,"id":35,"title":36,"description":13,"url":37,"langcode":15,"internal":21,"expanded":21,"attributes":38},"114bf071-bdbb-44cf-85c1-69e9d9e0777d","Newsletter","https://liechtenecker.at/newsletter-subscribe",{"__typename":23,"class":13},{"menu":40},{"__typename":5,"id":41,"name":42,"items":43},"nuxt-main-menu","Nuxt Hauptmenü",[44,50,55,60,65,70],{"__typename":10,"id":45,"title":46,"description":13,"url":47,"langcode":48,"internal":20,"expanded":21,"attributes":49},"9ffc5019-cbd8-4b2e-8eb7-9feae486d4a1","Blog","/know-how",{"__typename":16,"id":17,"name":18,"direction":19},{"__typename":23,"class":13},{"__typename":10,"id":51,"title":52,"description":13,"url":53,"langcode":48,"internal":20,"expanded":21,"attributes":54},"1c7a5430-8a42-4b24-9544-252adabc2f4c","Projekte","/projekte",{"__typename":23,"class":13},{"__typename":10,"id":56,"title":57,"description":13,"url":58,"langcode":48,"internal":20,"expanded":21,"attributes":59},"9c4feedc-79e4-4fbf-b68c-065f33ebfe4c","Sparring","/workshop-ux-sparring-fuer-unternehmen",{"__typename":23,"class":13},{"__typename":10,"id":61,"title":62,"description":13,"url":63,"langcode":48,"internal":20,"expanded":21,"attributes":64},"3b77a27b-272a-489f-843e-53e23ed07741","Trainings","/liechtenecker-ux-academy",{"__typename":23,"class":13},{"__typename":10,"id":66,"title":67,"description":13,"url":68,"langcode":48,"internal":20,"expanded":21,"attributes":69},"ce0bb82b-e1ee-4036-be95-f693a62e9f4a","Über uns","/about",{"__typename":23,"class":13},{"__typename":10,"id":71,"title":72,"description":13,"url":73,"langcode":48,"internal":20,"expanded":21,"attributes":74},"04a19381-81a9-4694-8653-182d8855d2b5","Kontakt","/kontakt",{"__typename":23,"class":13},{"route":76},{"__typename":77,"entity":78},"RouteInternal",{"__typename":79,"id":80,"title":81,"changed":82,"created":88,"langcode":91,"path":92,"promote":21,"status":20,"sticky":21,"metatag":93,"postCategory":117,"postContentElements":13,"evergreen":13,"tags":142,"postWpBody":156,"wpHeaderImage":160,"wpHeaderImageOld":172,"wpHeaderImageOldSmall":13,"wpOgImage":173,"wpPromotedTeaserImage":182,"wpShareDescription":13,"wpShareTitle":13,"wpTeaserText":159,"wpYoastHead":183,"author":184},"NodeWpPost","751","API Dokumentation mit Open API",{"__typename":83,"timestamp":84,"timezone":85,"offset":86,"time":87},"DateTime",1663823532,"UTC","+00:00","2022-09-22T05:12:12+00:00",{"__typename":83,"timestamp":89,"timezone":85,"offset":86,"time":90},1663221892,"2022-09-15T06:04:52+00:00",{"__typename":16,"id":17,"name":18,"direction":19},"/blog/api-dokumentation-mit-open-api",[94,101,108,113],{"__typename":95,"tag":96,"attributes":97},"MetaTagValue","meta",{"__typename":98,"name":99,"content":100},"MetaTagValueAttributes","title","API Dokumentation mit Open API | Liechtenecker UX Design Studio",{"__typename":102,"tag":103,"attributes":104},"MetaTagLink","link",{"__typename":105,"href":106,"hreflang":13,"rel":107,"media":13,"sizes":13,"type":13},"MetaTagLinkAttributes","http://liechtenecker-cms.liechtenecker-cms.svc.cluster.local/blog/api-dokumentation-mit-open-api","canonical",{"__typename":109,"tag":96,"attributes":110},"MetaTagProperty",{"__typename":111,"property":112,"content":81},"MetaTagPropertyAttributes","og:title",{"__typename":109,"tag":96,"attributes":114},{"__typename":111,"property":115,"content":116},"og:image","http://liechtenecker-cms.liechtenecker-cms.svc.cluster.local/sites/default/files/styles/meta_og_image/public/wp-migration/wordpress-media-image/2022/09/Fabian_sharing-1.jpg?h=3ecc83bb&itok=4ewLOxj-",{"__typename":118,"id":119,"name":120,"path":121,"status":20,"weight":122,"description":123,"langcode":127,"changed":128,"metatag":131},"TermCategories","7","Technologie","/kategorie/technologie",0,{"__typename":124,"processed":125,"format":126},"Text","Development Themen sowie zukünftige Technologien, mit denen wir uns auseinandersetzen. ","wp_html",{"__typename":16,"id":17,"name":18,"direction":19},{"__typename":83,"timestamp":129,"timezone":85,"offset":86,"time":130},1713772777,"2024-04-22T07:59:37+00:00",[132,135,139],{"__typename":95,"tag":96,"attributes":133},{"__typename":98,"name":99,"content":134},"Technologie | Liechtenecker UX Design Studio",{"__typename":95,"tag":96,"attributes":136},{"__typename":98,"name":137,"content":138},"description","Development Themen sowie zukünftige Technologien, mit denen wir uns auseinandersetzen.",{"__typename":102,"tag":103,"attributes":140},{"__typename":105,"href":141,"hreflang":13,"rel":107,"media":13,"sizes":13,"type":13},"http://liechtenecker-cms.liechtenecker-cms.svc.cluster.local/kategorie/technologie",[143,148,152],{"__typename":144,"id":145,"name":146,"path":147,"weight":122},"TermTags","88","api dokumentation","/tag/api-dokumentation",{"__typename":144,"id":149,"name":150,"path":151,"weight":122},"129","backend entwickler","/tag/backend-entwickler",{"__typename":144,"id":153,"name":154,"path":155,"weight":122},"923","openapi","/tag/openapi",{"__typename":157,"processed":158,"format":126,"summary":159},"TextSummary","\n\u003Cdiv class=\"grid-wrapper\">\n    \u003Cdiv class=\"row\">\n        \u003Cdiv class=\"default-left col-xsmall-12 col-medium-6 col-medium-offset-2 col-large-6 col-large-offset-3 \">\n            \u003Cdiv class=\"blog-drop-cap\">\n                    \u003Cdiv class=\"blog-drop-cap-background\">\nW\u003C/div>\n\u003Cp class=\"has-drop-cap\">Wir bei Liechtenecker verwenden dafür die OpenAPI Technologie, die ich euch hiermit auch etwas näher bringen möchte. Doch bevor wir zu OpenAPI kommen, will ich auf ein paar W-Fragen eingehen, um das Thema näher zu beleuchten. Die grundlegende Frage “Was ist eine API”, muss ich hier natürlich überspringen, um den Rahmen nicht zu sprengen. Wenn ihr von Rest noch nie etwas gehört habt, empfehle ich euch z.B. \u003Ca href=\"https://restfulapi.net/\" target=\"_blank\" rel=\"noreferrer noopener\">diese Seite\u003C/a> um einen Überblick zu bekommen.\u003C/p>\n\u003C/div>        \u003C/div>\n    \u003C/div>\n\u003C/div>\n\n\n\n\n\u003Cdiv class=\"grid-wrapper\">\n    \u003Cdiv class=\"row\">\n        \u003Cdiv class=\"default-left col-xsmall-12 col-medium-6 col-medium-offset-2 col-large-6 col-large-offset-3 \">\n            \n\u003Ch2>1. Warum überhaupt eine API dokumentieren?\u003C/h2>\n        \u003C/div>\n    \u003C/div>\n\u003C/div>\n\n\n\n\n\u003Cdiv class=\"grid-wrapper\">\n    \u003Cdiv class=\"row\">\n        \u003Cdiv class=\"default-left col-xsmall-12 col-medium-6 col-medium-offset-2 col-large-6 col-large-offset-3 \">\n            \n\u003Cp>Auch wenn die Frage für viele von euch vielleicht überflüssig erscheint, möchte ich kurz auf die Motivation zur Dokumentation von APIs eingehen. Einer der Hauptgründe für die Dokumentation von Software ist wohl die Projektübergabe. Oft musst du als Developer:in an einem Code weiterarbeiten, der von jemand anderem entwickelt wurde. Es ist denke ich klar, dass dir das umso leichter fallen wird, umso besser der bestehende Code dokumentiert ist.&nbsp;\u003C/p>\n        \u003C/div>\n    \u003C/div>\n\u003C/div>\n\n\n\n\n\u003Cdiv class=\"grid-wrapper\">\n    \u003Cdiv class=\"row\">\n        \u003Cdiv class=\"default-left col-xsmall-12 col-medium-6 col-medium-offset-2 col-large-6 col-large-offset-3 \">\n            \n\u003Cp>Bei APIs gibt es aber noch ein paar weitere Gründe, warum eine Dokumentation wichtig ist. Eine API dient ja grundsätzlich immer dazu, verschiedene voneinander entkoppelte Softwarekomponenten miteinander zu verbinden. Da aber bei größeren Projekten meist nicht nur eine Person beteiligt ist, sondern oft das Team in Backend und Frontend aufgeteilt wird, ist die Dokumentation auch hier extrem wichtig, damit alle Entwickler:innen wissen, wie die Schnittstelle funktioniert, bzw. funktionieren sollte. \u003C/p>\n        \u003C/div>\n    \u003C/div>\n\u003C/div>\n\n\n\n\n\u003Cdiv class=\"grid-wrapper\">\n    \u003Cdiv class=\"row\">\n        \u003Cdiv class=\"default-left col-xsmall-12 col-medium-6 col-medium-offset-2 col-large-6 col-large-offset-3 \">\n            \n\u003Cp>Also auch für die Person, welche die API dann schlussendlich entwickelt, ist die Dokumentation von großer Bedeutung, da damit eine “Source of Truth” geschaffen wird, die schlussendlich definiert, wie die Schnittstelle technisch zu funktionieren hat. Man spricht daher auch gern von einer API Spezifizierung. Ein letzter Punkt, den ich noch erwähnen möchte, ist Testing. Egal ob \u003Ca href=\"/blog/kim-kardashian-wuerde-in-php-tests-schreiben\" target=\"_blank\" rel=\"noreferrer noopener\">automatisiert getestet\u003C/a> wird oder manuell, eine gute Dokumentation ist ein solide Grundlage um Testfälle zu erstellen.&nbsp;\u003C/p>\n        \u003C/div>\n    \u003C/div>\n\u003C/div>\n\n\n\n\n\u003Cdiv class=\"grid-wrapper\">\n    \u003Cdiv class=\"row\">\n        \u003Cdiv class=\"default-left col-xsmall-12 col-medium-6 col-medium-offset-2 col-large-6 col-large-offset-3 \">\n            \n\u003Ch2>2. Wie dokumentiert man nun eine API?\u003C/h2>\n        \u003C/div>\n    \u003C/div>\n\u003C/div>\n\n\n\n\n\u003Cdiv class=\"grid-wrapper\">\n    \u003Cdiv class=\"row\">\n        \u003Cdiv class=\"default-left col-xsmall-12 col-medium-6 col-medium-offset-2 col-large-6 col-large-offset-3 \">\n            \n\u003Cp>Nachdem wir das “Was” gekonnt übersprungen haben und auf das “Warum” bereits eingegangen sind, wollen wir uns endlich dem “Wie” widmen. Auf den ersten Blick scheint die Frage recht trivial. Man schreibt einfach irgendwo nieder, wie das Ding funktioniert, oder? \u003C/p>\n        \u003C/div>\n    \u003C/div>\n\u003C/div>\n\n\n\n\n\u003Cdiv class=\"grid-wrapper\">\n    \u003Cdiv class=\"row\">\n        \u003Cdiv class=\"default-left col-xsmall-12 col-medium-6 col-medium-offset-2 col-large-6 col-large-offset-3 \">\n            \n\u003Cp>Klar kann man das machen, auch wir haben in der Vergangenheit einfach Tabellen angelegt, in denen jeder Endpoint einzeln aufgelistet wird und dafür Dinge wie HTTP-Methode, Request und Response niedergeschrieben werden. Der Ansatz ist nicht unbedingt falsch, es gibt quasi keine Einarbeitungszeit für Developer:innen und die Sache ist auch vergleichsweise mit relativ wenig Aufwand erledigt.&nbsp;\u003C/p>\n        \u003C/div>\n    \u003C/div>\n\u003C/div>\n\n\n\n\n\u003Cdiv class=\"grid-wrapper\">\n    \u003Cdiv class=\"row\">\n        \u003Cdiv class=\"default-left col-xsmall-12 col-medium-6 col-medium-offset-2 col-large-6 col-large-offset-3 \">\n            \n\u003Cp>Dennoch tun sich gerade bei größeren Projekten auch einige Probleme mit dieser Methode auf. Das liegt vor allem daran, dass in der Praxis selten alle Endpoints komplett unterschiedlich sind, sondern sich immer gewisse Muster wiederfinden lassen. Ändert man nun etwas in der Codebase, so kann es schnell mühsam werden. \u003C/p>\n        \u003C/div>\n    \u003C/div>\n\u003C/div>\n\n\n\n\n\u003Cdiv class=\"grid-wrapper\">\n    \u003Cdiv class=\"row\">\n        \u003Cdiv class=\"default-left col-xsmall-12 col-medium-6 col-medium-offset-2 col-large-6 col-large-offset-3 \">\n            \n\u003Cp>Nur ein Feld hinzugefügt und schon muss man die Dokumentation von jedem Endpoint einzeln anpassen. Genau hier kann ein standardisiertes Format wie OpenApi Abhilfe schaffen, indem es erlaubt, Schemata und Komponenten zu definieren, die dann von mehreren Endpoints verwendet werden können. Auch eine Referenzierung auf ein Schema aus einer anderen OpenAPI Spezifizierung ist kein Problem. Somit muss die Änderung nur an einer Stelle erfolgen 🙂\u003C/p>\n        \u003C/div>\n    \u003C/div>\n\u003C/div>\n\n\n\n\n\u003Cdiv class=\"grid-wrapper\">\n    \u003Cdiv class=\"row\">\n        \u003Cdiv class=\"default-left col-xsmall-12 col-medium-6 col-medium-offset-2 col-large-6 col-large-offset-3 \">\n            \n\u003Cp>Aber es gibt noch mehr Gründe, auf Spezifikationen wie OpenAPI zu setzen, wie z.B. die Tatsache, dass das Format sich mittlerweile zu einem Industriestandard entwickelt hat. Arbeitet man mit externen Partnern zusammen, ist es natürlich hilfreich, wenn ein solcher verwendet wird, da davon ausgegangen werden kann, dass professionelle Entwickler:innen vermutlich schon damit in Berührung gekommen sind. Toll ist an Formaten wie OpenAPI auch, dass das standardisierte Format es ermöglicht maschinengelesen zu werden. \u003C/p>\n        \u003C/div>\n    \u003C/div>\n\u003C/div>\n\n\n\n\n\u003Cdiv class=\"grid-wrapper\">\n    \u003Cdiv class=\"row\">\n        \u003Cdiv class=\"default-left col-xsmall-12 col-medium-6 col-medium-offset-2 col-large-6 col-large-offset-3 \">\n            \n\u003Cp>Das macht es möglich, dass Tools wie Swagger (aus dem Swagger Projekt ist ursprünglich auch OpenAPI entstanden) z.B. einen Editor zur Verfügung stellen, der die Dokumentation validiert, oder eine UI, mit der die Dokumentation um einiges lesbarer wird und auch direkt Requests auf die API abgeschickt werden können.&nbsp;\u003C/p>\n        \u003C/div>\n    \u003C/div>\n\u003C/div>\n\n\n\n\n\u003Cdiv class=\"grid-wrapper\">\n    \u003Cdiv class=\"row\">\n        \u003Cdiv class=\"default-left col-xsmall-12 col-medium-6 col-medium-offset-2 col-large-6 col-large-offset-3 \">\n            \n\u003Ch3>Hier nochmal ein Überblick der Vorteile von OpenAPI:\u003C/h3>\n        \u003C/div>\n    \u003C/div>\n\u003C/div>\n\n\n\n\n\u003Cdiv class=\"grid-wrapper\">\n    \u003Cdiv class=\"row\">\n        \u003Cdiv class=\"default-left col-xsmall-12 col-medium-6 col-medium-offset-2 col-large-6 col-large-offset-3  standard-list\">\n            \n\u003Cul>\u003Cli>Wiederverwendbarkeit von Komponenten und Schemata\u003C/li>\u003Cli>Die Dokumentation kann validiert werden&nbsp;\u003C/li>\u003Cli>Gute Lesbarkeit durch Swagger UI\u003C/li>\u003Cli>Testen der API durch Swagger UI\u003C/li>\u003C/ul>\n        \u003C/div>\n    \u003C/div>\n\u003C/div>\n\n\n\n\n\u003Cdiv class=\"grid-wrapper\">\n    \u003Cdiv class=\"row\">\n        \u003Cdiv class=\"default-left col-xsmall-12 col-medium-6 col-medium-offset-2 col-large-6 col-large-offset-3 \">\n            \n\u003Cp>Ich möchte hier noch einmal betonen, dass OpenAPI nicht der einzige Standard zur Beschreibung von REST-Apis ist. Ein anderer Standard, der große Verbreitung genießt, wäre z.B. RAML. Auch dieser bringt viele der oben beschriebenen Vorteile mit. Falls du interessiert bist an einem direkten Vergleich der zwei, oder ein glühender Verfechter von RAML bist, schreib gerne einen Kommentar!&nbsp;\u003C/p>\n        \u003C/div>\n    \u003C/div>\n\u003C/div>\n\n\n\n\n\u003Cdiv class=\"grid-wrapper\">\n    \u003Cdiv class=\"row\">\n        \u003Cdiv class=\"default-left col-xsmall-12 col-medium-6 col-medium-offset-2 col-large-6 col-large-offset-3 \">\n            \n\u003Ch2>Fazit und Ausblick\u003C/h2>\n        \u003C/div>\n    \u003C/div>\n\u003C/div>\n\n\n\n\n\u003Cdiv class=\"grid-wrapper\">\n    \u003Cdiv class=\"row\">\n        \u003Cdiv class=\"default-left col-xsmall-12 col-medium-6 col-medium-offset-2 col-large-6 col-large-offset-3 \">\n            \n\u003Cp>Wie ihr in dieser kurzen Einführung gesehen haben, ist es für alle Projektbeteiligten von großem Vorteil, wenn APIs sauber in einem standardisierten Format spezifiziert und dokumentiert werden. Wenn du mehr über OpenAPI erfahren willst, verweise ich an dieser Stelle auf die sehr ausführliche \u003Ca href=\"https://spec.openapis.org/oas/v3.1.0\" target=\"_blank\" rel=\"noreferrer noopener\">Dokumentation\u003C/a>.\u003C/p>\n        \u003C/div>\n    \u003C/div>\n\u003C/div>\n\n","In diesem Blog soll es um ein Thema gehen, das in der Softwareentwicklung leider oft etwas stiefmütterlich behandelt wird: Dokumentation, bzw. im Speziellen die Dokumentation von APIs. ",{"__typename":161,"id":162,"excludeFromScreenreader":13,"mediaImage":163,"name":168,"path":171,"status":20},"MediaImage","474",{"__typename":164,"url":165,"width":166,"height":167,"alt":13,"title":168,"size":169,"mime":170},"Image","http://liechtenecker-cms.liechtenecker-cms.svc.cluster.local/sites/default/files/wp-migration/wordpress-media-image/2022/09/fabian_header-1-scaled.jpg",2560,1156,"fabian_header",992454,"image/jpeg","/media/474/edit",{"__typename":161,"id":162,"excludeFromScreenreader":13,"mediaImage":163,"name":168,"path":171,"status":20},{"__typename":161,"id":174,"excludeFromScreenreader":13,"mediaImage":175,"name":179,"path":181,"status":20},"473",{"__typename":164,"url":176,"width":177,"height":178,"alt":13,"title":179,"size":180,"mime":170},"http://liechtenecker-cms.liechtenecker-cms.svc.cluster.local/sites/default/files/wp-migration/wordpress-media-image/2022/09/Fabian_sharing-1.jpg",1204,630,"Fabian_sharing",907134,"/media/473/edit",{"__typename":161,"id":174,"excludeFromScreenreader":13,"mediaImage":175,"name":179,"path":181,"status":20},"\u003C!-- This site is optimized with the Yoast SEO plugin v15.7 - https://yoast.com/wordpress/plugins/seo/ -->\n\u003Cmeta name=\"description\" content=\"In diesem Blog geht es um ein Thema, das in der Softwareentwicklung oft zu wenig behandelt wird: Die Dokumentation von APIs.\" />\n\u003Cmeta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" />\n\u003Clink rel=\"canonical\" href=\"https://legacy.liechtenecker.dev/blog/api-dokumentation-mit-open-api/\" />\n\u003Cmeta property=\"og:locale\" content=\"de_DE\" />\n\u003Cmeta property=\"og:type\" content=\"article\" />\n\u003Cmeta property=\"og:title\" content=\"API Dokumentation mit Open API - Liechtenecker\" />\n\u003Cmeta property=\"og:description\" content=\"In diesem Blog geht es um ein Thema, das in der Softwareentwicklung oft zu wenig behandelt wird: Die Dokumentation von APIs.\" />\n\u003Cmeta property=\"og:url\" content=\"https://legacy.liechtenecker.dev/blog/api-dokumentation-mit-open-api/\" />\n\u003Cmeta property=\"og:site_name\" content=\"Liechtenecker\" />\n\u003Cmeta property=\"article:published_time\" content=\"2022-09-15T08:04:52+00:00\" />\n\u003Cmeta property=\"article:modified_time\" content=\"2022-09-22T07:12:12+00:00\" />\n\u003Cmeta name=\"twitter:card\" content=\"summary_large_image\" />\n\u003Cmeta name=\"twitter:label1\" content=\"Geschätzte Lesezeit\">\n\t\u003Cmeta name=\"twitter:data1\" content=\"4 Minuten\">\n\u003Cscript type=\"application/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https://legacy.liechtenecker.dev/#website\",\"url\":\"https://legacy.liechtenecker.dev/\",\"name\":\"Liechtenecker\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https://legacy.liechtenecker.dev/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de-DE\"},{\"@type\":\"WebPage\",\"@id\":\"https://legacy.liechtenecker.dev/blog/api-dokumentation-mit-open-api/#webpage\",\"url\":\"https://legacy.liechtenecker.dev/blog/api-dokumentation-mit-open-api/\",\"name\":\"API Dokumentation mit Open API - Liechtenecker\",\"isPartOf\":{\"@id\":\"https://legacy.liechtenecker.dev/#website\"},\"datePublished\":\"2022-09-15T08:04:52+00:00\",\"dateModified\":\"2022-09-22T07:12:12+00:00\",\"author\":{\"@id\":\"https://legacy.liechtenecker.dev/#/schema/person/6dfb3439b4a9b40be74f4265cc2bf3b0\"},\"description\":\"In diesem Blog geht es um ein Thema, das in der Softwareentwicklung oft zu wenig behandelt wird: Die Dokumentation von APIs.\",\"inLanguage\":\"de-DE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https://legacy.liechtenecker.dev/blog/api-dokumentation-mit-open-api/\"]}]},{\"@type\":\"Person\",\"@id\":\"https://legacy.liechtenecker.dev/#/schema/person/6dfb3439b4a9b40be74f4265cc2bf3b0\",\"name\":\"Fabian Schiel\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https://legacy.liechtenecker.dev/#personlogo\",\"inLanguage\":\"de-DE\",\"url\":\"https://secure.gravatar.com/avatar/eb6a4e1a97469169c51e2e0f93be1ff6?s=96&d=mm&r=g\",\"caption\":\"Fabian Schiel\"}}]}\u003C/script>\n\u003C!-- / Yoast SEO plugin. -->",{"__typename":185,"id":186,"myRole":187,"name":188,"nickname":189},"User","6","Backend-Dev","f-schiel","Fabian Schiel",{"latestKnowhow":191},[192,207,220],{"__typename":79,"id":193,"title":194,"path":195,"wpTeaserText":196,"wpPromotedTeaserImage":13,"wpHeaderImage":197},"1619","Behind the scenes: Ein Barrierefreiheits-Audit","/blog/behind-scenes-ein-barrierefreiheits-audit","”Entspricht unsere Website den gesetzlichen Anforderungen und wenn nicht, was genau müssen wir ändern?”\r\nDiese Frage lieben wir. Echt! Und so sieht unsere Antwort aus.",{"__typename":161,"id":198,"excludeFromScreenreader":13,"mediaImage":199,"name":205,"path":206,"status":20},"3364",{"__typename":164,"url":200,"width":201,"height":202,"alt":203,"title":13,"size":204,"mime":170},"http://liechtenecker-cms.liechtenecker-cms.svc.cluster.local/sites/default/files/2026-04/Headerbilder%20Blogartikel%20Behind%20the%20scene%20Accessibility%20Audit.jpg",2880,1300,"Headline mit Sujet: Tastatur mit Symbolen für Barrierefreiheit im Fokus auf hellem  Hintergrund",838204,"Headerbilder Blogartikel Behind the scene Accessibility Audit.jpg","/media/3364/edit",{"__typename":79,"id":208,"title":209,"path":210,"wpTeaserText":211,"wpPromotedTeaserImage":13,"wpHeaderImage":212},"1616","Agentic KI trifft Design-System: Wie unser Presentation Maker entstand.","/blog/agentic-ki-trifft-design-system-wie-unser-presentation-maker-entstand","Nein, wir wollen euch jetzt nicht erzählen, was KI alles kann. Aber wir möchten euch zeigen, wie wir mit KI umgehen. \r\n",{"__typename":161,"id":213,"excludeFromScreenreader":13,"mediaImage":214,"name":218,"path":219,"status":20},"3355",{"__typename":164,"url":215,"width":201,"height":202,"alt":216,"title":13,"size":217,"mime":170},"http://liechtenecker-cms.liechtenecker-cms.svc.cluster.local/sites/default/files/2026-03/BLOG_Presentation%20Tool_TITEL-2880x1300px_1.jpg","Lukas und Daniel  arbeiten an Computern im Büro.",2621988,"BLOG_Presentation Tool_TITEL-2880x1300px.jpg","/media/3355/edit",{"__typename":79,"id":221,"title":222,"path":223,"wpTeaserText":13,"wpPromotedTeaserImage":13,"wpHeaderImage":224},"1606","UI Trends 2026","/blog/ui-trends-2026",{"__typename":161,"id":225,"excludeFromScreenreader":21,"mediaImage":226,"name":230,"path":231,"status":20},"3303",{"__typename":164,"url":227,"width":201,"height":202,"alt":228,"title":13,"size":229,"mime":170},"http://liechtenecker-cms.liechtenecker-cms.svc.cluster.local/sites/default/files/2026-01/BLOG_Trendbericht%202026.jpg","UI Trends 2026, gelber Hintergrund, schwarze Schrift.",4700748,"BLOG_Trendbericht 2026.jpg","/media/3303/edit",{"Language:de":233,"MenuItem:e2873307-b50a-4aab-b6b2-1950fd99c72e":234,"MenuItem:2cd9b7c9-142a-4ea3-b898-a0952c54a195":238,"MenuItem:a5effba3-5a8c-4125-8d78-0cdba09824db":241,"MenuItem:114bf071-bdbb-44cf-85c1-69e9d9e0777d":244,"Menu:footer":247,"ROOT_QUERY":257,"MenuItem:9ffc5019-cbd8-4b2e-8eb7-9feae486d4a1":273,"MenuItem:1c7a5430-8a42-4b24-9544-252adabc2f4c":276,"MenuItem:9c4feedc-79e4-4fbf-b68c-065f33ebfe4c":279,"MenuItem:3b77a27b-272a-489f-843e-53e23ed07741":282,"MenuItem:ce0bb82b-e1ee-4036-be95-f693a62e9f4a":285,"MenuItem:04a19381-81a9-4694-8653-182d8855d2b5":288,"Menu:nuxt-main-menu":291,"TermCategories:7":305,"TermTags:88":316,"TermTags:129":317,"TermTags:923":318,"MediaImage:474":319,"MediaImage:473":321,"User:6":323,"NodeWpPost:751":324,"MediaImage:3364":355,"NodeWpPost:1619":357,"MediaImage:3355":360,"NodeWpPost:1616":362,"MediaImage:3303":365,"NodeWpPost:1606":367},["null","__typename",16,"id",17,"name",18,"direction",19],["null","__typename",10,"id",11,"title",12,"description",13,"url",14,"langcode",235,"internal",20,"expanded",21,"attributes",237],{"__ref":236},"Language:de",["null","__typename",23,"class",13],["null","__typename",10,"id",25,"title",26,"description",13,"url",27,"langcode",239,"internal",20,"expanded",21,"attributes",240],{"__ref":236},["null","__typename",23,"class",13],["null","__typename",10,"id",30,"title",31,"description",13,"url",32,"langcode",242,"internal",20,"expanded",21,"attributes",243],{"__ref":236},["null","__typename",23,"class",13],["null","__typename",10,"id",35,"title",36,"description",13,"url",37,"langcode",245,"internal",21,"expanded",21,"attributes",246],{"__ref":236},["null","__typename",23,"class",13],["null","__typename",5,"id",6,"name",7,"items",248],[249,251,253,255],{"__ref":250},"MenuItem:e2873307-b50a-4aab-b6b2-1950fd99c72e",{"__ref":252},"MenuItem:2cd9b7c9-142a-4ea3-b898-a0952c54a195",{"__ref":254},"MenuItem:a5effba3-5a8c-4125-8d78-0cdba09824db",{"__ref":256},"MenuItem:114bf071-bdbb-44cf-85c1-69e9d9e0777d",["null","__typename",258,"menu({\"name\":\"FOOTER\"})",259,"menu({\"name\":\"NUXT_MAIN_MENU\"})",261,"route({\"path\":\"/blog/api-dokumentation-mit-open-api\"})",263,"latestKnowhow({\"excludeId\":\"751\",\"limit\":3})",266],"Query",{"__ref":260},"Menu:footer",{"__ref":262},"Menu:nuxt-main-menu",["null","__typename",77,"entity",264],{"__ref":265},"NodeWpPost:751",[267,269,271],{"__ref":268},"NodeWpPost:1619",{"__ref":270},"NodeWpPost:1616",{"__ref":272},"NodeWpPost:1606",["null","__typename",10,"id",45,"title",46,"description",13,"url",47,"langcode",274,"internal",20,"expanded",21,"attributes",275],{"__ref":236},["null","__typename",23,"class",13],["null","__typename",10,"id",51,"title",52,"description",13,"url",53,"langcode",277,"internal",20,"expanded",21,"attributes",278],{"__ref":236},["null","__typename",23,"class",13],["null","__typename",10,"id",56,"title",57,"description",13,"url",58,"langcode",280,"internal",20,"expanded",21,"attributes",281],{"__ref":236},["null","__typename",23,"class",13],["null","__typename",10,"id",61,"title",62,"description",13,"url",63,"langcode",283,"internal",20,"expanded",21,"attributes",284],{"__ref":236},["null","__typename",23,"class",13],["null","__typename",10,"id",66,"title",67,"description",13,"url",68,"langcode",286,"internal",20,"expanded",21,"attributes",287],{"__ref":236},["null","__typename",23,"class",13],["null","__typename",10,"id",71,"title",72,"description",13,"url",73,"langcode",289,"internal",20,"expanded",21,"attributes",290],{"__ref":236},["null","__typename",23,"class",13],["null","__typename",5,"id",41,"name",42,"items",292],[293,295,297,299,301,303],{"__ref":294},"MenuItem:9ffc5019-cbd8-4b2e-8eb7-9feae486d4a1",{"__ref":296},"MenuItem:1c7a5430-8a42-4b24-9544-252adabc2f4c",{"__ref":298},"MenuItem:9c4feedc-79e4-4fbf-b68c-065f33ebfe4c",{"__ref":300},"MenuItem:3b77a27b-272a-489f-843e-53e23ed07741",{"__ref":302},"MenuItem:ce0bb82b-e1ee-4036-be95-f693a62e9f4a",{"__ref":304},"MenuItem:04a19381-81a9-4694-8653-182d8855d2b5",["null","__typename",118,"id",119,"name",120,"path",121,"status",20,"weight",122,"description",306,"langcode",307,"changed",308,"metatag",309],["null","__typename",124,"processed",125,"format",126],{"__ref":236},["null","__typename",83,"timestamp",129,"timezone",85,"offset",86,"time",130],[310,312,314],["null","__typename",95,"tag",96,"attributes",311],["null","__typename",98,"name",99,"content",134],["null","__typename",95,"tag",96,"attributes",313],["null","__typename",98,"name",137,"content",138],["null","__typename",102,"tag",103,"attributes",315],["null","__typename",105,"href",141,"hreflang",13,"rel",107,"media",13,"sizes",13,"type",13],["null","__typename",144,"id",145,"name",146,"path",147,"weight",122],["null","__typename",144,"id",149,"name",150,"path",151,"weight",122],["null","__typename",144,"id",153,"name",154,"path",155,"weight",122],["null","__typename",161,"id",162,"excludeFromScreenreader",13,"mediaImage",320,"name",168,"path",171,"status",20],["null","__typename",164,"url",165,"width",166,"height",167,"alt",13,"title",168,"size",169,"mime",170],["null","__typename",161,"id",174,"excludeFromScreenreader",13,"mediaImage",322,"name",179,"path",181,"status",20],["null","__typename",164,"url",176,"width",177,"height",178,"alt",13,"title",179,"size",180,"mime",170],["null","__typename",185,"id",186,"myRole",187,"name",188,"nickname",189],["null","__typename",79,"id",80,"title",81,"changed",325,"created",326,"langcode",327,"path",92,"promote",21,"status",20,"sticky",21,"metatag",328,"category",337,"contentElements",13,"evergreen",13,"tags",339,"wpBody",346,"wpHeaderImage",347,"wpHeaderImageOld",349,"wpHeaderImageOldSmall",13,"wpOgImage",350,"wpPromotedTeaserImage",352,"wpShareDescription",13,"wpShareTitle",13,"wpTeaserText",159,"wpYoastHead",183,"author",353],["null","__typename",83,"timestamp",84,"timezone",85,"offset",86,"time",87],["null","__typename",83,"timestamp",89,"timezone",85,"offset",86,"time",90],{"__ref":236},[329,331,333,335],["null","__typename",95,"tag",96,"attributes",330],["null","__typename",98,"name",99,"content",100],["null","__typename",102,"tag",103,"attributes",332],["null","__typename",105,"href",106,"hreflang",13,"rel",107,"media",13,"sizes",13,"type",13],["null","__typename",109,"tag",96,"attributes",334],["null","__typename",111,"property",112,"content",81],["null","__typename",109,"tag",96,"attributes",336],["null","__typename",111,"property",115,"content",116],{"__ref":338},"TermCategories:7",[340,342,344],{"__ref":341},"TermTags:88",{"__ref":343},"TermTags:129",{"__ref":345},"TermTags:923",["null","__typename",157,"processed",158,"format",126,"summary",159],{"__ref":348},"MediaImage:474",{"__ref":348},{"__ref":351},"MediaImage:473",{"__ref":351},{"__ref":354},"User:6",["null","__typename",161,"id",198,"excludeFromScreenreader",13,"mediaImage",356,"name",205,"path",206,"status",20],["null","__typename",164,"url",200,"width",201,"height",202,"alt",203,"title",13,"size",204,"mime",170],["null","__typename",79,"id",193,"title",194,"path",195,"wpTeaserText",196,"wpPromotedTeaserImage",13,"wpHeaderImage",358],{"__ref":359},"MediaImage:3364",["null","__typename",161,"id",213,"excludeFromScreenreader",13,"mediaImage",361,"name",218,"path",219,"status",20],["null","__typename",164,"url",215,"width",201,"height",202,"alt",216,"title",13,"size",217,"mime",170],["null","__typename",79,"id",208,"title",209,"path",210,"wpTeaserText",211,"wpPromotedTeaserImage",13,"wpHeaderImage",363],{"__ref":364},"MediaImage:3355",["null","__typename",161,"id",225,"excludeFromScreenreader",21,"mediaImage",366,"name",230,"path",231,"status",20],["null","__typename",164,"url",227,"width",201,"height",202,"alt",228,"title",13,"size",229,"mime",170],["null","__typename",79,"id",221,"title",222,"path",223,"wpTeaserText",13,"wpPromotedTeaserImage",13,"wpHeaderImage",368],{"__ref":369},"MediaImage:3303"]