SlideShare a Scribd company logo
API Description Languages:! 
Which is the right one for me?! 
Laura Heritage! 
Director of API Strategy! 
Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved.
What is an API Description Language (API DL)?! 
Blueprint Contract Metadata Human Docs 
Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved.
What About WSDL2.0 or WADL?! 
• For REST, they are not widely adopted 
• Both are not very “humanly readable” 
• Both are typically auto-generate from code – wouldn’t use 
them as a “blueprint” amongst non-technical types 
• WADL doesn’t contain enough information to adequately 
describe a RESTful API. Though does have extension points 
which are seldom used. 
• WSDL contains almost everything you need but is quite 
brittle. If it changes the clients must change too 
Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved.
API DL Brings REST to the Enterprise! 
Governable Shareable Readable 
“Lack of a way to describe a RESTful services was one of the 
largest barriers to REST adoption in the enterprise.” 
Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved.
Many API DL Are Available Today! 
Hypermedia 
Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved.
Most Active API DL Communities! 
API-Blueprint RAML* SWAGGER 1.2* 
Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved. 
(2.0 release Sept. 8, 2014) 
Format Markdown YAML JSON 
(YAML provided by 3rd party with 
2.0) 
Available at GitHub GitHub GitHub 
Sponsored by Apiary Mulesoft Reverb 
Current Version 1A3 0.8 1.2 
Workgroup No Yes Yes 
Initial commit April, 2013 Sep, 2013 July, 2011 
API Design 
Approach 
Top-down Top-down **Bottom-up 
* Most Widely Adopted by Enterprises
How Do You Choose?! 
Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved.
Define Key Purpose Behind Using an API DL! 
Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved. 
SWAGGER RAML 
I need the ability to design the API with technically limited API 
stakeholders 
- 
(new top down tooling 
being developed) 
X 
I want a way to describe and design an API with my technical 
team 
X X 
(has more advanced 
meta data constructs 
(includes, inheritance, 
traits)) 
I need to validate the requests and responses at runtime X 
(swagger-node-express, 
swagger - 
Play) 
X 
(Osprey) 
I need to easily consume the API specification between two or 
more systems 
X X 
I need documentation for audit and compliance X X 
I need exceptional external API developer experiences X X 
I need to generate server code X 
(node.js, Java) 
X 
(node.js, Java) 
I need to generate client code X X* 
I need to unit Test against the spec X X
Understand How Your Team Works! 
SWAGGER RAML 
Do you design before you 
code? 
Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved. 
- X 
Do you generate documents 
after you code from your 
code? 
X X 
(JAXRS-to-RAML ) 
Do you want docs embedded 
in your server code? 
X -
Look At Their Community! 
• Swagger by far has the largest community, since its been around since 2011 
• RAML has gained traction in the enterprise due to the richness of its modeling 
capability; API version metatdata, nested resources, composition and inheritance, file 
inclusions and top down approach 
Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved. 
Generators 
SWAGGER RAML 
Documentation From Code Clojure, ColdFusion/CFML, 
Eiffel, Go, Java, .Net, 
Node.js, PHP, Python, 
Ruby, Scala 
JAX-RS 
Spec Parsers Java, js PHP, Ruby, Phython, Java, 
Javascript 
API Interfaces Java, Node.js Java, Node.js 
Client Code Several Developing 
Editor Tooling *new in the works based 
on YAML, demo’d in May 
API Designer, Sublime plugin, 
Atom
In Action – What Is the Experience?! 
• WishList Application 
– Add a User 
– Get Users 
– Add a wish 
– Get all wishes in the system 
– Get wishes for particular user 
• Filter by price range 
• Filter by merchant 
• Platform : Node.js, Express and Mongo 
Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved. 
• Test 
– Build with RAML 
– Build with SWAGGER Reese’s Birthday Soon
My Background ! 
• Degree in Computer Science & Mathematic 
• 16 years @IBM and 5 Months at @SOASoftwareInc 
• 14+ years working with SOAP/REST, SOA, API 
• Over the years I have been a developer, an architect, a 
competitive technical sales, a product manager and an 
evangelist 
• I always liked to be on the bleeding of edge technology 
• Very hands on 
• I would consider myself a “Sunday” developer. I don’t get to 
code as often as I use to. Now I mostly configure products 
and do scripting. 
• Spend most of my time working with customer. 
Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved.
Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved. 
RAML! 
Start with tutorial at RAML.org
RAML Editors! 
Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved. 
• API Designer - 
http://api-portal.anypoint.mulesoft.com/raml/api-designer 
– (allows for mocking) 
• Sublime Editor 
https://github.com/mulesoft/raml-sublime-plugin 
NOTE: Indentation matters in both 
• Can have 1 to many files 
• I have a very simple API. 
I kept mine in 1. Didn’t 
use includes, but did play 
with them 
• No Security
Document Generation! 
• RAML to HTML 
• RAML to HTML - PHP 
Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved.
Thoughts on RAML Experience! 
• Great documentation, samples and tutorial 
• Good way to model your API 
– When writing my server code, I did find I went back to my RAML model to 
remember what I was suppose to be doing. 
• It is easy to understand and write, from the basic API perspective. 
– When you get into Includes, Traits, it becomes a little more technical. 
• Good way to enforce design standards for your APIs 
• Community tools 
– Are easy to understand, install and work with. 
– I played with: 
• API Designer 
• RAML Sublime Plugin 
• RAML to HTML 
• Swagger2raml 
• Osprey / Osprey CLI 
Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved.
SWAGGER! 
Swagger Community 
• https://github.com/wordnik/swagger-spec 
Swagger Getting Started 
• https://github.com/wordnik/swagger-spec/wiki 
Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved.
Three Ways To Create Swagger Docs! 
1. Codegen: Traditional way of creating a Swagger Specification. 
The swagger codegen converts annotation in your code to 
Swagger Specification 
2. Automatically: swagger-node-express and swagger-play will 
create both your REST APIs and your Swagger Specification for 
you at the same time 
– https://www.npmjs.org/package/swagger-node-express 
3. Manually: Write the json by hand. 
Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved.
Used swagger-node-express! 
Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved. 
• Server.js – the node-express 
server 
• Model.js - describes 
the resources (User, 
Wish) 
• Routes.js – defines the 
routes for data access 
logic 
Spec 
Action
Swagger 1.2 Documentation! 
Composed of two files: 
• Resource Listing: Lists the APIs that are available and gives a brief 
description of the them. 
• API Description: Detailed description of each API in the Resource Listing. 
*NOTE: In Swagger 2.0 they reduced this to one file with ability to split parts of the 
definition out into separate files. 
Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved.
Thoughts on SWAGGER Experience! 
• Most widely used API DL to date 
• On working with swagger-node-express: 
– Once you get the hang of it, went smooth and very fun to see results. 
– Key is to get your model.js (resource definitions) and your routes.js for your 
data access specified correctly. 
– Definitely not top down. I ended up using my RAML spec to keep me on track. 
– Con - you are really embedding swagger throughout your code. Code which 
may live forever. 
• Swagger-core project provides nice examples on how to build a Swagger 
enabled server using java-jaxrs, scala-jaxrs and more. 
• Swagger-UI is very useful to help visualize and test your API 
• If you have complex APIs, swagger probably won’t have the the 
constructs you need to fully express them. 
• Writing swagger manually in JSON is not fun. It is not very human 
Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved. 
readable. 
• A new Swagger Editor project based on YAML was launched in May is very 
promising.
Where to do documentation?! 
Pros Cons 
Document in design and 
generate interface and docs 
from design 
• Allows for changing docs 
without disturbing 
production code. 
• Allows for NLS translation 
outside of production cycles 
• If backend implementation 
changes but interface still 
the same, you are okay. 
Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved. 
Documentation can get out of 
sync with what is running in 
production. 
Document in the code and 
generate docs from code 
• Documentation is more 
likely to stay in sync with 
what is in production 
• Just part of JAX-RS 
• If issues with 
documentation, need to 
edit production code to 
regenerate 
Embed documentation in 
server code and have server 
dynamically serve up docs 
• Documentation is more 
likely to stay in sync 
because it is embedded and 
running as part of the 
application 
• You are now tied to that 
particular API DL 
implementation running 
your production code 
• If there is user 
documentation errors, 
production changes are a 
must
Thoughts On the API DL Focused on Today! 
• All the API DL are starting to provide similar features and functions. 
They will continue to get closer and closer. 
• Neither specifications that we focused on today can describe 
anything other then a RESTful API/Service. 
– For SOAP based APIs WSDL is still king. An API Platform you choose 
should support SOAP based APIs via WSDL as well. 
• Neither specification provides ability for extension, for example: 
describing testing and monitoring of the operations 
– Swagger 2.0 has added the capability to provide extensions 
• Neither specification handles National Language (NLS) of 
documentation 
• System to System interactions – Today mostly focused on API 
creation and developer consumption. Next step is for system-to-system 
integrations 
Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved.
References! 
• Another API-Blueprint, RAML, Swagger Comparison – Ole 
Lensmar 
• Investigating API Developer Tooling - @DanMayer 
Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved.
Questions! 
Copyright © 2001-2014 SOA Software, Inc. All Rights Reserved.

