[{"data":1,"prerenderedAt":877},["Reactive",2],{"global":3,"blok-/blog/api-design/":439,"story:/blog/api-design/":674},{"story":4,"cv":436,"rels":437,"links":438},{"name":5,"created_at":6,"published_at":7,"updated_at":8,"id":9,"uuid":10,"content":11,"slug":51,"full_slug":51,"sort_by_date":429,"position":430,"tag_list":431,"is_startpage":29,"parent_id":429,"meta_data":429,"group_id":432,"first_published_at":433,"release_id":429,"lang":434,"path":429,"alternates":435,"default_full_slug":429,"translated_slugs":429},"Site settings","2023-02-07T07:13:48.809Z","2026-08-26T07:42:25.623Z","2026-08-26T07:42:25.641Z",258215571,"1fff830c-f3f1-49a9-84f3-94bfd7097497",{"zip":12,"_uid":13,"city":14,"email":15,"phone":16,"Header":17,"popups":18,"address":44,"favicon":45,"siteUrl":49,"siteName":50,"component":51,"redirects":52,"logoFooter":171,"logoHeader":174,"navigation":177,"navigationCta":226,"socialMediaLinks":233,"departmentsNavigation":255,"footerNavigation1Items":327,"footerNavigation1Title":363,"footerNavigation2Items":364,"footerNavigation2Title":393,"footerNavigation3Items":394,"footerNavigation3Title":428},"7100","505975f0-8676-4e20-86ef-d9d3a51f31ae","Vejle","info@uptimedevelopment.dk","+45 70 20 69 59",[],[19],{"Text":20,"_uid":21,"Image":22,"Title":30,"component":31,"SendMessageText":32,"delay_in_seconds":33,"ContactButtonText":34,"FormBackgroundColor":35,"contact_button_link":36,"initial_button_text":42,"ContactBackgroundColor":43},"Ring på 70 20 69 59 eller udfyld kontaktinformationer her.","1245454c-96c2-4dff-a565-e58677753fa1",{"id":23,"alt":24,"name":25,"focus":25,"title":25,"source":25,"filename":26,"copyright":25,"fieldtype":27,"meta_data":28,"is_external_url":29},20856972,"dan-olesen","","https://a.storyblok.com/f/195037/1667x1667/180b821d9c/dan-olesen.jpg","asset",{"alt":24,"title":25,"source":25,"copyright":25},false,"Har du brug for hjælp til et udviklingsprojekt?","ContactPopUp","Kontakt mig","2","Kontakt","#F4F4F4",{"id":37,"url":25,"anchor":38,"linktype":39,"fieldtype":40,"cached_url":41},"4ff97ed1-78a2-4bd1-b221-b514f8b82c95","contact","story","multilink","kontakt","Kontakt os →","#DA001B","Innovations Allé 7",{"id":46,"alt":25,"name":25,"focus":25,"title":25,"source":25,"filename":47,"copyright":25,"fieldtype":27,"meta_data":48,"is_external_url":29},10316658,"https://a.storyblok.com/f/195037/150x150/4b272b1db6/favicon.png",[],"https://www.uptimedevelopment.dk","Uptime Development A/S","global",{"tbody":53,"thead":162,"fieldtype":170},[54,65,74,83,92,101,110,117,126,135,144,153],{"_uid":55,"body":56,"component":64},"c92e0f8c-ccfa-4b4a-aef4-ecfeea166abd",[57,61],{"_uid":58,"value":59,"component":60},"9f3d71af-a1ab-42cb-8bbe-b6b246e8bd15","/5-node-web-frameworks-du-skal-holde-oeje-med","_table_col",{"_uid":62,"value":63,"component":60},"505d5dc4-c959-43ce-a11a-f7dc7492de9a","/blog/5-node-web-frameworks-du-skal-holde-oeje-med","_table_row",{"_uid":66,"body":67,"component":64},"202ba5f7-7db3-4a2f-8894-111eafd5ee97",[68,71],{"_uid":69,"value":70,"component":60},"e4e8322c-5f5f-4da8-8f8a-157a84b19d27","/bliv-klogere-paa-scrum",{"_uid":72,"value":73,"component":60},"4660cd33-0b25-480c-aca7-e5037051309c","/blog/bliv-klogere-paa-scrum",{"_uid":75,"body":76,"component":64},"4de12db7-6edd-46d7-be71-64d28ae44035",[77,80],{"_uid":78,"value":79,"component":60},"1496bafd-202a-4af6-b6ef-317a8d487c47","/react-og-asp-net-core-er-fundamentet-i-nyt-socialt-medie-til-musikbranchen",{"_uid":81,"value":82,"component":60},"62863bdd-2fe9-4f03-aee3-0ff5e0625d09","/blog/react-og-asp-net-core-er-fundamentet-i-nyt-socialt-medie-til-musikbranchen",{"_uid":84,"body":85,"component":64},"bf41c033-b58f-4070-8f2b-cd7778d64c98",[86,89],{"_uid":87,"value":88,"component":60},"e384c282-dcdc-44e8-afad-0b666e5dabe1","/react-og-node-tager-foerertroejen-i-international-undersoegelse",{"_uid":90,"value":91,"component":60},"506f6532-1d78-40ca-977b-d3b93035d7e8","/blog/react-og-node-tager-foerertroejen-i-international-undersoegelse",{"_uid":93,"body":94,"component":64},"7cd64b27-b865-40f7-845b-da43b8a139d2",[95,98],{"_uid":96,"value":97,"component":60},"88c04135-2ff1-4bee-8838-812e757ef1fe","/saadan-bruger-du-dit-it-budget-smartest",{"_uid":99,"value":100,"component":60},"a48d1db0-66b4-40b8-b870-a82cbdf47598","/blog/saadan-bruger-du-dit-it-budget-smartest",{"_uid":102,"body":103,"component":64},"044027f2-d5f6-4c23-a09b-4cc455771919",[104,107],{"_uid":105,"value":106,"component":60},"62655203-33e9-4d60-a72e-afa45e77e65e","/stor-undersoegelse-nye-spillere-stikker-hovedet-frem-i-javascript-verdenen",{"_uid":108,"value":109,"component":60},"e8c77406-3f5b-4bbf-8bc4-c5535d274e7e","/blog/stor-undersoegelse-nye-spillere-stikker-hovedet-frem-i-javascript-verdenen",{"_uid":111,"body":112,"component":64},"c721f17d-bf34-49d9-b2a8-939763f73bc9",[113,115],{"_uid":114,"value":97,"component":60},"2367fa98-6859-4b02-a8a3-625b732bbf20",{"_uid":116,"value":100,"component":60},"15648518-7732-4a0d-ae37-691583d3a7e8",{"_uid":118,"body":119,"component":64},"059aa2e9-f281-4d83-a3a5-df6805928abe",[120,123],{"_uid":121,"value":122,"component":60},"4c0e463e-92d3-4ed9-8fe2-beff572dcd43","/medarbejderstories/*",{"_uid":124,"value":125,"component":60},"0632bede-a443-445d-9d79-367922fd1487","/medarbejderhistorier/*",{"_uid":127,"body":128,"component":64},"28dac8de-7285-4983-8419-e2fb013e492d",[129,132],{"_uid":130,"value":131,"component":60},"c367c8f3-1475-4222-b727-395382a3c7d7","/reference/aubo-production\n",{"_uid":133,"value":134,"component":60},"c29ce268-7cd5-4f59-aaee-2b49b224bb7e","/reference/aubo",{"_uid":136,"body":137,"component":64},"761b6c9c-7094-4233-b2c3-cfbaaa1d6fb6",[138,141],{"_uid":139,"value":140,"component":60},"ce1b7aa4-578f-4727-99cb-89103109dcfc","/kompetencer/webudvikling/storyblok-udvikling-uptime-development-a-s",{"_uid":142,"value":143,"component":60},"dcfb210b-241e-4759-8f6e-6badcdc5fede","/kompetencer/webudvikling/storyblok-udvikling/",{"_uid":145,"body":146,"component":64},"e3790927-d7f4-4580-bfe7-1f3e860e6f09",[147,150],{"_uid":148,"value":149,"component":60},"087c8f63-ca41-40f0-8eab-3c24a7c32be1","/kompetencer/webudvikling/statamic-udvikling-uptime-development-a-s",{"_uid":151,"value":152,"component":60},"a6e04551-4242-4b3c-8351-2d33cf7b5478","/kompetencer/webudvikling/statamic-udvikling/",{"_uid":154,"body":155,"component":64},"6036c6fb-da83-4ee7-9036-d4b7b8217445",[156,159],{"_uid":157,"value":158,"component":60},"89cfd0a4-712b-466b-a2ea-4b634b19f38d","/kompetencer/webudvikling/angular-uptime-development-a-s",{"_uid":160,"value":161,"component":60},"d440684d-1348-409b-9932-62b5ecb50bab","/kompetencer/webudvikling/angular-udvikling/",[163,167],{"_uid":164,"value":165,"component":166},"b11d708a-a114-493c-aa81-3d2924f7da6c","From","_table_head",{"_uid":168,"value":169,"component":166},"1b97c57f-81ff-4d37-997d-52ba62d31346","To","table",{"id":172,"alt":25,"name":25,"focus":25,"title":25,"filename":173,"copyright":25,"fieldtype":27,"is_external_url":29},7117671,"https://a.storyblok.com/f/195037/x/33240b4ce2/uptime-logo-white.svg",{"id":175,"alt":25,"name":25,"focus":25,"title":25,"filename":176,"copyright":25,"fieldtype":27,"is_external_url":29},7117602,"https://a.storyblok.com/f/195037/x/914b4393c3/uptime-logo.svg",[178,186,192,198,204,210,216,222],{"Page":179,"_uid":182,"Title":183,"component":184,"SubNavigationItems":185},{"id":180,"url":25,"linktype":39,"fieldtype":40,"cached_url":181},"4603843a-bc48-4f87-a65b-dca5a7f0ddca","saadan-arbejder-vi","db7b83c9-a943-46d1-b9b7-8cee9eac6a5a","Sådan arbejder vi","BlockNavigationItem",[],{"Page":187,"_uid":190,"Title":191,"component":184},{"id":188,"url":25,"linktype":39,"fieldtype":40,"cached_url":189},"e63056b2-cadd-427b-9088-6b960adcdf71","kompetencer","7fc4feed-51be-4472-9f20-e93bdc9b1df4","Ydelser",{"Page":193,"_uid":196,"Title":197,"component":184},{"id":194,"url":25,"linktype":39,"fieldtype":40,"cached_url":195},"269ceb67-9543-4318-b65a-4bba788d8a12","referencer","57d60acc-cdb3-4755-98b5-532d3df98cd3","Cases",{"Page":199,"_uid":202,"Title":203,"component":184},{"id":200,"url":25,"linktype":39,"fieldtype":40,"cached_url":201},"7f3f0d5b-f9df-4a44-a3c0-44db30130deb","karriere","e8c0946f-837c-4889-a37d-7e0b1451eab9","Karriere",{"Page":205,"_uid":208,"Title":209,"component":184},{"id":206,"url":25,"linktype":39,"fieldtype":40,"cached_url":207},"e5c914f8-1576-467b-85b9-a9c7ad2b2179","om-os","730ba654-4727-46a6-8001-e48cdb7d6a27","Om os",{"Page":211,"_uid":214,"Title":215,"component":184},{"id":212,"url":25,"linktype":39,"fieldtype":40,"cached_url":213},"0089734a-6d00-4a89-ad6a-adb7f249bf26","brancher/","db7ddf68-d5f3-4f01-b831-38fc8b0f7c86","Brancher",{"Page":217,"_uid":220,"Title":221,"component":184},{"id":218,"url":25,"linktype":39,"fieldtype":40,"cached_url":219},"6293995f-67ea-4935-b00d-d6b10596af3d","blog/","f198c788-9583-4395-9cec-35a920bc2b20","Artikler",{"Page":223,"_uid":224,"Title":225,"component":184},{"id":37,"url":25,"linktype":39,"fieldtype":40,"cached_url":41},"6d562fa7-9764-4c1d-8999-0af9d3d7917b","Kontakt os",[227],{"Page":228,"_uid":229,"Title":230,"hidden":231,"component":184,"SubNavigationItems":232},{"id":37,"url":25,"anchor":38,"linktype":39,"fieldtype":40,"cached_url":41},"977f0c7f-5abd-40a2-b9da-a6d72127eee2","Book teknisk sparring",true,[],[234,246],{"_uid":235,"link":236,"Asset":239,"maxWidth":244,"component":245,"imageSize":25,"maxHeight":244},"b3cdc7fd-ca29-49f1-8acc-1685d05d79ca",{"id":25,"url":237,"linktype":238,"fieldtype":40,"cached_url":237},"https://www.facebook.com/uptimedevelopmentdk","url",{"id":240,"alt":241,"name":25,"focus":25,"title":25,"source":25,"filename":242,"copyright":25,"fieldtype":27,"meta_data":243,"is_external_url":29},11203649,"Facebook SoMe ikon","https://a.storyblok.com/f/195037/768x768/9354be154c/facebook-logo.png",[],"32","BlockImage",{"_uid":247,"link":248,"Asset":250,"maxWidth":244,"component":245,"imageSize":25,"maxHeight":244},"61696a88-1dac-473b-9440-acc6e0212805",{"id":25,"url":249,"linktype":238,"fieldtype":40,"cached_url":249},"https://www.linkedin.com/company/uptime-development/",{"id":251,"alt":252,"name":25,"focus":25,"title":25,"source":25,"filename":253,"copyright":25,"fieldtype":27,"meta_data":254,"is_external_url":29},11203650,"LinkedIn SoMe ikon","https://a.storyblok.com/f/195037/640x640/e8f936cc4f/linkedin-logo.png",[],{"tbody":256,"thead":317,"fieldtype":170},[257,269,281,293,305],{"_uid":258,"body":259,"component":64},"85922153-cdda-4388-8701-12db416076db",[260,263,266],{"_uid":261,"value":262,"component":60},"558d6047-1c7a-4de1-8821-566fb69a5be5","Danmark",{"_uid":264,"value":265,"component":60},"2430cfc3-688d-4620-85e0-26e92d311221","dk",{"_uid":267,"value":268,"component":60},"baccd3ac-f5cc-4b08-8882-1c1b0293e5ef","/",{"_uid":270,"body":271,"component":64},"76842066-ff5f-4ab3-b31c-f8bbedbdbcec",[272,275,278],{"_uid":273,"value":274,"component":60},"de00b93e-a532-4fce-924e-216e9f9375a9","Estland",{"_uid":276,"value":277,"component":60},"71d47cad-2ff0-443a-b055-f610d6ba13a7","ee",{"_uid":279,"value":280,"component":60},"1fa86fbd-6d93-44fe-90bf-08407bbaa6bb","https://uptime.ee/",{"_uid":282,"body":283,"component":64},"159ec48f-a015-4a88-963b-6014e151b1f8",[284,287,290],{"_uid":285,"value":286,"component":60},"364f3eed-53ed-434a-ae4a-848e8fc1e160","Norge",{"_uid":288,"value":289,"component":60},"f596476e-b013-4573-81a7-92acfae94a78","no",{"_uid":291,"value":292,"component":60},"ff7c0ae4-ccfa-4189-9caf-3a6873edb06a","https://uptimeconsulting.no/",{"_uid":294,"body":295,"component":64},"14bb9056-2451-4699-aed4-c95d8e5c1bda",[296,299,302],{"_uid":297,"value":298,"component":60},"3fedefa7-2620-42ce-afc2-fd9804a66037","Polen",{"_uid":300,"value":301,"component":60},"1572da6c-45ef-43cb-b24d-7eecd428041d","pl",{"_uid":303,"value":304,"component":60},"ff58fec4-f6f5-443a-9540-c069a085163e","https://www.uptime.eu/contact/",{"_uid":306,"body":307,"component":64},"1b772d37-47ab-448c-b84f-ab711921f593",[308,311,314],{"_uid":309,"value":310,"component":60},"38cf0e30-3cb4-4d84-9407-9ab206dad496","Schweiz",{"_uid":312,"value":313,"component":60},"989f321a-6c87-4739-91c4-e4068cce4ca7","ch",{"_uid":315,"value":316,"component":60},"2757315c-f21c-48a6-850b-3ae096ade15b","https://uptime.swiss/",[318,321,324],{"_uid":319,"value":320,"component":166},"aa4c1941-ee16-4dbe-8574-39185cca54f7","Navn",{"_uid":322,"value":323,"component":166},"f62c0bf1-738b-4f15-9961-317c58196f24","Landekode",{"_uid":325,"value":326,"component":166},"55b0e09b-428c-4b7f-a4cb-439d6564a8a7","URL",[328,335,342,349,356],{"Page":329,"_uid":332,"Title":333,"component":184,"SubNavigationItems":334},{"id":330,"url":25,"linktype":39,"fieldtype":40,"cached_url":331},"b49e0691-5fbe-4486-86bd-6ef6d3028374","kompetencer/app-udvikling/","36981831-3ff2-4a2a-a8bb-81046de11517","App udvikling",[],{"Page":336,"_uid":339,"Title":340,"component":184,"SubNavigationItems":341},{"id":337,"url":25,"linktype":39,"fieldtype":40,"cached_url":338},"1099935e-614b-4892-b08b-f83a01c3de2e","kompetencer/softwareintegration","9049940a-7bf4-493f-9ff0-25cad876d914","Software integration",[],{"Page":343,"_uid":346,"Title":347,"component":184,"SubNavigationItems":348},{"id":344,"url":25,"linktype":39,"fieldtype":40,"cached_url":345},"84882505-8312-4d6a-9a49-f3d175e9c1dc","kompetencer/webudvikling/","dfd91dca-8d29-4be0-b3ad-7c06fde2ccd2","Webudvikling",[],{"Page":350,"_uid":353,"Title":354,"component":184,"SubNavigationItems":355},{"id":351,"url":25,"linktype":39,"fieldtype":40,"cached_url":352},"1d81ee31-5b13-44b8-99a4-42380b5d8f2f","kompetencer/programmering/","c4769577-4c02-4650-9f21-40949765ee88","Programmering",[],{"Page":357,"_uid":360,"Title":361,"component":184,"SubNavigationItems":362},{"id":358,"url":25,"linktype":39,"fieldtype":40,"cached_url":359},"67360096-cd53-4d07-926f-bf4ff64d751e","kompetencer/it-udvikling","e1be4934-0370-43a2-86d9-fa0c92e73ade","IT udvikling",[],"Kompetencer",[365,370,374,378,383,387],{"Page":366,"_uid":368,"Title":274,"component":184,"SubNavigationItems":369},{"id":25,"url":367,"linktype":238,"fieldtype":40,"cached_url":367},"https://www.uptime.ee/","fbc0cbbe-6b90-4783-9e84-5de43cb588a8",[],{"Page":371,"_uid":372,"Title":286,"component":184,"SubNavigationItems":373},{"id":25,"url":292,"linktype":238,"fieldtype":40,"cached_url":292},"736cc7d8-f6f4-4e7a-9083-ca6c6d5e7f73",[],{"Page":375,"_uid":376,"Title":298,"component":184,"SubNavigationItems":377},{"id":25,"url":304,"linktype":238,"fieldtype":40,"cached_url":304},"ca6a8287-4dfa-497e-8277-03421745a9e4",[],{"Page":379,"_uid":381,"Title":262,"component":184,"SubNavigationItems":382},{"id":25,"url":380,"linktype":238,"fieldtype":40,"cached_url":380},"https://www.uptimedevelopment.dk/","f3027c1d-72ff-4bd5-af05-8321b421d21c",[],{"Page":384,"_uid":385,"Title":310,"component":184,"SubNavigationItems":386},{"id":25,"url":316,"linktype":238,"fieldtype":40,"cached_url":316},"b39aaa49-a7fd-46df-8196-dc48f3e678d8",[],{"Page":388,"_uid":390,"Title":391,"component":184,"SubNavigationItems":392},{"id":25,"url":389,"linktype":238,"fieldtype":40,"cached_url":389},"https://uptime.ee","c4551692-9846-4f9e-a7da-acb980b8e09b","Spanien",[],"Kontorer",[395,399,403,407,414,421],{"Page":396,"_uid":397,"Title":209,"component":184,"SubNavigationItems":398},{"id":206,"url":25,"linktype":39,"fieldtype":40,"cached_url":207},"8081492e-32ad-4542-8618-32af1e2c60f2",[],{"Page":400,"_uid":401,"Title":203,"component":184,"SubNavigationItems":402},{"id":200,"url":25,"linktype":39,"fieldtype":40,"cached_url":201},"88b8096f-5f6a-4110-a4eb-7d7040e728dc",[],{"Page":404,"_uid":405,"Title":34,"component":184,"SubNavigationItems":406},{"id":37,"url":25,"linktype":39,"fieldtype":40,"cached_url":41},"4a05dc72-f8ea-45ac-90e9-ad655af09a47",[],{"Page":408,"_uid":411,"Title":412,"component":184,"SubNavigationItems":413},{"id":25,"url":409,"target":410,"linktype":27,"fieldtype":40,"cached_url":409},"https://a.storyblok.com/f/195037/x/82776e3a7a/uptime-leveringsbetingelser-2023.pdf","_blank","1fe2dd54-6178-4af7-a1e8-412de06356af","Leveringsbetingelser",[],{"Page":415,"_uid":418,"Title":419,"component":184,"SubNavigationItems":420},{"id":416,"url":25,"linktype":39,"fieldtype":40,"cached_url":417},"610b4b5f-d838-489b-866e-2d197a997335","cookie-policy","329dbf5c-076b-407e-a7f4-623405f9507e","Privatlivs- & Cookiepolitik",[],{"Page":422,"_uid":425,"Title":426,"component":184,"SubNavigationItems":427},{"id":423,"url":25,"linktype":39,"fieldtype":40,"cached_url":424},"ca01e7ae-d95f-4d27-b6d1-181c32833d46","ski-leverandor","022b37e6-f46c-4191-9606-7d27a76ea669","SKI Leverandør",[],"Information ",null,110,[],"5b70cd24-4539-4bea-bba4-84fad44f9486","2023-02-07T08:01:17.912Z","default",[],1792051213,[],[],{"_uid":440,"body":441,"image":658,"component":660,"breadcrumbs":661,"shortDescription":673},"3112ad9a-41d8-4749-a1b6-252343c40799",[442,468,625,647],{"_uid":443,"content":444,"component":461,"BackgroundImage":462,"gradientOverlay":467},"api-hero",[445],{"_uid":446,"Blocks":447,"component":455,"BackgroundImage":456,"backgroundColor":25,"spaceBetweenCols":458,"BackgroundImageFull":459},"api-hero-sec",[448],{"_uid":449,"color":450,"title":451,"fontSize":452,"alignment":25,"component":453,"isPrimary":231,"fontWeight":25,"lineHeight":25,"mobileFontSize":454},"api-title","#FFFFFF","API-design: Sådan bygger I integrationer, der holder","64","BlockTitle","0","BlockSection",{"id":429,"alt":429,"name":25,"focus":429,"title":429,"source":429,"filename":25,"copyright":429,"fieldtype":27,"meta_data":457},[],"normal",{"id":429,"alt":429,"name":25,"focus":429,"title":429,"source":429,"filename":25,"copyright":429,"fieldtype":27,"meta_data":460},[],"BlockHeroWithBackground",{"id":463,"alt":464,"name":25,"focus":25,"title":25,"source":25,"filename":465,"copyright":25,"fieldtype":27,"meta_data":466,"is_external_url":29},11303834,"Uptime-team arbejder med softwarearkitektur","https://a.storyblok.com/f/195037/800x534/3b467fd58f/11318-uptime-development-005.jpg",[],"left-to-right",{"_uid":469,"Blocks":470,"component":455,"BackgroundImage":621,"backgroundColor":25,"spaceBetweenCols":458,"BackgroundImageFull":623},"api-content-sec",[471],{"_uid":472,"blocks":473,"spacing":25,"maxWidth":619,"component":620,"justifyContent":25},"api-col",[474,540,554],{"_uid":475,"Content":476,"TextAlign":25,"component":539},"api-text",{"type":477,"content":478},"doc",[479,485,489,496,500,504,509,513,517,522,526,530,535],{"type":480,"content":481},"paragraph",[482],{"text":483,"type":484},"Et API starter ofte beskedent: et system skal hente kunder, sende en ordre eller opdatere en status. Et par år senere bruger ERP, webshop, app, BI, partnere og interne værktøjer det samme API. Så bliver de tidlige designvalg pludselig dyre.","text",{"type":480,"content":486},[487],{"text":488,"type":484},"Derfor betragter vi et API som en langsigtet kontrakt mellem systemer. Et godt API handler ikke kun om endpoints og JSON. Det handler om at gøre ændringer mulige uden at skabe unødvendig risiko i alle de systemer, der er koblet på.",{"type":490,"attrs":491,"content":493},"heading",{"level":492},2,[494],{"text":495,"type":484},"Start med forretningens begreber – ikke databasen",{"type":480,"content":497},[498],{"text":499,"type":484},"Et godt API beskriver domænet: kunder, ordrer, produkter, projekter, sager og betalinger. Hvis API'et i stedet afspejler interne tabeller én til én, bliver databaseimplementationen hurtigt en ekstern kontrakt. Så kan en ellers simpel ændring i datamodellen få konsekvenser for mange integrationer.",{"type":480,"content":501},[502],{"text":503,"type":484},"Tænk derfor først over, hvad en forbruger faktisk skal kunne gøre. Det giver et mere forståeligt API og frihed til at ændre systemet bagved.",{"type":490,"attrs":505,"content":506},{"level":492},[507],{"text":508,"type":484},"Konsistens er en feature",{"type":480,"content":510},[511],{"text":512,"type":484},"Udviklere lærer hurtigt et API's mønstre. Hvis pagination, filtrering, datoformater, fejl, statuskoder og navngivning fungerer ens overalt, falder integrationsarbejdet markant. Den bedste oplevelse er, når næste endpoint opfører sig omtrent, som udvikleren forventer.",{"type":480,"content":514},[515],{"text":516,"type":484},"Lav derfor fælles konventioner tidligt. Det er langt billigere end at rette 40 endpoints senere.",{"type":490,"attrs":518,"content":519},{"level":492},[520],{"text":521,"type":484},"Design til ændringer fra starten",{"type":480,"content":523},[524],{"text":525,"type":484},"API'er lever ofte længere end den applikation, de først blev bygget til. Nye felter er typisk nemme at tilføje bagudkompatibelt, mens ændrede betydninger, slettede felter og nye obligatoriske input kan bryde eksisterende klienter.",{"type":480,"content":527},[528],{"text":529,"type":484},"Versionering kan være nødvendigt, men bør ikke være standardløsningen på alle ændringer. Før et breaking change bør I vide, hvem der bruger den eksisterende kontrakt, og have en konkret migrationsperiode.",{"type":490,"attrs":531,"content":532},{"level":492},[533],{"text":534,"type":484},"Fejlbeskeder skal kunne bruges af både mennesker og software",{"type":480,"content":536},[537],{"text":538,"type":484},"En 400-fejl fortæller kun, at noget er galt. Et integrationsvenligt API returnerer også en stabil fejlkode og en forståelig beskrivelse af problemet. Det gør det muligt for klienten at reagere korrekt og for udvikleren at fejlfinde uden først at ringe til leverandøren.","BlockText",{"_uid":541,"Blocks":542,"component":552,"justifyContent":553},"visual-api-design",[543],{"_uid":544,"link":545,"Asset":546,"maxWidth":25,"component":245,"imageSize":551,"maxHeight":25},"visual-api-design-image",{"id":25,"url":25,"linktype":39,"fieldtype":40,"cached_url":25},{"id":547,"alt":548,"name":25,"focus":25,"title":25,"source":25,"filename":549,"copyright":25,"fieldtype":27,"meta_data":550,"is_external_url":29},10316178,"Uptime-udviklere diskuterer kode","https://a.storyblok.com/f/195037/2080x703/388f34366a/11318-uptime-development-004-2048x1366-kopi.png",[],"contain","BlockSectionRow","center",{"_uid":555,"Content":556,"TextAlign":25,"component":539},"api-text-part2",{"type":477,"content":557},[558,563,567,571,576,580,584,589,593,598,602,606,611,615],{"type":490,"attrs":559,"content":560},{"level":492},[561],{"text":562,"type":484},"Sikkerhed handler også om autorisation",{"type":480,"content":564},[565],{"text":566,"type":484},"Autentifikation fortæller, hvem klienten er. Autorisation afgør, hvad den må. De to ting blandes ofte sammen. Overvej adgang pr. kunde, organisation, ressource og handling – og returnér aldrig flere data, end integrationen faktisk har behov for.",{"type":480,"content":568},[569],{"text":570,"type":484},"Rate limiting, inputvalidering, audit logs og håndtering af secrets bør være en del af designet og ikke noget, der monteres bagefter.",{"type":490,"attrs":572,"content":573},{"level":492},[574],{"text":575,"type":484},"Dokumentation skal kunne stole på",{"type":480,"content":577},[578],{"text":579,"type":484},"En OpenAPI-specifikation kan både drive dokumentation, klientgenerering og automatiske tests. Men værdien forsvinder, hvis specifikationen ikke følger den kode, der er i produktion. Derfor bør API-kontrakten være en del af udviklings- og deploymentprocessen.",{"type":480,"content":581},[582],{"text":583,"type":484},"Gode eksempler betyder også meget. Vis et realistisk request, et normalt response og de mest almindelige fejlscenarier. Det sparer ofte mere integrationstid end lange tekstbeskrivelser.",{"type":490,"attrs":585,"content":586},{"level":492},[587],{"text":588,"type":484},"Observability: Hvad sker der, når integrationen fejler kl. 02?",{"type":480,"content":590},[591],{"text":592,"type":484},"Et API er først rigtig driftbart, når teamet kan se, hvad der foregår. Log korrelations-id'er, svartider og fejl uden at lække følsomme data. Mål fejlrate og performance, og sørg for at en konkret transaktion kan følges gennem flere systemer.",{"type":490,"attrs":594,"content":595},{"level":492},[596],{"text":597,"type":484},"Når vi overtager et eksisterende API",{"type":480,"content":599},[600],{"text":601,"type":484},"Vi starter normalt med at kortlægge forbrugere, kontrakter, sikkerhed, performance, deployment og de ændringer, der oftest skaber problemer. Derefter kan forbedringer laves gradvist bag den eksisterende kontrakt.",{"type":480,"content":603},[604],{"text":605,"type":484},"Det er sjældent nødvendigt at smide API'et væk og begynde forfra. Ofte kan de største problemer løses ved at skabe konsistens, forbedre dokumentationen og isolere gammel implementation bag en stabil grænse.",{"type":490,"attrs":607,"content":608},{"level":492},[609],{"text":610,"type":484},"Et godt API reducerer prisen på den næste integration",{"type":480,"content":612},[613],{"text":614,"type":484},"API-design er derfor ikke kun en teknisk disciplin. Det afgør, hvor hurtigt virksomheden senere kan koble nye systemer, partnere og digitale produkter på. Den ekstra omtanke i starten betaler sig, når integration nummer to, fem og ti skal bygges.",{"type":480,"content":616},[617],{"text":618,"type":484},"Uptime udvikler og overtager integrationsplatforme og API'er mellem blandt andet ERP, CRM, web, apps og specialbyggede forretningssystemer.","900","BlockSectionCol",{"id":429,"alt":429,"name":25,"focus":429,"title":429,"source":429,"filename":25,"copyright":429,"fieldtype":27,"meta_data":622},[],{"id":429,"alt":429,"name":25,"focus":429,"title":429,"source":429,"filename":25,"copyright":429,"fieldtype":27,"meta_data":624},[],{"_uid":626,"Blocks":627,"component":455,"BackgroundImage":643,"backgroundColor":35,"spaceBetweenCols":458,"BackgroundImageFull":645},"takeaway-api-design",[628],{"_uid":629,"blocks":630,"spacing":25,"maxWidth":619,"component":620,"justifyContent":25},"takeaway-col-api-design",[631,635],{"_uid":632,"color":43,"title":633,"fontSize":244,"alignment":25,"component":453,"isPrimary":29,"fontWeight":634,"lineHeight":25,"mobileFontSize":25},"takeaway-title-api-design","Kort fortalt","700",{"_uid":636,"Content":637,"TextAlign":25,"component":539},"takeaway-text-api-design",{"type":477,"content":638},[639],{"type":480,"content":640},[641],{"text":642,"type":484},"Et godt API er en stabil kontrakt mellem systemer. Design efter de næste års ændringer – ikke kun efter den integration, der skal virke i dag.",{"id":429,"alt":429,"name":25,"focus":429,"title":429,"source":429,"filename":25,"copyright":429,"fieldtype":27,"meta_data":644},[],{"id":429,"alt":429,"name":25,"focus":429,"title":429,"source":429,"filename":25,"copyright":429,"fieldtype":27,"meta_data":646},[],{"_uid":648,"Blocks":649,"component":455,"BackgroundImage":654,"backgroundColor":35,"spaceBetweenCols":25,"BackgroundImageFull":656},"api-cta-sec",[650],{"_uid":651,"content":652,"component":653},"api-shared","94a45592-d5ea-4c41-bed9-cdd02d48327f","BlockShared",{"id":429,"alt":429,"name":25,"focus":429,"title":429,"source":429,"filename":25,"copyright":429,"fieldtype":27,"meta_data":655},[],{"id":429,"alt":429,"name":25,"focus":429,"title":429,"source":429,"filename":25,"copyright":429,"fieldtype":27,"meta_data":657},[],{"id":463,"alt":464,"name":25,"focus":25,"title":25,"source":25,"filename":465,"copyright":25,"fieldtype":27,"meta_data":659,"is_external_url":29},[],"Blog",[662,669],{"_uid":663,"link":664,"title":667,"component":668},"api-bc-home",{"id":665,"url":25,"linktype":39,"fieldtype":40,"cached_url":666},"c47b7c2f-d8bc-467a-b6a5-923c8be0ff3d","home","Softwareudvikling","Link",{"_uid":670,"link":671,"title":672,"component":668},"api-bc-blog",{"id":218,"url":25,"linktype":39,"fieldtype":40,"cached_url":219},"Blog - Find nye nyheder om os her","Godt API-design gør den næste integration billigere. Læs om kontrakter, versionering, sikkerhed, dokumentation, fejl og drift af API'er.",{"name":675,"created_at":676,"published_at":677,"updated_at":678,"id":679,"uuid":680,"content":681,"slug":869,"full_slug":870,"sort_by_date":429,"position":871,"tag_list":872,"is_startpage":29,"parent_id":873,"meta_data":429,"group_id":874,"first_published_at":875,"release_id":429,"lang":434,"path":429,"alternates":876,"default_full_slug":429,"translated_slugs":429},"API design | Sådan bygger I API'er der holder","2026-09-01T08:33:05.829Z","2026-09-25T09:28:50.044Z","2026-09-25T09:28:50.061Z",215293893990519,"00d9005f-c8fa-4466-b80f-2f98c4a4397d",{"_uid":440,"body":682,"image":861,"component":660,"breadcrumbs":863,"shortDescription":673},[683,694,804,819],{"_uid":443,"content":684,"component":461,"BackgroundImage":692,"gradientOverlay":467},[685],{"_uid":446,"Blocks":686,"component":455,"BackgroundImage":688,"backgroundColor":25,"spaceBetweenCols":458,"BackgroundImageFull":690},[687],{"_uid":449,"color":450,"title":451,"fontSize":452,"alignment":25,"component":453,"isPrimary":231,"fontWeight":25,"lineHeight":25,"mobileFontSize":454},{"id":429,"alt":429,"name":25,"focus":429,"title":429,"source":429,"filename":25,"copyright":429,"fieldtype":27,"meta_data":689},[],{"id":429,"alt":429,"name":25,"focus":429,"title":429,"source":429,"filename":25,"copyright":429,"fieldtype":27,"meta_data":691},[],{"id":463,"alt":464,"name":25,"focus":25,"title":25,"source":25,"filename":465,"copyright":25,"fieldtype":27,"meta_data":693,"is_external_url":29},[],{"_uid":469,"Blocks":695,"component":455,"BackgroundImage":800,"backgroundColor":25,"spaceBetweenCols":458,"BackgroundImageFull":802},[696],{"_uid":472,"blocks":697,"spacing":25,"maxWidth":619,"component":620,"justifyContent":25},[698,744,750],{"_uid":475,"Content":699,"TextAlign":25,"component":539},{"type":477,"content":700},[701,704,707,711,714,717,721,724,727,731,734,737,741],{"type":480,"content":702},[703],{"text":483,"type":484},{"type":480,"content":705},[706],{"text":488,"type":484},{"type":490,"attrs":708,"content":709},{"level":492},[710],{"text":495,"type":484},{"type":480,"content":712},[713],{"text":499,"type":484},{"type":480,"content":715},[716],{"text":503,"type":484},{"type":490,"attrs":718,"content":719},{"level":492},[720],{"text":508,"type":484},{"type":480,"content":722},[723],{"text":512,"type":484},{"type":480,"content":725},[726],{"text":516,"type":484},{"type":490,"attrs":728,"content":729},{"level":492},[730],{"text":521,"type":484},{"type":480,"content":732},[733],{"text":525,"type":484},{"type":480,"content":735},[736],{"text":529,"type":484},{"type":490,"attrs":738,"content":739},{"level":492},[740],{"text":534,"type":484},{"type":480,"content":742},[743],{"text":538,"type":484},{"_uid":541,"Blocks":745,"component":552,"justifyContent":553},[746],{"_uid":544,"link":747,"Asset":748,"maxWidth":25,"component":245,"imageSize":551,"maxHeight":25},{"id":25,"url":25,"linktype":39,"fieldtype":40,"cached_url":25},{"id":547,"alt":548,"name":25,"focus":25,"title":25,"source":25,"filename":549,"copyright":25,"fieldtype":27,"meta_data":749,"is_external_url":29},[],{"_uid":555,"Content":751,"TextAlign":25,"component":539},{"type":477,"content":752},[753,757,760,763,767,770,773,777,780,784,787,790,794,797],{"type":490,"attrs":754,"content":755},{"level":492},[756],{"text":562,"type":484},{"type":480,"content":758},[759],{"text":566,"type":484},{"type":480,"content":761},[762],{"text":570,"type":484},{"type":490,"attrs":764,"content":765},{"level":492},[766],{"text":575,"type":484},{"type":480,"content":768},[769],{"text":579,"type":484},{"type":480,"content":771},[772],{"text":583,"type":484},{"type":490,"attrs":774,"content":775},{"level":492},[776],{"text":588,"type":484},{"type":480,"content":778},[779],{"text":592,"type":484},{"type":490,"attrs":781,"content":782},{"level":492},[783],{"text":597,"type":484},{"type":480,"content":785},[786],{"text":601,"type":484},{"type":480,"content":788},[789],{"text":605,"type":484},{"type":490,"attrs":791,"content":792},{"level":492},[793],{"text":610,"type":484},{"type":480,"content":795},[796],{"text":614,"type":484},{"type":480,"content":798},[799],{"text":618,"type":484},{"id":429,"alt":429,"name":25,"focus":429,"title":429,"source":429,"filename":25,"copyright":429,"fieldtype":27,"meta_data":801},[],{"id":429,"alt":429,"name":25,"focus":429,"title":429,"source":429,"filename":25,"copyright":429,"fieldtype":27,"meta_data":803},[],{"_uid":626,"Blocks":805,"component":455,"BackgroundImage":815,"backgroundColor":35,"spaceBetweenCols":458,"BackgroundImageFull":817},[806],{"_uid":629,"blocks":807,"spacing":25,"maxWidth":619,"component":620,"justifyContent":25},[808,809],{"_uid":632,"color":43,"title":633,"fontSize":244,"alignment":25,"component":453,"isPrimary":29,"fontWeight":634,"lineHeight":25,"mobileFontSize":25},{"_uid":636,"Content":810,"TextAlign":25,"component":539},{"type":477,"content":811},[812],{"type":480,"content":813},[814],{"text":642,"type":484},{"id":429,"alt":429,"name":25,"focus":429,"title":429,"source":429,"filename":25,"copyright":429,"fieldtype":27,"meta_data":816},[],{"id":429,"alt":429,"name":25,"focus":429,"title":429,"source":429,"filename":25,"copyright":429,"fieldtype":27,"meta_data":818},[],{"_uid":648,"Blocks":820,"component":455,"BackgroundImage":857,"backgroundColor":35,"spaceBetweenCols":25,"BackgroundImageFull":859},[821],{"_uid":651,"content":822,"component":653},{"name":823,"created_at":824,"published_at":825,"updated_at":826,"id":827,"uuid":652,"content":828,"slug":849,"full_slug":850,"sort_by_date":429,"position":851,"tag_list":852,"is_startpage":29,"parent_id":853,"meta_data":429,"group_id":854,"first_published_at":855,"release_id":429,"lang":434,"path":429,"alternates":856,"default_full_slug":429,"translated_slugs":429,"_stopResolving":231},"Default contact","2023-08-08T07:56:04.163Z","2025-10-09T12:31:42.248Z","2025-10-09T12:37:13.520Z",351865272,{"_uid":829,"body":830,"noindex":231,"component":847,"breadcrumbs":848,"shortDescription":823},"7734b562-c23b-4ca6-9b98-21e7a8476a25",[831],{"_uid":832,"title":833,"subtitle":834,"component":835,"personName":836,"personEmail":837,"personImage":838,"personPhone":16,"personTitle":841,"successMessage":842,"placeholderName":320,"placeholderEmail":843,"placeholderPhone":844,"placeholderMessage":845,"placeholderButtonSubmit":846},"093c5b8d-8e9f-4062-a6ba-56c26c24fa22","Vil du høre mere?","Kontakt os for en snak om, hvordan vi kan hjælpe jer i mål med jeres næste IT-projekt.","BlockContact","Dan Olesen","dan.olesen@uptimedevelopment.dk",{"id":23,"alt":24,"name":25,"focus":839,"title":25,"source":25,"filename":26,"copyright":25,"fieldtype":27,"meta_data":840,"is_external_url":29},"786x156:787x157",{"alt":24,"title":25,"source":25,"copyright":25},"Business Developer","Tak for din hendvendelse, vi vender tilbage snarest muligt.","Email","Telefon","Besked","Send besked","page",[],"default-contact","shared-components/default-contact",0,[],351852723,"d0b2760f-5a92-47fd-9da0-e4fb29946b02","2023-08-08T08:01:05.365Z",[],{"id":429,"alt":429,"name":25,"focus":429,"title":429,"source":429,"filename":25,"copyright":429,"fieldtype":27,"meta_data":858},[],{"id":429,"alt":429,"name":25,"focus":429,"title":429,"source":429,"filename":25,"copyright":429,"fieldtype":27,"meta_data":860},[],{"id":463,"alt":464,"name":25,"focus":25,"title":25,"source":25,"filename":465,"copyright":25,"fieldtype":27,"meta_data":862,"is_external_url":29},[],[864,866],{"_uid":663,"link":865,"title":667,"component":668},{"id":665,"url":25,"linktype":39,"fieldtype":40,"cached_url":268},{"_uid":670,"link":867,"title":672,"component":668},{"id":218,"url":25,"linktype":39,"fieldtype":40,"cached_url":868},"/blog/","api-design","blog/api-design",-320,[],348441801,"9746e856-7c45-422d-9d40-8c8eeb754391","2026-09-01T13:08:21.527Z",[],1792051257126]