SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
Gustaf Nilsson Kotte
@gustaf_nk
How to scale development of apps?
How to make our web work on every browser?
How to scale development of apps? => HTML Hypermedia APIs
How to make our web work on every browser? => AWD

HTML Hypermedia APIs + AWD => Perfect combo!
RestBugs fork: HTML Hypermedia API + Adaptive Web Design




                                        https://github.com/gustafnk/RestBugs
iOS   Android   …   …           …   Web   ?




                        API




                        Store
iOS   Android   …   …           …   Web   ?




                        API




                        Store
http://martinfowler.com/articles/richardsonMaturityModel.html
Jon Moore




http://codeartisan.blogspot.com/2012/07/using-html-as-media-type-for-your-api.html
Hypermedia controls (read + write)

Old, standardized, everybody knows it
                                                                                Jon Moore
Good tooling support (server + clients)




              http://codeartisan.blogspot.com/2012/07/using-html-as-media-type-for-your-api.html
<div id="bugs">
  <ul class="all">
    <li>
      <span class="title">Nordic APIs bug</span>
      <span class="description">The description of the bug</span>

      <form class="move working next"
            action="/bugs/working" method="POST" title="Move to Working">
          <input name="id" type="hidden" value="...">
          <input name="submit" type="submit" value="Move to Working">
      </form>
    </li>
  </ul>
</div>
HTML Hypermedia APIs


                         Mobile first




          “Minimalistic HTML”
HTML Hypermedia APIs + Mobile web
Mobile web         Desktop web
             AWD

                   “Modern mobile”
                   …
Responsive Web Design
                                                        Unobtrusive JavaScript
Delayed content loading                                               Hijax
                               Bundling AJAX requests
                Conditionally loaded content
Feature detection                                                Performance
     HTML5 Navigation Timing




             http://bradfrostweb.com/blog/mobile/beyond-media-queries-anatomy-of-an-adaptive-web-design
“An escalator can never break: it
can only become stairs.”
                 – Mitch Hedberg
Same logical endpoint

Native apps (80/20)


Web browsers                  HTML Hypermedia API
                                      +
                                    AWD


Enhanced web



      No application logic        Application logic
www.example.com
api.example.com
(app.js)
renderWeb = function(){
   return host.contains(":9200")
};

POST /bugs:
  …
  if(renderWeb())
    redirect to index page
  else
    return 201 Created;
• How to scale development of apps? => HTML Hypermedia APIs
• How to make our web work on every browser? => AWD

HTML Hypermedia APIs + AWD => Perfect combo!
Same logical endpoint

Native apps (80/20)


Web browsers                  HTML Hypermedia API
                                      +
                                    AWD


Enhanced web



      No application logic        Application logic
http://www.amazon.com/Building-Hypermedia-APIs-HTML5-Node/dp/1449306578
                          http://easy-readers.net/books/adaptive-web-design
“Progressive Enhancement 2.0”, Nicolas Zakas

“Resource-Oriented Client Architecture”




                        http://www.webmonkey.com/2012/03/video-progressive-enhancement-2-0
                                                                         http://roca-style.org
@gustaf_nk
https://github.com/gustafnk/RestBugs

http://www.slideshare.net/GustafKotte
(Inline javascript code in responses)

using harvey.js // polyfill for media queries

  configuration "large screen":
    on:
      $.getScript("/js/client.min.js");
      $.get("/css/client.min.css", function(css) {…});
    off:
      location.reload()
(client.min.js)

links = $("#links a[rel!=index]");
addForm = $("form.new");
load template containing angular.js markup
clear <body>
bootstrap angular

foreach link in links:
  htmlResponse = GET link
  parse htmlResponse
  populate view model

Enable hijax for add and move forms
(app.js)
renderWeb = function(){
   return host.contains(":9200")
};

(server template)
<% if(renderWeb) { %>
  <script>…</script>
  <link href="/css/mobile.css" … />
<% } %>

Contenu connexe

Tendances

Intro to Azure Api Management - With Cats
Intro to Azure Api Management - With CatsIntro to Azure Api Management - With Cats
Intro to Azure Api Management - With CatsXamariners
 