More Related Content

What's hot

Developing Faster with Swagger
Developing Faster with SwaggerDeveloping Faster with Swagger
Developing Faster with Swagger
Tony Tam
 
Swagger APIs for Humans and Robots (Gluecon)
Swagger APIs for Humans and Robots (Gluecon)Swagger APIs for Humans and Robots (Gluecon)
Swagger APIs for Humans and Robots (Gluecon)
Tony Tam
 
Rest API with Swagger and NodeJS
Rest API with Swagger and NodeJSRest API with Swagger and NodeJS
Rest API with Swagger and NodeJS
Luigi Saetta
 
Building APIs with Node.js and Swagger
Building APIs with Node.js and SwaggerBuilding APIs with Node.js and Swagger
Building APIs with Node.js and Swagger
Jeremy Whitlock
 
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
 
Designing APIs with OpenAPI Spec
Designing APIs with OpenAPI SpecDesigning APIs with OpenAPI Spec
Designing APIs with OpenAPI Spec
Adam Paxton
 
API Developer Experience: Why it Matters, and How Documenting Your API with S...
API Developer Experience: Why it Matters, and How Documenting Your API with S...API Developer Experience: Why it Matters, and How Documenting Your API with S...
API Developer Experience: Why it Matters, and How Documenting Your API with S...
SmartBear
 
