{"id":2050,"date":"2023-05-08T10:22:00","date_gmt":"2023-05-08T09:22:00","guid":{"rendered":"https:\/\/thriving-sanctuary.dbc4320.deploio.app\/introducing-the-nine-self-service-api\/"},"modified":"2025-10-29T08:45:31","modified_gmt":"2025-10-29T07:45:31","slug":"introducing-the-nine-self-service-api","status":"publish","type":"post","link":"https:\/\/archive.5fcf01f.deploio.app\/de\/introducing-the-nine-self-service-api\/","title":{"rendered":"Wir stellen vor: die Nine Self-Service API"},"content":{"rendered":"\n<p>Zum Launch unserer API m\u00f6chten wir Ihnen einige technische Einblicke in ihre Entstehung und die Zwecke geben, zu denen sie genutzt werden kann.<\/p>\n\n\n\n<p>In den vergangenen zwei Jahren haben wir \u00fcberarbeitet, wie wir neue Infrastrukturen bei Nine bereitstellen. Die Hauptziele dabei waren:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>eine komplette Automatisierung, um es Kunden zu erm\u00f6glichen, die Produkte und Services von Nine als Self-Service zu verwalten<\/li>\n\n\n\n<li>einen&nbsp; standardm\u00e4ssigen Ansatz, der von allen internen Teams genutzt werden kann.<\/li>\n<\/ul>\n\n\n\n<p>Am Anfang stand die Entwicklung von Nine Managed GKE, w\u00e4hrend der wir uns zunehmend mit dem Programmieren von Kubernetes Controllern in Go vertraut machten. Etwa zur gleichen Zeit entdeckten wir ausserdem Crossplane. Da alles noch in den Anf\u00e4ngen steckte und noch einige Zeit vergehen w\u00fcrde, bis wir Version 1 ver\u00f6ffentlichen w\u00fcrden, waren wir zun\u00e4chst vorsichtig. Nach ersten Experimenten mit der Verwaltung unserer Terraform Module entschieden wir uns, Crossplane f\u00fcr unseren neuen Object Storage Service zu verwenden und unsere ersten Controller mit Crossplane-Runtime zu entwickeln.<\/p>\n\n\n\n<p>Wir verwenden diesen neuen Ansatz nun bereits seit einiger Zeit und auch unser Frontend Cockpit nutzt die neue API seit der Lancierung des aktualisierten Objektspeichers im Jahr 2021. W\u00e4hrend wir immer mehr Services, wie etwa unser Managed Kubernetes NKE, in dieses neue System integrierten, stieg unser Vertrauen in das System, die APIs und Controller, die dahinterstecken. Dadurch konnten wir den n\u00e4chsten Schritt nehmen und es auch unseren Kunden bereitstellen, damit diese die API direkt verwenden k\u00f6nnen.<\/p>\n\n\n\n<p>Die Landing Page f\u00fcr die neue API finden Sie \u00fcber unsere Dokumentation auf&nbsp;<a href=\"https:\/\/docs.nineapis.ch\/\" target=\"_blank\" rel=\"noreferrer noopener\">docs.nineapis.ch<\/a>. Die API Definitionen (Go Typen und OpenAPI v2 Spezifikation) finden Sie ausserdem auf&nbsp;<a href=\"https:\/\/github.com\/ninech\/apis\" target=\"_blank\" rel=\"noreferrer noopener\">GitHub<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"cli\">CLI<\/h2>\n\n\n\n<p>Mit der Lancierung haben wir ausserdem ein neues CLI Tool bereitgestellt, welches die Authentifizierung gegen die API erleichtert.&nbsp;Es nennt sich<a href=\"https:\/\/github.com\/ninech\/nctl\/\" target=\"_blank\" rel=\"noreferrer noopener\">&nbsp;nctl<\/a>&nbsp;und die komplette Quellen- und Installationsanleitung finden Sie auf GitHub.<\/p>\n\n\n\n<p>Dabei haben wir einen \u00e4hnlichen Login-Prozess wie bei&nbsp;gcloud&nbsp;implementiert. Das bedeutet, dass der Befehl&nbsp;nctl auth login &lt;cockpit account name&gt;&nbsp;Sie zu einem Browser-Fenster weiterleitet, indem Sie Ihre Cockpit-Logindaten eingeben.&nbsp;Nach dem Login k\u00f6nnen Sie dann einen Service Account erstellen, um aus Ihren eigenen automatisierten Workflows auf die API zuzugreifen.<\/p>\n\n\n\n<p>Die CLI funktioniert momentan nur mit einigen unserer Services. Allerdings erm\u00f6glicht sie es Ihnen, \u00e4hnlich wie&nbsp;kubectl, jegliche API Objekte aus einer yaml- oder JSON-Datei mit&nbsp;nctl create\/apply\/delete -f &lt;file&gt;&nbsp;zu erstellen, lesen, aktualisieren und l\u00f6schen (CRUD).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Schnittstellen<\/h2>\n\n\n\n<p>Neben dem Zugriff auf die API \u00fcber<a href=\"https:\/\/github.com\/ninech\/nctl\/\" target=\"_blank\" rel=\"noreferrer noopener\">&nbsp;nctl<\/a>&nbsp;bestehen bereits weitere Schnittstellen, die ohne weiteres funktionieren.&nbsp;Da unsere API auf Kubernetes aufbaut, kann alles, was mit einer Kubernetes Custom Ressource interagieren kann, auch mit der API kommunizieren.&nbsp;So k\u00f6nnen wir zum Beispiel<a href=\"https:\/\/www.terraform.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">&nbsp;Terraform<\/a>&nbsp;nutzen, um Services auf unserer API bereitzustellen, oder wir k\u00f6nnen&nbsp;kubectl&nbsp;verwenden, um auf ein beliebiges Objekt auf der API zuzugreifen, nachdem wir uns \u00fcber&nbsp;nctl&nbsp;authentifiziert haben.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"terraform\">Terraform<\/h3>\n\n\n\n<p>Der<a href=\"https:\/\/registry.terraform.io\/providers\/hashicorp\/kubernetes\/latest\/docs\" target=\"_blank\" rel=\"noreferrer noopener\">&nbsp;Kubernetes Terraform Provider<\/a>&nbsp;unterst\u00fctzt die Anwendung jeglicher Kubernetes-Objekte mithilfe der Ressource&nbsp;kubernetes_manifest.&nbsp;Es folgt ein kleines Beispiel daf\u00fcr, wie ein Service Account auf unserer API mit Terraform erstellt werden kann. Dabei wird abgewartet, bis signalisiert wird, dass die Ressource bereit ist. Dies kann besonders hilfreich sein, wenn Sie ein von einem Service Account erstelltes Secret sp\u00e4ter auslesen m\u00f6chten.&nbsp;<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nresource &quot;kubernetes_manifest&quot; &quot;sample_cluster&quot; {\nmanifest = {\napiVersion = &quot;infrastructure.nine.ch\/v1alpha1&quot;\nkind = &quot;KubernetesCluster&quot;\nmetadata = {\nname = &quot;sample-cluster&quot;\nnamespace = &quot;&lt;cockpit account name&gt;&quot;\n}\nspec = {\nforProvider = {\nvcluster = {\nversion = &quot;1.24&quot;\n}\nnodePools = &#x5B;]\nlocation = &quot;nine-es34&quot;\n}\nwriteConnectionSecretToRef = {\nname = &quot;sample-cluster&quot;\nnamespace = &quot;&lt;cockpit account name&gt;&quot;\n}\n}\n}\n\ufeff\nwait {\ncondition {\ntype = &quot;Ready&quot;\nstatus = &quot;True&quot;\n}\n}\n}\n\ufeff\n# read secret that the KubernetesCluster creates\ndata &quot;kubernetes_secret_v1&quot; &quot;example_sa&quot; {\nmetadata {\nname = kubernetes_manifest.sample_cluster.manifest.spec.writeConnectionSecretToRef.name\nnamespace = kubernetes_manifest.sample_cluster.manifest.spec.writeConnectionSecretToRef.namespace\n}\n}\n\ufeff\n# put token into an output. This could then be used by another module for example.\noutput &quot;kubeconfig&quot; {\nsensitive = true\nvalue = data.kubernetes_secret_v1.sample_cluster.data.kubeconfig\n}\n<\/pre><\/div>\n\n\n<p><a href=\"https:\/\/gist.github.com\/ctrox\/d31751829062d650b6d43443d6f8aed3\" target=\"_blank\" rel=\"noreferrer noopener\">-&gt; Code &lt;-<\/a><\/p>\n\n\n\n<p>Wir k\u00f6nnen nun wie \u00fcblich Terraform anwenden und sehen, dass wir nach Abschluss der Cluster-Erstellung das Secret mit der kubeconfig auslesen k\u00f6nnen, ohne auf den neuen Cluster zugreifen zu m\u00fcssen.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n$ terraform apply\n&#x5B;...]\nkubernetes_manifest.sample_cluster: Creating...\nkubernetes_manifest.sample_cluster: Still creating... &#x5B;10s elapsed]\nkubernetes_manifest.sample_cluster: Still creating... &#x5B;20s elapsed]\nkubernetes_manifest.sample_cluster: Still creating... &#x5B;30s elapsed]\nkubernetes_manifest.sample_cluster: Still creating... &#x5B;40s elapsed]\nkubernetes_manifest.sample_cluster: Still creating... &#x5B;50s elapsed]\nkubernetes_manifest.sample_cluster: Still creating... &#x5B;1m0s elapsed]\nkubernetes_manifest.sample_cluster: Still creating... &#x5B;1m10s elapsed]\nkubernetes_manifest.sample_cluster: Creation complete after 1m12s\ndata.kubernetes_secret_v1.sample_cluster: Reading...\ndata.kubernetes_secret_v1.sample_cluster: Read complete after 0s &#x5B;id=nine\/sample-cluster]\n\ufeff\nApply complete! Resources: 1 added, 0 changed, 0 destroyed.\n\ufeff\nOutputs:\n\ufeff\nkubeconfig = &lt;sensitive&gt;\n<\/pre><\/div>\n\n\n<p>&nbsp;<a href=\"https:\/\/gist.github.com\/ctrox\/01463fc778fe0ac3201cd1bab5595f14\" target=\"_blank\" rel=\"noreferrer noopener\">-&gt; Code &lt;-<\/a><\/p>\n\n\n\n<p>Mehr Beispiele und Anleitungen zur Authentifizierung gegen unsere API mit Terraform finden Sie auf<a href=\"https:\/\/github.com\/ninech\/apis\" target=\"_blank\" rel=\"noreferrer noopener\">\u00a0GitHub<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"going-forward\">Wie es weitergeht<\/h2>\n\n\n\n<p>Unser Ziel ist es, letztlich alle unsere Services \u00fcber diese API anzubieten. Auch wenn dies noch etwas dauern wird, sind wir bei der Entwicklung neuer Dienste durch diese grundlegende Investition nun schneller denn je. Auch die Notwendigkeit manueller Eingriffe hat sich wesentlich reduziert, was zu einer weiteren Verbesserung unserer Services f\u00fchrt.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Zum Launch unserer API m\u00f6chten wir Ihnen einige technische Einblicke in ihre Entstehung und die Zwecke geben, zu denen sie genutzt werden kann. In den vergangenen zwei Jahren haben wir \u00fcberarbeitet, wie wir neue Infrastrukturen bei Nine bereitstellen. Die Hauptziele dabei waren: Am Anfang stand die Entwicklung von Nine Managed GKE, w\u00e4hrend der wir uns [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":1297,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":"[]"},"categories":[401,399],"tags":[408],"class_list":["post-2050","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-hinterdenkulissen","category-know-how-de","tag-security-de"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Wir stellen vor: die Nine Self-Service API - Nine<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/nine.ch\/de\/introducing-the-nine-self-service-api\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Wir stellen vor: die Nine Self-Service API - Nine\" \/>\n<meta property=\"og:description\" content=\"Zum Launch unserer API m\u00f6chten wir Ihnen einige technische Einblicke in ihre Entstehung und die Zwecke geben, zu denen sie genutzt werden kann. In den vergangenen zwei Jahren haben wir \u00fcberarbeitet, wie wir neue Infrastrukturen bei Nine bereitstellen. Die Hauptziele dabei waren: Am Anfang stand die Entwicklung von Nine Managed GKE, w\u00e4hrend der wir uns [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/nine.ch\/de\/introducing-the-nine-self-service-api\/\" \/>\n<meta property=\"og:site_name\" content=\"Nine\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/NineInternetSolutionsAG\" \/>\n<meta property=\"article:published_time\" content=\"2023-05-08T09:22:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-29T07:45:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/nine.ch\/app\/uploads\/2024\/03\/APi_2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"940\" \/>\n\t<meta property=\"og:image:height\" content=\"593\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Cyrill Troxler\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@nine_ch\" \/>\n<meta name=\"twitter:site\" content=\"@nine_ch\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Cyrill Troxler\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/nine.ch\/de\/introducing-the-nine-self-service-api\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/nine.ch\/de\/introducing-the-nine-self-service-api\/\"},\"author\":{\"name\":\"Cyrill Troxler\",\"@id\":\"https:\/\/nine.ch\/#\/schema\/person\/1f0e605afe0fa6cfc11d1e1fcf051bee\"},\"headline\":\"Wir stellen vor: die Nine Self-Service API\",\"datePublished\":\"2023-05-08T09:22:00+00:00\",\"dateModified\":\"2025-10-29T07:45:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/nine.ch\/de\/introducing-the-nine-self-service-api\/\"},\"wordCount\":692,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/nine.ch\/#organization\"},\"image\":{\"@id\":\"https:\/\/nine.ch\/de\/introducing-the-nine-self-service-api\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/archive.5fcf01f.deploio.app\/app\/uploads\/2024\/03\/APi_2.png\",\"keywords\":[\"Security\"],\"articleSection\":[\"Hinter den Kulissen\",\"Know-how\"],\"inLanguage\":\"de-DE\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/nine.ch\/de\/introducing-the-nine-self-service-api\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/nine.ch\/de\/introducing-the-nine-self-service-api\/\",\"url\":\"https:\/\/nine.ch\/de\/introducing-the-nine-self-service-api\/\",\"name\":\"Wir stellen vor: die Nine Self-Service API - Nine\",\"isPartOf\":{\"@id\":\"https:\/\/nine.ch\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/nine.ch\/de\/introducing-the-nine-self-service-api\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/nine.ch\/de\/introducing-the-nine-self-service-api\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/archive.5fcf01f.deploio.app\/app\/uploads\/2024\/03\/APi_2.png\",\"datePublished\":\"2023-05-08T09:22:00+00:00\",\"dateModified\":\"2025-10-29T07:45:31+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/nine.ch\/de\/introducing-the-nine-self-service-api\/#breadcrumb\"},\"inLanguage\":\"de-DE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/nine.ch\/de\/introducing-the-nine-self-service-api\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de-DE\",\"@id\":\"https:\/\/nine.ch\/de\/introducing-the-nine-self-service-api\/#primaryimage\",\"url\":\"https:\/\/archive.5fcf01f.deploio.app\/app\/uploads\/2024\/03\/APi_2.png\",\"contentUrl\":\"https:\/\/archive.5fcf01f.deploio.app\/app\/uploads\/2024\/03\/APi_2.png\",\"width\":940,\"height\":593},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/nine.ch\/de\/introducing-the-nine-self-service-api\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/nine.ch\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Wir stellen vor: die Nine Self-Service API\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/nine.ch\/#website\",\"url\":\"https:\/\/nine.ch\/\",\"name\":\"Nine\",\"description\":\"Cloud Navigators\",\"publisher\":{\"@id\":\"https:\/\/nine.ch\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/nine.ch\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de-DE\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/nine.ch\/#organization\",\"name\":\"Nine\",\"url\":\"https:\/\/nine.ch\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de-DE\",\"@id\":\"https:\/\/nine.ch\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/archive.5fcf01f.deploio.app\/app\/uploads\/2023\/11\/Logo-SVG.svg\",\"contentUrl\":\"https:\/\/archive.5fcf01f.deploio.app\/app\/uploads\/2023\/11\/Logo-SVG.svg\",\"caption\":\"Nine\"},\"image\":{\"@id\":\"https:\/\/nine.ch\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/NineInternetSolutionsAG\",\"https:\/\/x.com\/nine_ch\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/nine.ch\/#\/schema\/person\/1f0e605afe0fa6cfc11d1e1fcf051bee\",\"name\":\"Cyrill Troxler\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de-DE\",\"@id\":\"https:\/\/nine.ch\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/7620c2fedc88629f5d84fbcc515885fd04d0557e997e759a39bb69f3ca8a9fe7?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/7620c2fedc88629f5d84fbcc515885fd04d0557e997e759a39bb69f3ca8a9fe7?s=96&d=mm&r=g\",\"caption\":\"Cyrill Troxler\"},\"url\":\"https:\/\/archive.5fcf01f.deploio.app\/de\/author\/cyrill-troxler\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Wir stellen vor: die Nine Self-Service API - Nine","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/nine.ch\/de\/introducing-the-nine-self-service-api\/","og_locale":"de_DE","og_type":"article","og_title":"Wir stellen vor: die Nine Self-Service API - Nine","og_description":"Zum Launch unserer API m\u00f6chten wir Ihnen einige technische Einblicke in ihre Entstehung und die Zwecke geben, zu denen sie genutzt werden kann. In den vergangenen zwei Jahren haben wir \u00fcberarbeitet, wie wir neue Infrastrukturen bei Nine bereitstellen. Die Hauptziele dabei waren: Am Anfang stand die Entwicklung von Nine Managed GKE, w\u00e4hrend der wir uns [&hellip;]","og_url":"https:\/\/nine.ch\/de\/introducing-the-nine-self-service-api\/","og_site_name":"Nine","article_publisher":"https:\/\/www.facebook.com\/NineInternetSolutionsAG","article_published_time":"2023-05-08T09:22:00+00:00","article_modified_time":"2025-10-29T07:45:31+00:00","og_image":[{"width":940,"height":593,"url":"https:\/\/nine.ch\/app\/uploads\/2024\/03\/APi_2.png","type":"image\/png"}],"author":"Cyrill Troxler","twitter_card":"summary_large_image","twitter_creator":"@nine_ch","twitter_site":"@nine_ch","twitter_misc":{"Written by":"Cyrill Troxler","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/nine.ch\/de\/introducing-the-nine-self-service-api\/#article","isPartOf":{"@id":"https:\/\/nine.ch\/de\/introducing-the-nine-self-service-api\/"},"author":{"name":"Cyrill Troxler","@id":"https:\/\/nine.ch\/#\/schema\/person\/1f0e605afe0fa6cfc11d1e1fcf051bee"},"headline":"Wir stellen vor: die Nine Self-Service API","datePublished":"2023-05-08T09:22:00+00:00","dateModified":"2025-10-29T07:45:31+00:00","mainEntityOfPage":{"@id":"https:\/\/nine.ch\/de\/introducing-the-nine-self-service-api\/"},"wordCount":692,"commentCount":0,"publisher":{"@id":"https:\/\/nine.ch\/#organization"},"image":{"@id":"https:\/\/nine.ch\/de\/introducing-the-nine-self-service-api\/#primaryimage"},"thumbnailUrl":"https:\/\/archive.5fcf01f.deploio.app\/app\/uploads\/2024\/03\/APi_2.png","keywords":["Security"],"articleSection":["Hinter den Kulissen","Know-how"],"inLanguage":"de-DE","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/nine.ch\/de\/introducing-the-nine-self-service-api\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/nine.ch\/de\/introducing-the-nine-self-service-api\/","url":"https:\/\/nine.ch\/de\/introducing-the-nine-self-service-api\/","name":"Wir stellen vor: die Nine Self-Service API - Nine","isPartOf":{"@id":"https:\/\/nine.ch\/#website"},"primaryImageOfPage":{"@id":"https:\/\/nine.ch\/de\/introducing-the-nine-self-service-api\/#primaryimage"},"image":{"@id":"https:\/\/nine.ch\/de\/introducing-the-nine-self-service-api\/#primaryimage"},"thumbnailUrl":"https:\/\/archive.5fcf01f.deploio.app\/app\/uploads\/2024\/03\/APi_2.png","datePublished":"2023-05-08T09:22:00+00:00","dateModified":"2025-10-29T07:45:31+00:00","breadcrumb":{"@id":"https:\/\/nine.ch\/de\/introducing-the-nine-self-service-api\/#breadcrumb"},"inLanguage":"de-DE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/nine.ch\/de\/introducing-the-nine-self-service-api\/"]}]},{"@type":"ImageObject","inLanguage":"de-DE","@id":"https:\/\/nine.ch\/de\/introducing-the-nine-self-service-api\/#primaryimage","url":"https:\/\/archive.5fcf01f.deploio.app\/app\/uploads\/2024\/03\/APi_2.png","contentUrl":"https:\/\/archive.5fcf01f.deploio.app\/app\/uploads\/2024\/03\/APi_2.png","width":940,"height":593},{"@type":"BreadcrumbList","@id":"https:\/\/nine.ch\/de\/introducing-the-nine-self-service-api\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/nine.ch\/de\/"},{"@type":"ListItem","position":2,"name":"Wir stellen vor: die Nine Self-Service API"}]},{"@type":"WebSite","@id":"https:\/\/nine.ch\/#website","url":"https:\/\/nine.ch\/","name":"Nine","description":"Cloud Navigators","publisher":{"@id":"https:\/\/nine.ch\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/nine.ch\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de-DE"},{"@type":"Organization","@id":"https:\/\/nine.ch\/#organization","name":"Nine","url":"https:\/\/nine.ch\/","logo":{"@type":"ImageObject","inLanguage":"de-DE","@id":"https:\/\/nine.ch\/#\/schema\/logo\/image\/","url":"https:\/\/archive.5fcf01f.deploio.app\/app\/uploads\/2023\/11\/Logo-SVG.svg","contentUrl":"https:\/\/archive.5fcf01f.deploio.app\/app\/uploads\/2023\/11\/Logo-SVG.svg","caption":"Nine"},"image":{"@id":"https:\/\/nine.ch\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/NineInternetSolutionsAG","https:\/\/x.com\/nine_ch"]},{"@type":"Person","@id":"https:\/\/nine.ch\/#\/schema\/person\/1f0e605afe0fa6cfc11d1e1fcf051bee","name":"Cyrill Troxler","image":{"@type":"ImageObject","inLanguage":"de-DE","@id":"https:\/\/nine.ch\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/7620c2fedc88629f5d84fbcc515885fd04d0557e997e759a39bb69f3ca8a9fe7?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7620c2fedc88629f5d84fbcc515885fd04d0557e997e759a39bb69f3ca8a9fe7?s=96&d=mm&r=g","caption":"Cyrill Troxler"},"url":"https:\/\/archive.5fcf01f.deploio.app\/de\/author\/cyrill-troxler\/"}]}},"_links":{"self":[{"href":"https:\/\/archive.5fcf01f.deploio.app\/de\/wp-json\/wp\/v2\/posts\/2050","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/archive.5fcf01f.deploio.app\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/archive.5fcf01f.deploio.app\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/archive.5fcf01f.deploio.app\/de\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/archive.5fcf01f.deploio.app\/de\/wp-json\/wp\/v2\/comments?post=2050"}],"version-history":[{"count":1,"href":"https:\/\/archive.5fcf01f.deploio.app\/de\/wp-json\/wp\/v2\/posts\/2050\/revisions"}],"predecessor-version":[{"id":4441,"href":"https:\/\/archive.5fcf01f.deploio.app\/de\/wp-json\/wp\/v2\/posts\/2050\/revisions\/4441"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/archive.5fcf01f.deploio.app\/de\/wp-json\/wp\/v2\/media\/1297"}],"wp:attachment":[{"href":"https:\/\/archive.5fcf01f.deploio.app\/de\/wp-json\/wp\/v2\/media?parent=2050"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/archive.5fcf01f.deploio.app\/de\/wp-json\/wp\/v2\/categories?post=2050"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/archive.5fcf01f.deploio.app\/de\/wp-json\/wp\/v2\/tags?post=2050"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}