{"id":7995,"date":"2026-10-07T10:28:47","date_gmt":"2026-10-07T08:28:47","guid":{"rendered":"https:\/\/helpdesk.kontainer.com\/article\/kontainer-api-integration\/"},"modified":"2026-10-07T10:28:47","modified_gmt":"2026-10-07T08:28:47","slug":"kontainer-api-integration","status":"publish","type":"article","link":"https:\/\/helpdesk.kontainer.com\/da\/article\/kontainer-api-integration\/","title":{"rendered":"Kontainer API-integration"},"content":{"rendered":"<p><picture><source type=\"image\/avif\" srcset=\"https:\/\/helpdesk.kontainer.com\/wp-content\/uploads\/2023\/03\/API-integration-HERO-1.avif?v=1763368898\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full\" src=\"https:\/\/helpdesk.kontainer.com\/wp-content\/uploads\/2023\/03\/API-integration-HERO-1.png?v=1763368897\" alt=\"Header til API-integration\" width=\"800\" height=\"389\" \/><\/picture><\/p>\n<p>Kontainer-API&#8217;et g\u00f8r det nemt at integrere jeres eksisterende software i Kontainer-platformen. Denne gr\u00e6nseflade mellem softwaresystemer lader jeres applikationer udveksle data med Kontainer og kan bruges til at automatisere mange forskellige processer.<\/p>\n<p>Her gennemg\u00e5r vi det grundl\u00e6ggende i ops\u00e6tningen af API&#8217;et.<\/p>\n<p>Oplysningerne i denne artikel er tekniske og henvender sig til udviklere, der st\u00e5r for ops\u00e6tningen af API&#8217;et. Har I sp\u00f8rgsm\u00e5l, er I velkomne til at kontakte os.<\/p>\n<p>Bes\u00f8g <a href=\"https:\/\/kontainer.com\/da\/integrations\/api\" target=\"_blank\" rel=\"noopener\"><strong>Kontainers integrationsside<\/strong> <\/a>for at h\u00f8re mere om vores API. Her finder I ogs\u00e5 mere om anvendelser, fordele osv.<\/p>\n<blockquote>\n<h2 id=\"apicode\">API-kode<\/h2>\n<p>G\u00e5 direkte til koden til API-integration <a href=\"https:\/\/app.kontainer.com\/api\/documentation\" target=\"_blank\" rel=\"noopener\"><strong>HER<\/strong><\/a>.<\/p>\n<p><em><strong>BEM\u00c6RK<\/strong>, at I skal bruge jeres egen unikke Kontainer-URL i stedet for den i eksemplet i ovenst\u00e5ende links (&#8220;app.kontainer.com&#8221;).<\/em><\/p>\n<\/blockquote>\n<hr \/>\n<h2 id=\"gettingstarted\">Kom i gang<\/h2>\n<p>For at bruge Kontainer-API&#8217;et skal I have en konto hos Kontainer og et API-adgangstoken.<\/p>\n<p>Kontakt jeres lokale administrator eller <a href=\"mailto:support@kontainer.com\" target=\"_blank\" rel=\"noopener noreferrer\">Kontainers support<\/a> for yderligere oplysninger om, hvordan I f\u00e5r adgang til Kontainer-API&#8217;et.<\/p>\n<h3>Godkendelse<\/h3>\n<p>Kontainer-API&#8217;et bruger <em>OAuth<\/em> til godkendelse. N\u00e5r I har f\u00e5et et API-adgangstoken, skal I sende det med i hver request via headeren Authorization som en &#8220;Bearer&#8221;-v\u00e6rdi.<\/p>\n<p>Alle requests skal indeholde jeres API-adgangstoken i headeren Authorization: <mark><code> Authorization: Bearer {{access-token}}<\/code><\/mark><\/p>\n<h3>Content negotiation<\/h3>\n<p>Alle requests <strong>skal<\/strong> indeholde headeren: <mark><code> Accept: application\/vnd.api+json <\/code><\/mark>.<br \/>Requests, der sender JSON-data, <strong>skal<\/strong> indeholde headeren: <mark><code> Content-Type: application\/vnd.api+json <\/code><\/mark><\/p>\n<h3>Standarden JSON:API<\/h3>\n<p>Kontainer-API&#8217;et er et <em>RESTful<\/em> API, der f\u00f8lger standarden <a href=\"https:\/\/jsonapi.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">JSON API<\/a>. I kan se standarden for mere om, hvordan request- og responsdokumenter er opbygget.<\/p>\n<h2 id=\"resourcetypes\">Ressourcetyper<\/h2>\n<p>API&#8217;et udstiller f\u00f8lgende ressourcetyper: files, folders, users, tags, channels, elements, element-options, categories, custom-fields, download-templates, video-download-templates, cdn, user-groups, folder permissions, consent wards, consent agreements, consent parties, statistics og job logs.<\/p>\n<h2 id=\"writeoperations\">Skriveoperationer<\/h2>\n<p>API&#8217;et underst\u00f8tter skriveoperationer p\u00e5 tv\u00e6rs af ressourcer: <strong>POST<\/strong> til at oprette, <strong>PATCH<\/strong> til at opdatere og <strong>DELETE<\/strong> til at fjerne. Det er ikke skrivebeskyttet.<\/p>\n<h3>Gr\u00e6nser for antal requests (Rate Limits)<\/h3>\n<p>De almindelige gr\u00e6nser for antal requests g\u00e6lder for alle de endpoints, vi udstiller, og gr\u00e6nsen er <mark><code> 500<\/code><\/mark> requests pr. minut. Overskrides den definerede gr\u00e6nse, svarer API&#8217;et med beskeden: <mark><code>429: Too Many Attempts<\/code><\/mark>.<\/p>\n<h3>Svarkoder<\/h3>\n<p>Kontainer-API&#8217;et svarer med HTTP-statuskoder og JSON-baserede fejlkoder og -beskeder.<\/p>\n<h3>HTTP-statuskoder<\/h3>\n<p>Tabellen nedenfor giver et overblik over de HTTP-statuskoder, der returneres.<\/p>\n<table style=\"height: 340px\" width=\"800\">\n<thead>\n<tr>\n<th style=\"text-align: left\"><strong>HTTP-statuskode<\/strong><\/th>\n<th style=\"text-align: left\"><strong>Tekst<\/strong><\/th>\n<th style=\"text-align: left\"><strong>Beskrivelse<\/strong><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left\">200<\/td>\n<td style=\"text-align: left\">OK<\/td>\n<td style=\"text-align: left\">Succes.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">201<\/td>\n<td style=\"text-align: left\">Created<\/td>\n<td style=\"text-align: left\">Objekt oprettet.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">204<\/td>\n<td style=\"text-align: left\">No Content<\/td>\n<td style=\"text-align: left\">Intet indhold returneret.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">401<\/td>\n<td style=\"text-align: left\">Unauthorized<\/td>\n<td style=\"text-align: left\">Token mangler eller er ugyldigt.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">403<\/td>\n<td style=\"text-align: left\">Forbidden<\/td>\n<td style=\"text-align: left\">Ressource eller request underst\u00f8ttes ikke<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">404<\/td>\n<td style=\"text-align: left\">Not Found<\/td>\n<td style=\"text-align: left\">Objekt ikke fundet.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">406<\/td>\n<td style=\"text-align: left\">Not Acceptable<\/td>\n<td style=\"text-align: left\">Request kan ikke accepteres<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">409<\/td>\n<td style=\"text-align: left\">Conflict<\/td>\n<td style=\"text-align: left\">Konflikt i applikationens eller ressourcens tilstand.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">422<\/td>\n<td style=\"text-align: left\">Validation Error<\/td>\n<td style=\"text-align: left\">Der opstod en valideringsfejl.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">429<\/td>\n<td style=\"text-align: left\">Too Many Requests<\/td>\n<td style=\"text-align: left\">Gr\u00e6nsen for antal requests er overskredet.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Fejlbeskeder<\/h3>\n<p>Eksemplet nedenfor viser, hvordan en fejlbesked ser ud for HTTP-statuskoden <mark><code>401 - Unauthorized<\/code><\/mark>.<\/p>\n<p><picture><source type=\"image\/webp\" srcset=\"https:\/\/helpdesk.kontainer.com\/wp-content\/uploads\/2023\/04\/Screenshot-2023-04-04-at-10.30.42.webp?v=1763368898\"><img decoding=\"async\" src=\"https:\/\/helpdesk.kontainer.com\/wp-content\/uploads\/2023\/04\/Screenshot-2023-04-04-at-10.30.42.png?v=1763368898\" alt=\"Eksempel p\u00e5 en fejlbesked for 401 Unauthorized i Kontainer-API'et\" \/><\/picture><\/p>\n<h2 id=\"filters\">Filtre<\/h2>\n<p>Filtre kan anvendes p\u00e5 de endpoints, der underst\u00f8tter dem, for at begr\u00e6nse de resultater, der returneres. Filtre anvendes med query-parameteren <mark><code>filter<\/code><\/mark>. De underst\u00f8ttede filterfelter finder I i sektionen <strong>Filter Attributes<\/strong> for hvert endpoint.<\/p>\n<p><strong>Eksempler:<\/strong><\/p>\n<p>Hent en liste over kategoriposter\/produkter:<\/p>\n<p><mark><code>filter[description][like]<\/code><\/mark> : <mark><code>Shoes<\/code><\/mark><\/p>\n<p>Find poster ud fra et pr\u00e6cist EAN:<\/p>\n<p><mark><code>filter[ean][eq]<\/code><\/mark> : <mark><code>4194382028137<\/code><\/mark><\/p>\n<p>Find poster efter en bestemt dato:<\/p>\n<p><mark><code>filter[released_on][gt]<\/code><\/mark> : <mark><code>2020-01-01<\/code><\/mark><\/p>\n<p>Find poster med en enhedspris, der er st\u00f8rre end eller lig med 22,50 og mindre end 50,00:<\/p>\n<p><mark><code>filter[unit_cost][gte]<\/code><\/mark> : <mark><code>22.50<\/code><\/mark><\/p>\n<p><mark><code>filter[unit_cost][lt]<\/code><\/mark> : <mark><code>50.00<\/code><\/mark><\/p>\n<p>Tjek, om filer refereres i et PIM-datafelt:<\/p>\n<p><mark><code>filter[asset][exists]<\/code><\/mark> : <mark><code>1<\/code><\/mark><\/p>\n<p><mark><code>filter[asset][exists]<\/code><\/mark> : <mark><code>0<\/code><\/mark><\/p>\n<p><strong>Filterbetegnelser<\/strong><\/p>\n<ul>\n<li>Equals: [eq]<\/li>\n<li>In: [in]<\/li>\n<li>Like: [like]<\/li>\n<li>Greater than: [gt]<\/li>\n<li>Greater than or equal: [gte]<\/li>\n<li>Less than: [lt]<\/li>\n<li>Less than or equal: [lte]<\/li>\n<li>Not In: [notin]<\/li>\n<li>Not Equal: [ne] <em>(bem\u00e6rk: kun PIM)<\/em><\/li>\n<li>Exists: [exists] (<em>bem\u00e6rk: kun PIM)<\/em><\/li>\n<\/ul>\n<p><strong>Bem\u00e6rk: De tilladte filterbetegnelser afh\u00e6nger af det element, der s\u00f8ges i.<\/strong><\/p>\n<h2 id=\"compounddocuments\">Sammensatte dokumenter (Compound Documents)<\/h2>\n<p><a href=\"https:\/\/jsonapi.org\/format\/#document-compound-documents\" target=\"_blank\" rel=\"noopener noreferrer\">JSONAPI \u2013 Compound Documents<\/a><\/p>\n<p>For at reducere antallet af HTTP-requests kan svar fra de endpoints, der underst\u00f8tter det, bede om at &#8220;include&#8221; relaterede ressourcer sammen med de \u00f8nskede prim\u00e6re ressourcer. Inkluderede ressourcer anmodes via query-parameteren <mark><code>include<\/code><\/mark>. De underst\u00f8ttede includes finder I i sektionen <strong>Available Includes<\/strong> for hvert endpoint.<\/p>\n<p><strong>Eksempler:<\/strong><\/p>\n<ul>\n<li>I endpointet <strong>GET \/elements<\/strong> for at inkludere de tilh\u00f8rende Element Options:<mark><code>include: element_option<\/code><\/mark><\/li>\n<li>I endpointet <strong>GET \/items<\/strong> for at inkludere rod-, overordnede og underordnede poster:<mark><code>include: parent_item,root_item,children<\/code><\/mark><\/li>\n<\/ul>\n<h2 id=\"pagination\">Paginering<\/h2>\n<p>Svar pagineres med en sidest\u00f8rrelse, der kan konfigureres. Der findes ingen bulk-endpoints eller webhooks.<\/p>\n<hr \/>\n<blockquote>\n<h2 id=\"apicode-2\">API-kode<\/h2>\n<p>G\u00e5 direkte til koden til API-integration <a href=\"https:\/\/app.kontainer.com\/api\/documentation\" target=\"_blank\" rel=\"noopener\"><strong>HER<\/strong><\/a>.<\/p>\n<p><em><strong>BEM\u00c6RK<\/strong>, at I skal bruge jeres egen unikke Kontainer-URL i stedet for den i eksemplet i ovenst\u00e5ende links (&#8220;app.kontainer.com&#8221;).<\/em><\/p>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Kontainer-API&#8217;et g\u00f8r det nemt at integrere jeres eksisterende software i Kontainer-platformen. Denne gr\u00e6nseflade mellem softwaresystemer lader jeres applikationer udveksle data med Kontainer og kan bruges til at automatisere mange forskellige processer. Her gennemg\u00e5r vi det grundl\u00e6ggende i ops\u00e6tningen af API&#8217;et. Oplysningerne i denne artikel er tekniske og henvender sig til udviklere, der st\u00e5r for ops\u00e6tningen [&hellip;]<\/p>\n","protected":false},"author":16,"featured_media":0,"menu_order":0,"comment_status":"","ping_status":"closed","template":"","article-category":[114],"article-tag":[152,153,154],"class_list":["post-7995","article","type-article","status-publish","hentry","article-category-integrationer-plugins","article-tag-dam","article-tag-pim","article-tag-kun-for-administratorer"],"translations":{"da":{"id":7995,"title":"Kontainer API-integration","url":"https:\/\/helpdesk.kontainer.com\/da\/article\/kontainer-api-integration\/"},"de":{"id":6870,"title":"Kontainer API Integration","url":"https:\/\/helpdesk.kontainer.com\/de\/article\/kontainer-api-integration\/"},"en":{"id":4729,"title":"Kontainer API Integration","url":"https:\/\/helpdesk.kontainer.com\/article\/kontainer-api-integration\/"},"nl":{"id":8118,"title":"Kontainer-API-integratie","url":"https:\/\/helpdesk.kontainer.com\/nl\/article\/kontainer-api-integratie\/"},"sv":{"id":7863,"title":"API-integration med Kontainer","url":"https:\/\/helpdesk.kontainer.com\/sv\/article\/kontainer-api-integration\/"}},"_links":{"self":[{"href":"https:\/\/helpdesk.kontainer.com\/da\/wp-json\/wp\/v2\/article\/7995","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helpdesk.kontainer.com\/da\/wp-json\/wp\/v2\/article"}],"about":[{"href":"https:\/\/helpdesk.kontainer.com\/da\/wp-json\/wp\/v2\/types\/article"}],"author":[{"embeddable":true,"href":"https:\/\/helpdesk.kontainer.com\/da\/wp-json\/wp\/v2\/users\/16"}],"replies":[{"embeddable":true,"href":"https:\/\/helpdesk.kontainer.com\/da\/wp-json\/wp\/v2\/comments?post=7995"}],"version-history":[{"count":0,"href":"https:\/\/helpdesk.kontainer.com\/da\/wp-json\/wp\/v2\/article\/7995\/revisions"}],"wp:attachment":[{"href":"https:\/\/helpdesk.kontainer.com\/da\/wp-json\/wp\/v2\/media?parent=7995"}],"wp:term":[{"taxonomy":"article-category","embeddable":true,"href":"https:\/\/helpdesk.kontainer.com\/da\/wp-json\/wp\/v2\/article-category?post=7995"},{"taxonomy":"article-tag","embeddable":true,"href":"https:\/\/helpdesk.kontainer.com\/da\/wp-json\/wp\/v2\/article-tag?post=7995"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}