Introducing Swagger
Introducing SwaggerIntroducing Swagger
Introducing Swagger
Tony Tam
 
The liferay case: lessons learned evolving from RPC to Hypermedia REST APIs
The liferay case: lessons learned evolving from RPC to Hypermedia REST APIsThe liferay case: lessons learned evolving from RPC to Hypermedia REST APIs
The liferay case: lessons learned evolving from RPC to Hypermedia REST APIs
Jorge Ferrer
 
Implement Web API with Swagger
Implement Web API with SwaggerImplement Web API with Swagger
Implement Web API with Swagger
Jiang Wu
 
Crystal clear service interfaces w/ Swagger/OpenAPI
Crystal clear service interfaces w/ Swagger/OpenAPICrystal clear service interfaces w/ Swagger/OpenAPI
Crystal clear service interfaces w/ Swagger/OpenAPI
Scott Triglia
 
Level 3 REST Makes Your API Browsable
Level 3 REST Makes Your API BrowsableLevel 3 REST Makes Your API Browsable
Level 3 REST Makes Your API Browsable
Matt Bishop
 
Publishing strategies for API documentation
Publishing strategies for API documentationPublishing strategies for API documentation
Publishing strategies for API documentation
Tom Johnson
 
Mule raml
Mule ramlMule raml
Mule raml
Ramakrishna Kapa
 
API Design first with Swagger
API Design first with SwaggerAPI Design first with Swagger
API Design first with Swagger
Tony Tam
 
What is Swagger?
What is Swagger?What is Swagger?
What is Swagger?
Philip Senger
 
Mocking APIs Collaboratively with Postman
Mocking APIs Collaboratively with PostmanMocking APIs Collaboratively with Postman
Mocking APIs Collaboratively with Postman
Nordic APIs
 

What's hot (17)

Developing Faster with Swagger
Developing Faster with SwaggerDeveloping Faster with Swagger
Developing Faster with Swagger
 
Swagger APIs for Humans and Robots (Gluecon)
Swagger APIs for Humans and Robots (Gluecon)Swagger APIs for Humans and Robots (Gluecon)
Swagger APIs for Humans and Robots (Gluecon)
 
Rest API with Swagger and NodeJS
Rest API with Swagger and NodeJSRest API with Swagger and NodeJS
Rest API with Swagger and NodeJS
 
Building APIs with Node.js and Swagger
Building APIs with Node.js and SwaggerBuilding APIs with Node.js and Swagger
Building APIs with Node.js and Swagger
 
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?
 
Designing APIs with OpenAPI Spec
Designing APIs with OpenAPI SpecDesigning APIs with OpenAPI Spec
Designing APIs with OpenAPI Spec
 
API Developer Experience: Why it Matters, and How Documenting Your API with S...
API Developer Experience: Why it Matters, and How Documenting Your API with S...API Developer Experience: Why it Matters, and How Documenting Your API with S...
API Developer Experience: Why it Matters, and How Documenting Your API with S...
 
Introducing Swagger
Introducing SwaggerIntroducing Swagger
Introducing Swagger
 
The liferay case: lessons learned evolving from RPC to Hypermedia REST APIs
The liferay case: lessons learned evolving from RPC to Hypermedia REST APIsThe liferay case: lessons learned evolving from RPC to Hypermedia REST APIs
The liferay case: lessons learned evolving from RPC to Hypermedia REST APIs
 
Implement Web API with Swagger
Implement Web API with SwaggerImplement Web API with Swagger
Implement Web API with Swagger
 
Crystal clear service interfaces w/ Swagger/OpenAPI
Crystal clear service interfaces w/ Swagger/OpenAPICrystal clear service interfaces w/ Swagger/OpenAPI
Crystal clear service interfaces w/ Swagger/OpenAPI
 
Level 3 REST Makes Your API Browsable
Level 3 REST Makes Your API BrowsableLevel 3 REST Makes Your API Browsable
Level 3 REST Makes Your API Browsable
 
Publishing strategies for API documentation
Publishing strategies for API documentationPublishing strategies for API documentation
Publishing strategies for API documentation
 
Mule raml
Mule ramlMule raml
Mule raml
 
API Design first with Swagger
API Design first with SwaggerAPI Design first with Swagger
API Design first with Swagger
 
What is Swagger?
What is Swagger?What is Swagger?
What is Swagger?
 
Mocking APIs Collaboratively with Postman
Mocking APIs Collaboratively with PostmanMocking APIs Collaboratively with Postman
Mocking APIs Collaboratively with Postman
 

Similar to API Description Languages: Which Is The Right One For Me?

API Description Languages
API Description LanguagesAPI Description Languages
API Description Languages
Akana
 