Instant Security & Scalable User Management with Spring Boot
Instant Security & Scalable User Management with Spring BootInstant Security & Scalable User Management with Spring Boot
Instant Security & Scalable User Management with Spring BootStormpath
 
Building Components and Services for the Programmable Web
Building Components and Services for the Programmable WebBuilding Components and Services for the Programmable Web
Building Components and Services for the Programmable Webgoodfriday
 
Use the PnP SharePoint Starter Kit to create your intranet in a box
Use the PnP SharePoint Starter Kit to create your intranet in a boxUse the PnP SharePoint Starter Kit to create your intranet in a box
Use the PnP SharePoint Starter Kit to create your intranet in a boxFabio Franzini
 
Startup hackers toolbox
Startup hackers toolboxStartup hackers toolbox
Startup hackers toolboxShem Magnezi
 
BaaS Comparison - iOS.mn
BaaS Comparison - iOS.mnBaaS Comparison - iOS.mn
BaaS Comparison - iOS.mnpyro2927
 
Google Chronicles: Analytics And Chrome
Google Chronicles: Analytics And ChromeGoogle Chronicles: Analytics And Chrome
Google Chronicles: Analytics And ChromeSarah Dutkiewicz
 
Adding Rules on Existing Hypermedia APIs
Adding Rules on Existing Hypermedia APIsAdding Rules on Existing Hypermedia APIs
Adding Rules on Existing Hypermedia APIsMichael Petychakis
 
Backend as a Service Comparison
Backend as a Service ComparisonBackend as a Service Comparison
Backend as a Service ComparisonSerhiy Snizhny
 
Working with Web 2.0 APIs (or, maybe just defining)
Working with Web 2.0 APIs (or, maybe just defining)Working with Web 2.0 APIs (or, maybe just defining)
Working with Web 2.0 APIs (or, maybe just defining)Bridget S
 
Resume Priyanka Bandekar MS CSYE
Resume Priyanka Bandekar MS CSYEResume Priyanka Bandekar MS CSYE
Resume Priyanka Bandekar MS CSYEPriyanka Bandekar
 
Resume Priyanka Bandekar MS CSYE
Resume Priyanka Bandekar MS CSYEResume Priyanka Bandekar MS CSYE
Resume Priyanka Bandekar MS CSYEPriyanka Bandekar
 
VJCD2017 SharePoint Framework (SPFx)
VJCD2017 SharePoint Framework (SPFx)VJCD2017 SharePoint Framework (SPFx)
VJCD2017 SharePoint Framework (SPFx)Seiji Noro
 
CTO view on Firebase. How I used Firebase in my projects? Where I loved, wher...
CTO view on Firebase. How I used Firebase in my projects? Where I loved, wher...CTO view on Firebase. How I used Firebase in my projects? Where I loved, wher...
CTO view on Firebase. How I used Firebase in my projects? Where I loved, wher...GameCamp
 
APIs 101: What are they? What do they have to do with genealogy?
APIs 101: What are they? What do they have to do with genealogy?APIs 101: What are they? What do they have to do with genealogy?
APIs 101: What are they? What do they have to do with genealogy?Colleen Greene
 
Towards an API Commons
Towards an API CommonsTowards an API Commons
Towards an API Commons3scale
 
Hypermedia APIs – Why, what, how?
Hypermedia APIs – Why, what, how?Hypermedia APIs – Why, what, how?
Hypermedia APIs – Why, what, how?Vesa Vänskä
 

Tendances (20)

Design Hypermedia APIs
Design Hypermedia APIsDesign Hypermedia APIs
Design Hypermedia APIs
 
Web Analytics
Web AnalyticsWeb Analytics
Web Analytics
 
Intro to Azure Api Management - With Cats
Intro to Azure Api Management - With CatsIntro to Azure Api Management - With Cats
Intro to Azure Api Management - With Cats
 
Instant Security & Scalable User Management with Spring Boot
Instant Security & Scalable User Management with Spring BootInstant Security & Scalable User Management with Spring Boot
Instant Security & Scalable User Management with Spring Boot
 