API Description Languages: Which is the Right One for Me?
API Description Languages: Which is the Right One for Me?API Description Languages: Which is the Right One for Me?
API Description Languages: Which is the Right One for Me?
Akana
 
APIdays 2016 - The State of Web API Languages
APIdays 2016  - The State of Web API LanguagesAPIdays 2016  - The State of Web API Languages
APIdays 2016 - The State of Web API Languages
Restlet
 
Rest api design by george reese
Rest api design by george reeseRest api design by george reese
Rest api design by george reese
buildacloud
 
API workshop: Introduction to APIs (TC Camp)
API workshop: Introduction to APIs (TC Camp)API workshop: Introduction to APIs (TC Camp)
API workshop: Introduction to APIs (TC Camp)
Tom Johnson
 
Web servicesoverview
Web servicesoverviewWeb servicesoverview
Web servicesoverview
Prabhat gangwar
 
Are APIs and SOA Converging?
Are APIs and SOA Converging?Are APIs and SOA Converging?
Are APIs and SOA Converging?
Akana
 
Are APIs and SOA Converging
Are APIs and SOA ConvergingAre APIs and SOA Converging
Are APIs and SOA Converging
Sachin Agarwal
 
Toronto node js_meetup
Toronto node js_meetupToronto node js_meetup
Toronto node js_meetup
Shubhra Kar
 
Are APIs and SOA Converging?
Are APIs and SOA Converging?Are APIs and SOA Converging?
Are APIs and SOA Converging?
Akana
 
Neev Open Source Contributions
Neev Open Source ContributionsNeev Open Source Contributions
Neev Open Source Contributions
Neev Technologies
 
InfluxDB 2.0 Client Libraries by Noah Crowley
InfluxDB 2.0 Client Libraries by Noah CrowleyInfluxDB 2.0 Client Libraries by Noah Crowley
InfluxDB 2.0 Client Libraries by Noah Crowley
InfluxData
 
Apache Drill (ver. 0.2)
Apache Drill (ver. 0.2)Apache Drill (ver. 0.2)
Apache Drill (ver. 0.2)
Camuel Gilyadov
 
Prominent Back-end frameworks to consider in 2022!
Prominent Back-end frameworks to consider in 2022!Prominent Back-end frameworks to consider in 2022!
Prominent Back-end frameworks to consider in 2022!
Shelly Megan
 
GraphQL for Native Apps
GraphQL for Native AppsGraphQL for Native Apps
GraphQL for Native Apps
Emanuele Di Saverio
 
API and SOA: Two Sides of the Same Coin?
API and SOA: Two Sides of the Same Coin?API and SOA: Two Sides of the Same Coin?
API and SOA: Two Sides of the Same Coin?
Akana
 
API and SOA: Two sides of the same coin
API and SOA: Two sides of the same coinAPI and SOA: Two sides of the same coin
API and SOA: Two sides of the same coin
Sachin Agarwal
 
SGCE 2015 REST APIs
SGCE 2015 REST APIsSGCE 2015 REST APIs
SGCE 2015 REST APIs
Domingo Suarez Torres
 
APIs distribuidos con alta escalabilidad
APIs distribuidos con alta escalabilidadAPIs distribuidos con alta escalabilidad
APIs distribuidos con alta escalabilidad
Software Guru
 
Ror Seminar With agilebd.org on 23 Jan09
Ror Seminar With agilebd.org on 23 Jan09Ror Seminar With agilebd.org on 23 Jan09
Ror Seminar With agilebd.org on 23 Jan09
Shaer Hassan
 

Similar to API Description Languages: Which Is The Right One For Me? (20)

API Description Languages
API Description LanguagesAPI Description Languages
API Description Languages
 
API Description Languages: Which is the Right One for Me?
API Description Languages: Which is the Right One for Me?API Description Languages: Which is the Right One for Me?
API Description Languages: Which is the Right One for Me?
 
APIdays 2016 - The State of Web API Languages
APIdays 2016  - The State of Web API LanguagesAPIdays 2016  - The State of Web API Languages
APIdays 2016 - The State of Web API Languages
 
Rest api design by george reese
Rest api design by george reeseRest api design by george reese
Rest api design by george reese
 
API workshop: Introduction to APIs (TC Camp)
API workshop: Introduction to APIs (TC Camp)API workshop: Introduction to APIs (TC Camp)
API workshop: Introduction to APIs (TC Camp)
 
Web servicesoverview
Web servicesoverviewWeb servicesoverview
Web servicesoverview
 
Are APIs and SOA Converging?
Are APIs and SOA Converging?Are APIs and SOA Converging?
Are APIs and SOA Converging?
 
Are APIs and SOA Converging
Are APIs and SOA ConvergingAre APIs and SOA Converging
Are APIs and SOA Converging
 
Toronto node js_meetup
Toronto node js_meetupToronto node js_meetup
Toronto node js_meetup
 
Are APIs and SOA Converging?
Are APIs and SOA Converging?Are APIs and SOA Converging?
Are APIs and SOA Converging?
 
Neev Open Source Contributions
Neev Open Source ContributionsNeev Open Source Contributions
Neev Open Source Contributions
 