Building Components and Services for the Programmable Web
Building Components and Services for the Programmable WebBuilding Components and Services for the Programmable Web
Building Components and Services for the Programmable Web
 
Use the PnP SharePoint Starter Kit to create your intranet in a box
Use the PnP SharePoint Starter Kit to create your intranet in a boxUse the PnP SharePoint Starter Kit to create your intranet in a box
Use the PnP SharePoint Starter Kit to create your intranet in a box
 
Startup hackers toolbox
Startup hackers toolboxStartup hackers toolbox
Startup hackers toolbox
 
BaaS Comparison - iOS.mn
BaaS Comparison - iOS.mnBaaS Comparison - iOS.mn
BaaS Comparison - iOS.mn
 
Google Chronicles: Analytics And Chrome
Google Chronicles: Analytics And ChromeGoogle Chronicles: Analytics And Chrome
Google Chronicles: Analytics And Chrome
 
Adding Rules on Existing Hypermedia APIs
Adding Rules on Existing Hypermedia APIsAdding Rules on Existing Hypermedia APIs
Adding Rules on Existing Hypermedia APIs
 
Backend as a Service Comparison
Backend as a Service ComparisonBackend as a Service Comparison
Backend as a Service Comparison
 
Working with Web 2.0 APIs (or, maybe just defining)
Working with Web 2.0 APIs (or, maybe just defining)Working with Web 2.0 APIs (or, maybe just defining)
Working with Web 2.0 APIs (or, maybe just defining)
 
Resume Priyanka Bandekar MS CSYE
Resume Priyanka Bandekar MS CSYEResume Priyanka Bandekar MS CSYE
Resume Priyanka Bandekar MS CSYE
 
Resume Priyanka Bandekar MS CSYE
Resume Priyanka Bandekar MS CSYEResume Priyanka Bandekar MS CSYE
Resume Priyanka Bandekar MS CSYE
 
VJCD2017 SharePoint Framework (SPFx)
VJCD2017 SharePoint Framework (SPFx)VJCD2017 SharePoint Framework (SPFx)
VJCD2017 SharePoint Framework (SPFx)
 
CTO view on Firebase. How I used Firebase in my projects? Where I loved, wher...
CTO view on Firebase. How I used Firebase in my projects? Where I loved, wher...CTO view on Firebase. How I used Firebase in my projects? Where I loved, wher...
CTO view on Firebase. How I used Firebase in my projects? Where I loved, wher...
 
APIs 101: What are they? What do they have to do with genealogy?
APIs 101: What are they? What do they have to do with genealogy?APIs 101: What are they? What do they have to do with genealogy?
APIs 101: What are they? What do they have to do with genealogy?
 
Towards an API Commons
Towards an API CommonsTowards an API Commons
Towards an API Commons
 
WordPress: React Way
WordPress: React WayWordPress: React Way
WordPress: React Way
 
Hypermedia APIs – Why, what, how?
Hypermedia APIs – Why, what, how?Hypermedia APIs – Why, what, how?
Hypermedia APIs – Why, what, how?
 

En vedette

Together Cheerfully to Walk with Hypermedia
Together Cheerfully to Walk with HypermediaTogether Cheerfully to Walk with Hypermedia
Together Cheerfully to Walk with HypermediaVladimir Tsukur
 
Using a hypermedia API with Angular.js
Using a hypermedia API with Angular.jsUsing a hypermedia API with Angular.js
Using a hypermedia API with Angular.jsPieter Herroelen
 
Sull’adattamento dell’individuo al cambiamento - Elisei
Sull’adattamento dell’individuo al cambiamento - EliseiSull’adattamento dell’individuo al cambiamento - Elisei
Sull’adattamento dell’individuo al cambiamento - EliseiCAF CIA
 
Hypermedia in API Design: Enterprise as an Early Adopter
Hypermedia in API Design: Enterprise as an Early AdopterHypermedia in API Design: Enterprise as an Early Adopter
Hypermedia in API Design: Enterprise as an Early AdopterApigee | Google Cloud
 
Making Sense of Hypermedia APIs – Hype or Reality?
Making Sense of Hypermedia APIs – Hype or Reality?Making Sense of Hypermedia APIs – Hype or Reality?
Making Sense of Hypermedia APIs – Hype or Reality?Akana
 
The hypermedia api
The hypermedia apiThe hypermedia api
The hypermedia apiInviqa
 
Deep-dive into Microservice Outer Architecture
Deep-dive into Microservice Outer ArchitectureDeep-dive into Microservice Outer Architecture
Deep-dive into Microservice Outer ArchitectureWSO2
 
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails
Hypermedia: The Missing Element to Building Adaptable Web APIs in RailsHypermedia: The Missing Element to Building Adaptable Web APIs in Rails
Hypermedia: The Missing Element to Building Adaptable Web APIs in RailsToru Kawamura
 

En vedette (10)

AngularJS in large applications - AE NV
AngularJS in large applications - AE NVAngularJS in large applications - AE NV
AngularJS in large applications - AE NV
 
Together Cheerfully to Walk with Hypermedia
Together Cheerfully to Walk with HypermediaTogether Cheerfully to Walk with Hypermedia
Together Cheerfully to Walk with Hypermedia
 
Using a hypermedia API with Angular.js
Using a hypermedia API with Angular.jsUsing a hypermedia API with Angular.js
Using a hypermedia API with Angular.js
 
Sull’adattamento dell’individuo al cambiamento - Elisei
Sull’adattamento dell’individuo al cambiamento - EliseiSull’adattamento dell’individuo al cambiamento - Elisei
Sull’adattamento dell’individuo al cambiamento - Elisei
 
Hypermedia in API Design: Enterprise as an Early Adopter
Hypermedia in API Design: Enterprise as an Early AdopterHypermedia in API Design: Enterprise as an Early Adopter
Hypermedia in API Design: Enterprise as an Early Adopter
 
Making Sense of Hypermedia APIs – Hype or Reality?
Making Sense of Hypermedia APIs – Hype or Reality?Making Sense of Hypermedia APIs – Hype or Reality?
Making Sense of Hypermedia APIs – Hype or Reality?
 
The hypermedia api
The hypermedia apiThe hypermedia api
The hypermedia api
 
Javantura v4 - True RESTful Java Web Services with JSON API and Katharsis - M...
Javantura v4 - True RESTful Java Web Services with JSON API and Katharsis - M...Javantura v4 - True RESTful Java Web Services with JSON API and Katharsis - M...
Javantura v4 - True RESTful Java Web Services with JSON API and Katharsis - M...
 
Deep-dive into Microservice Outer Architecture
Deep-dive into Microservice Outer ArchitectureDeep-dive into Microservice Outer Architecture
Deep-dive into Microservice Outer Architecture
 
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails
Hypermedia: The Missing Element to Building Adaptable Web APIs in RailsHypermedia: The Missing Element to Building Adaptable Web APIs in Rails
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails
 

Similaire à HTML Hypermedia APIs and Adaptive Web Design - Nordic APIs

HTML Hypermedia APIs and Adaptive Web Design - RuPy
HTML Hypermedia APIs and Adaptive Web Design - RuPyHTML Hypermedia APIs and Adaptive Web Design - RuPy
HTML Hypermedia APIs and Adaptive Web Design - RuPyGustaf Nilsson Kotte
 
WHAT IS HTML5? (at CSS Nite Osaka)
WHAT IS HTML5? (at CSS Nite Osaka)WHAT IS HTML5? (at CSS Nite Osaka)
WHAT IS HTML5? (at CSS Nite Osaka)Shumpei Shiraishi
 
Android App Development using HTML5 Technology
Android App Development using HTML5 TechnologyAndroid App Development using HTML5 Technology
Android App Development using HTML5 TechnologyOon Arfiandwi
 
Creating Rajanikant Powered Site
Creating Rajanikant Powered SiteCreating Rajanikant Powered Site
Creating Rajanikant Powered Sitemarkandey
 