InfluxDB 2.0 Client Libraries by Noah Crowley
InfluxDB 2.0 Client Libraries by Noah CrowleyInfluxDB 2.0 Client Libraries by Noah Crowley
InfluxDB 2.0 Client Libraries by Noah Crowley
 
Apache Drill (ver. 0.2)
Apache Drill (ver. 0.2)Apache Drill (ver. 0.2)
Apache Drill (ver. 0.2)
 
Prominent Back-end frameworks to consider in 2022!
Prominent Back-end frameworks to consider in 2022!Prominent Back-end frameworks to consider in 2022!
Prominent Back-end frameworks to consider in 2022!
 
GraphQL for Native Apps
GraphQL for Native AppsGraphQL for Native Apps
GraphQL for Native Apps
 
API and SOA: Two Sides of the Same Coin?
API and SOA: Two Sides of the Same Coin?API and SOA: Two Sides of the Same Coin?
API and SOA: Two Sides of the Same Coin?
 
API and SOA: Two sides of the same coin
API and SOA: Two sides of the same coinAPI and SOA: Two sides of the same coin
API and SOA: Two sides of the same coin
 
SGCE 2015 REST APIs
SGCE 2015 REST APIsSGCE 2015 REST APIs
SGCE 2015 REST APIs
 
APIs distribuidos con alta escalabilidad
APIs distribuidos con alta escalabilidadAPIs distribuidos con alta escalabilidad
APIs distribuidos con alta escalabilidad
 
Ror Seminar With agilebd.org on 23 Jan09
Ror Seminar With agilebd.org on 23 Jan09Ror Seminar With agilebd.org on 23 Jan09
Ror Seminar With agilebd.org on 23 Jan09
 

More from ProgrammableWeb

Building A Business-Facing Mobile Developer Community
Building A Business-Facing Mobile Developer CommunityBuilding A Business-Facing Mobile Developer Community
Building A Business-Facing Mobile Developer Community
ProgrammableWeb
 
Profiting From "Smart City" APIs
Profiting From "Smart City" APIsProfiting From "Smart City" APIs
Profiting From "Smart City" APIs
ProgrammableWeb
 
Get Your Software Speaking SMS With Esendex
Get Your Software Speaking SMS With EsendexGet Your Software Speaking SMS With Esendex
Get Your Software Speaking SMS With Esendex
ProgrammableWeb
 
The Future of API Monetization
The Future of API MonetizationThe Future of API Monetization
The Future of API Monetization
ProgrammableWeb
 
Open Source And the Internet Of Things
Open Source And the Internet Of ThingsOpen Source And the Internet Of Things
Open Source And the Internet Of Things
ProgrammableWeb
 
Your API Deserves More Respect: Make It A Product
Your API Deserves More Respect: Make It A ProductYour API Deserves More Respect: Make It A Product
Your API Deserves More Respect: Make It A Product
ProgrammableWeb
 