Midgard Create and VIE
Midgard Create and VIEMidgard Create and VIE
Midgard Create and VIEHenri Bergius
 
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考えるIt is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考えるSadaaki HIRAI
 
Multi screen HTML5
Multi screen HTML5Multi screen HTML5
Multi screen HTML5Ron Reiter
 
Making Of PHP Based Web Application
Making Of PHP Based Web ApplicationMaking Of PHP Based Web Application
Making Of PHP Based Web ApplicationSachin Walvekar
 
HTML5 & Renesas RZ/G
HTML5 & Renesas RZ/GHTML5 & Renesas RZ/G
HTML5 & Renesas RZ/Gdynamis
 
FEDM Meetup: Introducing Mojito
FEDM Meetup: Introducing MojitoFEDM Meetup: Introducing Mojito
FEDM Meetup: Introducing MojitoCaridy Patino
 
HTML5: An Overview
HTML5: An OverviewHTML5: An Overview
HTML5: An OverviewNagendra Um
 
Create.js - Inline editing for any website
Create.js - Inline editing for any websiteCreate.js - Inline editing for any website
Create.js - Inline editing for any websiteHenri Bergius
 
Android
AndroidAndroid
Androidscottw
 
Summit Australia 2019 - PowerApp Portals - Andrew Ly & Lachlan Wright
Summit Australia 2019 - PowerApp Portals - Andrew Ly & Lachlan WrightSummit Australia 2019 - PowerApp Portals - Andrew Ly & Lachlan Wright
Summit Australia 2019 - PowerApp Portals - Andrew Ly & Lachlan WrightAndrew Ly
 
Google I/O 2012 - Protecting your user experience while integrating 3rd party...
Google I/O 2012 - Protecting your user experience while integrating 3rd party...Google I/O 2012 - Protecting your user experience while integrating 3rd party...
Google I/O 2012 - Protecting your user experience while integrating 3rd party...Patrick Meenan
 
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)Saltlux zinyus
 

Similaire à HTML Hypermedia APIs and Adaptive Web Design - Nordic APIs (20)

What is HTML5
What is HTML5What is HTML5
What is HTML5
 
HTML Hypermedia APIs and Adaptive Web Design - RuPy
HTML Hypermedia APIs and Adaptive Web Design - RuPyHTML Hypermedia APIs and Adaptive Web Design - RuPy
HTML Hypermedia APIs and Adaptive Web Design - RuPy
 
WHAT IS HTML5? (at CSS Nite Osaka)
WHAT IS HTML5? (at CSS Nite Osaka)WHAT IS HTML5? (at CSS Nite Osaka)
WHAT IS HTML5? (at CSS Nite Osaka)
 
Android App Development using HTML5 Technology
Android App Development using HTML5 TechnologyAndroid App Development using HTML5 Technology
Android App Development using HTML5 Technology
 
Creating Rajanikant Powered Site
Creating Rajanikant Powered SiteCreating Rajanikant Powered Site
Creating Rajanikant Powered Site
 
WHAT IS HTML5?(20100510)
WHAT IS HTML5?(20100510)WHAT IS HTML5?(20100510)
WHAT IS HTML5?(20100510)
 
Midgard Create and VIE
Midgard Create and VIEMidgard Create and VIE
Midgard Create and VIE
 
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考えるIt is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
 
Multi screen HTML5
Multi screen HTML5Multi screen HTML5
Multi screen HTML5
 
Making Of PHP Based Web Application
Making Of PHP Based Web ApplicationMaking Of PHP Based Web Application
Making Of PHP Based Web Application
 
HTML5 & Renesas RZ/G
HTML5 & Renesas RZ/GHTML5 & Renesas RZ/G
HTML5 & Renesas RZ/G
 
FEDM Meetup: Introducing Mojito
FEDM Meetup: Introducing MojitoFEDM Meetup: Introducing Mojito
FEDM Meetup: Introducing Mojito
 
HTML5: An Overview
HTML5: An OverviewHTML5: An Overview
HTML5: An Overview
 
Create.js - Inline editing for any website
Create.js - Inline editing for any websiteCreate.js - Inline editing for any website
Create.js - Inline editing for any website
 
What is HTML 5?
What is HTML 5?What is HTML 5?
What is HTML 5?
 
Android
AndroidAndroid
Android
 
Html5
Html5Html5
Html5
 
Summit Australia 2019 - PowerApp Portals - Andrew Ly & Lachlan Wright
Summit Australia 2019 - PowerApp Portals - Andrew Ly & Lachlan WrightSummit Australia 2019 - PowerApp Portals - Andrew Ly & Lachlan Wright
Summit Australia 2019 - PowerApp Portals - Andrew Ly & Lachlan Wright
 
Google I/O 2012 - Protecting your user experience while integrating 3rd party...
Google I/O 2012 - Protecting your user experience while integrating 3rd party...Google I/O 2012 - Protecting your user experience while integrating 3rd party...
Google I/O 2012 - Protecting your user experience while integrating 3rd party...
 
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
 

Plus de Gustaf Nilsson Kotte

Microservice Websites – Øredev 2017
Microservice Websites – Øredev 2017Microservice Websites – Øredev 2017
Microservice Websites – Øredev 2017Gustaf Nilsson Kotte
 
Microservice Websites – Micro CPH
Microservice Websites – Micro CPHMicroservice Websites – Micro CPH
Microservice Websites – Micro CPHGustaf Nilsson Kotte
 
Microservice Websites (microXchg 2017)
Microservice Websites (microXchg 2017)Microservice Websites (microXchg 2017)
Microservice Websites (microXchg 2017)Gustaf Nilsson Kotte
 
Simpler Web Architectures Now! (At The Frontend 2016)
Simpler Web Architectures Now! (At The Frontend 2016)Simpler Web Architectures Now! (At The Frontend 2016)
Simpler Web Architectures Now! (At The Frontend 2016)Gustaf Nilsson Kotte
 
A Simpler Web App Architecture (jDays 2016)
A Simpler Web App Architecture (jDays 2016)A Simpler Web App Architecture (jDays 2016)
A Simpler Web App Architecture (jDays 2016)Gustaf Nilsson Kotte
 
Surviving the Zombie Apocalpyse of Connected Devices
Surviving the Zombie Apocalpyse of Connected DevicesSurviving the Zombie Apocalpyse of Connected Devices
Surviving the Zombie Apocalpyse of Connected DevicesGustaf Nilsson Kotte
 

Plus de Gustaf Nilsson Kotte (8)

Microservice Websites – Øredev 2017
Microservice Websites – Øredev 2017Microservice Websites – Øredev 2017
Microservice Websites – Øredev 2017
 
Microservice Websites – Micro CPH
Microservice Websites – Micro CPHMicroservice Websites – Micro CPH
Microservice Websites – Micro CPH
 
Microservice Websites (microXchg 2017)
Microservice Websites (microXchg 2017)Microservice Websites (microXchg 2017)
Microservice Websites (microXchg 2017)
 
Simpler Web Architectures Now! (At The Frontend 2016)
Simpler Web Architectures Now! (At The Frontend 2016)Simpler Web Architectures Now! (At The Frontend 2016)
Simpler Web Architectures Now! (At The Frontend 2016)
 
A Simpler Web App Architecture (jDays 2016)
A Simpler Web App Architecture (jDays 2016)A Simpler Web App Architecture (jDays 2016)
A Simpler Web App Architecture (jDays 2016)
 
Jayway Web Tech Radar 2015
Jayway Web Tech Radar 2015Jayway Web Tech Radar 2015
Jayway Web Tech Radar 2015
 
Surviving the Zombie Apocalpyse of Connected Devices
Surviving the Zombie Apocalpyse of Connected DevicesSurviving the Zombie Apocalpyse of Connected Devices
Surviving the Zombie Apocalpyse of Connected Devices
 
Windows 8 for Web Developers
Windows 8 for Web DevelopersWindows 8 for Web Developers
Windows 8 for Web Developers
 

HTML Hypermedia APIs and Adaptive Web Design - Nordic APIs