Why API Security Is More Complicated Than You Think (and Why It’s Your #1 Pri...
Why API Security Is More Complicated Than You Think (and Why It’s Your #1 Pri...Why API Security Is More Complicated Than You Think (and Why It’s Your #1 Pri...
Why API Security Is More Complicated Than You Think (and Why It’s Your #1 Pri...
ProgrammableWeb
 
How And Why To Dogfood Your API
How And Why To Dogfood Your APIHow And Why To Dogfood Your API
How And Why To Dogfood Your API
ProgrammableWeb
 
Real World API Business Models That Worked
Real World API Business Models That WorkedReal World API Business Models That Worked
Real World API Business Models That Worked
ProgrammableWeb
 
Innovation Showcase: Hugo Fiennes, CEO/Co-Founder, Electric Imp
Innovation Showcase: Hugo Fiennes, CEO/Co-Founder, Electric ImpInnovation Showcase: Hugo Fiennes, CEO/Co-Founder, Electric Imp
Innovation Showcase: Hugo Fiennes, CEO/Co-Founder, Electric Imp
ProgrammableWeb
 
Innovation showcase: Markus Lanthaler, Developer, Consultant, Researcher,mark...
Innovation showcase: Markus Lanthaler, Developer, Consultant, Researcher,mark...Innovation showcase: Markus Lanthaler, Developer, Consultant, Researcher,mark...
Innovation showcase: Markus Lanthaler, Developer, Consultant, Researcher,mark...
ProgrammableWeb
 
ProgrammablaWeb's Innovation Showcase: Stefan Zanetti, Founder/CEO, QIPP
ProgrammablaWeb's Innovation Showcase: Stefan Zanetti, Founder/CEO, QIPPProgrammablaWeb's Innovation Showcase: Stefan Zanetti, Founder/CEO, QIPP
ProgrammablaWeb's Innovation Showcase: Stefan Zanetti, Founder/CEO, QIPP
ProgrammableWeb
 
Innovation Showcase: David Johnston, Decentralized Application Funds
Innovation Showcase: David Johnston, Decentralized Application FundsInnovation Showcase: David Johnston, Decentralized Application Funds
Innovation Showcase: David Johnston, Decentralized Application Funds
ProgrammableWeb
 
HTTP APIs as first class procedures in your language: cutting out SDK complex...
HTTP APIs as first class procedures in your language: cutting out SDK complex...HTTP APIs as first class procedures in your language: cutting out SDK complex...
HTTP APIs as first class procedures in your language: cutting out SDK complex...
ProgrammableWeb
 
Intro To Orchestrate DBaaS: A Single API For Key/Value, Search, Graph, And Ev...
Intro To Orchestrate DBaaS: A Single API For Key/Value, Search, Graph, And Ev...Intro To Orchestrate DBaaS: A Single API For Key/Value, Search, Graph, And Ev...
Intro To Orchestrate DBaaS: A Single API For Key/Value, Search, Graph, And Ev...
ProgrammableWeb
 
Case Study: A Real-World Implementation Of Linked Data
Case Study: A Real-World Implementation Of Linked DataCase Study: A Real-World Implementation Of Linked Data
Case Study: A Real-World Implementation Of Linked Data
ProgrammableWeb
 
Pivoting Your Business From Product To Platform
Pivoting Your Business From Product To PlatformPivoting Your Business From Product To Platform
Pivoting Your Business From Product To Platform
ProgrammableWeb
 
Exploring UK Bus And Train Data With TransportAPI
Exploring UK Bus And Train Data With TransportAPIExploring UK Bus And Train Data With TransportAPI
Exploring UK Bus And Train Data With TransportAPI
ProgrammableWeb
 
DDD (Delight-Driven Development) Of APIs With RAML
DDD (Delight-Driven Development) Of APIs With RAMLDDD (Delight-Driven Development) Of APIs With RAML
DDD (Delight-Driven Development) Of APIs With RAML
ProgrammableWeb
 
Why And How To Leverage Predictive APIs In Any Application
Why And How To Leverage Predictive APIs In Any Application Why And How To Leverage Predictive APIs In Any Application
Why And How To Leverage Predictive APIs In Any Application
ProgrammableWeb
 

More from ProgrammableWeb (20)

Building A Business-Facing Mobile Developer Community
Building A Business-Facing Mobile Developer CommunityBuilding A Business-Facing Mobile Developer Community
Building A Business-Facing Mobile Developer Community
 
Profiting From "Smart City" APIs
Profiting From "Smart City" APIsProfiting From "Smart City" APIs
Profiting From "Smart City" APIs
 
Get Your Software Speaking SMS With Esendex
Get Your Software Speaking SMS With EsendexGet Your Software Speaking SMS With Esendex
Get Your Software Speaking SMS With Esendex
 
The Future of API Monetization
The Future of API MonetizationThe Future of API Monetization
The Future of API Monetization
 
Open Source And the Internet Of Things
Open Source And the Internet Of ThingsOpen Source And the Internet Of Things
Open Source And the Internet Of Things
 
Your API Deserves More Respect: Make It A Product
Your API Deserves More Respect: Make It A ProductYour API Deserves More Respect: Make It A Product
Your API Deserves More Respect: Make It A Product
 
Why API Security Is More Complicated Than You Think (and Why It’s Your #1 Pri...
Why API Security Is More Complicated Than You Think (and Why It’s Your #1 Pri...Why API Security Is More Complicated Than You Think (and Why It’s Your #1 Pri...
Why API Security Is More Complicated Than You Think (and Why It’s Your #1 Pri...
 
How And Why To Dogfood Your API
How And Why To Dogfood Your APIHow And Why To Dogfood Your API
How And Why To Dogfood Your API
 
Real World API Business Models That Worked
Real World API Business Models That WorkedReal World API Business Models That Worked
Real World API Business Models That Worked
 
Innovation Showcase: Hugo Fiennes, CEO/Co-Founder, Electric Imp
Innovation Showcase: Hugo Fiennes, CEO/Co-Founder, Electric ImpInnovation Showcase: Hugo Fiennes, CEO/Co-Founder, Electric Imp
Innovation Showcase: Hugo Fiennes, CEO/Co-Founder, Electric Imp
 
Innovation showcase: Markus Lanthaler, Developer, Consultant, Researcher,mark...
Innovation showcase: Markus Lanthaler, Developer, Consultant, Researcher,mark...Innovation showcase: Markus Lanthaler, Developer, Consultant, Researcher,mark...
Innovation showcase: Markus Lanthaler, Developer, Consultant, Researcher,mark...
 
ProgrammablaWeb's Innovation Showcase: Stefan Zanetti, Founder/CEO, QIPP
ProgrammablaWeb's Innovation Showcase: Stefan Zanetti, Founder/CEO, QIPPProgrammablaWeb's Innovation Showcase: Stefan Zanetti, Founder/CEO, QIPP
ProgrammablaWeb's Innovation Showcase: Stefan Zanetti, Founder/CEO, QIPP
 
Innovation Showcase: David Johnston, Decentralized Application Funds
Innovation Showcase: David Johnston, Decentralized Application FundsInnovation Showcase: David Johnston, Decentralized Application Funds
Innovation Showcase: David Johnston, Decentralized Application Funds
 
HTTP APIs as first class procedures in your language: cutting out SDK complex...
HTTP APIs as first class procedures in your language: cutting out SDK complex...HTTP APIs as first class procedures in your language: cutting out SDK complex...
HTTP APIs as first class procedures in your language: cutting out SDK complex...
 
Intro To Orchestrate DBaaS: A Single API For Key/Value, Search, Graph, And Ev...
Intro To Orchestrate DBaaS: A Single API For Key/Value, Search, Graph, And Ev...Intro To Orchestrate DBaaS: A Single API For Key/Value, Search, Graph, And Ev...
Intro To Orchestrate DBaaS: A Single API For Key/Value, Search, Graph, And Ev...
 
Case Study: A Real-World Implementation Of Linked Data
Case Study: A Real-World Implementation Of Linked DataCase Study: A Real-World Implementation Of Linked Data
Case Study: A Real-World Implementation Of Linked Data
 
Pivoting Your Business From Product To Platform
Pivoting Your Business From Product To PlatformPivoting Your Business From Product To Platform
Pivoting Your Business From Product To Platform
 
Exploring UK Bus And Train Data With TransportAPI
Exploring UK Bus And Train Data With TransportAPIExploring UK Bus And Train Data With TransportAPI
Exploring UK Bus And Train Data With TransportAPI
 
DDD (Delight-Driven Development) Of APIs With RAML
DDD (Delight-Driven Development) Of APIs With RAMLDDD (Delight-Driven Development) Of APIs With RAML
DDD (Delight-Driven Development) Of APIs With RAML
 
Why And How To Leverage Predictive APIs In Any Application
Why And How To Leverage Predictive APIs In Any Application Why And How To Leverage Predictive APIs In Any Application
Why And How To Leverage Predictive APIs In Any Application
 

Recently uploaded

RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
Data structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdfData structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdf
TIPNGVN2
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Vladimir Iglovikov, Ph.D.
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 

Recently uploaded (20)

RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
Data structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdfData structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdf
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 

API Description Languages: Which Is The Right One For Me?

  • 1. API Description Languages:! Which is the right one for me?! Laura Heritage! Director of API Strategy! Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved.
  • 2. What is an API Description Language (API DL)?! Blueprint Contract Metadata Human Docs Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved.
  • 3. What About WSDL2.0 or WADL?! • For REST, they are not widely adopted • Both are not very “humanly readable” • Both are typically auto-generate from code – wouldn’t use them as a “blueprint” amongst non-technical types • WADL doesn’t contain enough information to adequately describe a RESTful API. Though does have extension points which are seldom used. • WSDL contains almost everything you need but is quite brittle. If it changes the clients must change too Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved.
  • 4. API DL Brings REST to the Enterprise! Governable Shareable Readable “Lack of a way to describe a RESTful services was one of the largest barriers to REST adoption in the enterprise.” Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved.
  • 5. Many API DL Are Available Today! Hypermedia Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved.
  • 6. Most Active API DL Communities! API-Blueprint RAML* SWAGGER 1.2* Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved. (2.0 release Sept. 8, 2014) Format Markdown YAML JSON (YAML provided by 3rd party with 2.0) Available at GitHub GitHub GitHub Sponsored by Apiary Mulesoft Reverb Current Version 1A3 0.8 1.2 Workgroup No Yes Yes Initial commit April, 2013 Sep, 2013 July, 2011 API Design Approach Top-down Top-down **Bottom-up * Most Widely Adopted by Enterprises
  • 7. How Do You Choose?! Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved.
  • 8. Define Key Purpose Behind Using an API DL! Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved. SWAGGER RAML I need the ability to design the API with technically limited API stakeholders - (new top down tooling being developed) X I want a way to describe and design an API with my technical team X X (has more advanced meta data constructs (includes, inheritance, traits)) I need to validate the requests and responses at runtime X (swagger-node-express, swagger - Play) X (Osprey) I need to easily consume the API specification between two or more systems X X I need documentation for audit and compliance X X I need exceptional external API developer experiences X X I need to generate server code X (node.js, Java) X (node.js, Java) I need to generate client code X X* I need to unit Test against the spec X X
  • 9. Understand How Your Team Works! SWAGGER RAML Do you design before you code? Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved. - X Do you generate documents after you code from your code? X X (JAXRS-to-RAML ) Do you want docs embedded in your server code? X -
  • 10. Look At Their Community! • Swagger by far has the largest community, since its been around since 2011 • RAML has gained traction in the enterprise due to the richness of its modeling capability; API version metatdata, nested resources, composition and inheritance, file inclusions and top down approach Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved. Generators SWAGGER RAML Documentation From Code Clojure, ColdFusion/CFML, Eiffel, Go, Java, .Net, Node.js, PHP, Python, Ruby, Scala JAX-RS Spec Parsers Java, js PHP, Ruby, Phython, Java, Javascript API Interfaces Java, Node.js Java, Node.js Client Code Several Developing Editor Tooling *new in the works based on YAML, demo’d in May API Designer, Sublime plugin, Atom
  • 11. In Action – What Is the Experience?! • WishList Application – Add a User – Get Users – Add a wish – Get all wishes in the system – Get wishes for particular user • Filter by price range • Filter by merchant • Platform : Node.js, Express and Mongo Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved. • Test – Build with RAML – Build with SWAGGER Reese’s Birthday Soon
  • 12. My Background ! • Degree in Computer Science & Mathematic • 16 years @IBM and 5 Months at @SOASoftwareInc • 14+ years working with SOAP/REST, SOA, API • Over the years I have been a developer, an architect, a competitive technical sales, a product manager and an evangelist • I always liked to be on the bleeding of edge technology • Very hands on • I would consider myself a “Sunday” developer. I don’t get to code as often as I use to. Now I mostly configure products and do scripting. • Spend most of my time working with customer. Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved.
  • 13. Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved. RAML! Start with tutorial at RAML.org
  • 14. RAML Editors! Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved. • API Designer - http://api-portal.anypoint.mulesoft.com/raml/api-designer – (allows for mocking) • Sublime Editor https://github.com/mulesoft/raml-sublime-plugin NOTE: Indentation matters in both • Can have 1 to many files • I have a very simple API. I kept mine in 1. Didn’t use includes, but did play with them • No Security
  • 15. Document Generation! • RAML to HTML • RAML to HTML - PHP Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved.
  • 16. Thoughts on RAML Experience! • Great documentation, samples and tutorial • Good way to model your API – When writing my server code, I did find I went back to my RAML model to remember what I was suppose to be doing. • It is easy to understand and write, from the basic API perspective. – When you get into Includes, Traits, it becomes a little more technical. • Good way to enforce design standards for your APIs • Community tools – Are easy to understand, install and work with. – I played with: • API Designer • RAML Sublime Plugin • RAML to HTML • Swagger2raml • Osprey / Osprey CLI Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved.
  • 17. SWAGGER! Swagger Community • https://github.com/wordnik/swagger-spec Swagger Getting Started • https://github.com/wordnik/swagger-spec/wiki Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved.
  • 18. Three Ways To Create Swagger Docs! 1. Codegen: Traditional way of creating a Swagger Specification. The swagger codegen converts annotation in your code to Swagger Specification 2. Automatically: swagger-node-express and swagger-play will create both your REST APIs and your Swagger Specification for you at the same time – https://www.npmjs.org/package/swagger-node-express 3. Manually: Write the json by hand. Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved.
  • 19. Used swagger-node-express! Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved. • Server.js – the node-express server • Model.js - describes the resources (User, Wish) • Routes.js – defines the routes for data access logic Spec Action
  • 20. Swagger 1.2 Documentation! Composed of two files: • Resource Listing: Lists the APIs that are available and gives a brief description of the them. • API Description: Detailed description of each API in the Resource Listing. *NOTE: In Swagger 2.0 they reduced this to one file with ability to split parts of the definition out into separate files. Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved.
  • 21. Thoughts on SWAGGER Experience! • Most widely used API DL to date • On working with swagger-node-express: – Once you get the hang of it, went smooth and very fun to see results. – Key is to get your model.js (resource definitions) and your routes.js for your data access specified correctly. – Definitely not top down. I ended up using my RAML spec to keep me on track. – Con - you are really embedding swagger throughout your code. Code which may live forever. • Swagger-core project provides nice examples on how to build a Swagger enabled server using java-jaxrs, scala-jaxrs and more. • Swagger-UI is very useful to help visualize and test your API • If you have complex APIs, swagger probably won’t have the the constructs you need to fully express them. • Writing swagger manually in JSON is not fun. It is not very human Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved. readable. • A new Swagger Editor project based on YAML was launched in May is very promising.
  • 22. Where to do documentation?! Pros Cons Document in design and generate interface and docs from design • Allows for changing docs without disturbing production code. • Allows for NLS translation outside of production cycles • If backend implementation changes but interface still the same, you are okay. Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved. Documentation can get out of sync with what is running in production. Document in the code and generate docs from code • Documentation is more likely to stay in sync with what is in production • Just part of JAX-RS • If issues with documentation, need to edit production code to regenerate Embed documentation in server code and have server dynamically serve up docs • Documentation is more likely to stay in sync because it is embedded and running as part of the application • You are now tied to that particular API DL implementation running your production code • If there is user documentation errors, production changes are a must
  • 23. Thoughts On the API DL Focused on Today! • All the API DL are starting to provide similar features and functions. They will continue to get closer and closer. • Neither specifications that we focused on today can describe anything other then a RESTful API/Service. – For SOAP based APIs WSDL is still king. An API Platform you choose should support SOAP based APIs via WSDL as well. • Neither specification provides ability for extension, for example: describing testing and monitoring of the operations – Swagger 2.0 has added the capability to provide extensions • Neither specification handles National Language (NLS) of documentation • System to System interactions – Today mostly focused on API creation and developer consumption. Next step is for system-to-system integrations Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved.
  • 24. References! • Another API-Blueprint, RAML, Swagger Comparison – Ole Lensmar • Investigating API Developer Tooling - @DanMayer Copyright © 2001-2013 SOA Software, Inc. All Rights Reserved.
  • 25. Questions! Copyright © 2001-2014 SOA Software, Inc. All Rights Reserved.