api athens meetup - api standards 22.03.2016
TRANSCRIPT
APIs.guru
APIs.guru
Wikipedia for APIWikipedia for Web APIs
Developer-driven adoption
iPaaS
Consumer products
Give me more API!
Hold a minute … or month
API growth
2 days 1 days 3 days 3 days
Standard approach
Human-readable docsMethod
characteristics
Arguments
Response description
MethodMethod description
required?
Argument type
Response type
Response description
Response description
Machine-readable docs
API versionSupported protocols
Method
Method description
Link to response description
required?
Argument type
API characteristics
Method characteristics
Response
Arguments
Would it be nice?
All APIs descriptions in one place
Documented in one format
Anyone can add/improve API description
What APIs.guru do?
Filter out private and non-reliable APIs.
Convert different formats into Swagger 2.0
Fix mistakes, ~80% of spec have them
Add additional data, like: logo, categories, …
Update specs on daily basis
Contribution process
ReviewValidation script
API ownerPull requests
Contributors
API
Any-API.com
SDKs.io
CenitSaaS.com
commandcar
DataFire.io
Why not Hypermedia?
Cool technology, but doesn’t help iPaaS:
Can access metadata only after first call
Metadata only for particular entities
Require API owner to change implementation
Far Far Future: Synergy
Data incompatibility
{ “First name”: “John”, “Surname”: “Smith”}
{ “Name”: “John”, “Surname”: “Smith”}
{ “Full name”: “John Smith”}
Schema incompatibility{ “properties”: { “First name”: { “type”: “string” }, “Surname”: { “type”: “string” } }}
{ “properties”: { “Name”: { “type”: “string” }, “Surname”: { “type”: “string” } }}{
“properties”: { “Full name”: { “type”: “string” } }}
Stage 1: Scalar types
{ “properties”: { “First name”: { “type”: “string” } “Surname”: { “type”: “string” } }}
{ “properties”: { “First name”: { “$ref”: “http://apis.guru/types/name#” } “Surname”: { “$ref”: “http://apis.guru/types/surname#” } }}
Stage 2: Complex types
{ “properties”: { “First name”: { “$ref”: “http://apis.guru/types/name#” }, “Surname”: { “$ref”: “http://apis.guru/types/surname#” } }}
{ “$ref”: “http://apis.guru/types/fullname/15#”}
Stage 3: type converters
function (data) { return { “Full name”: data[“First name”] + data[“Surname”] };}
{ “First name”: “John” “Surname”: “Smith”}
{ “Full name”: “John Smith”}
APIs.guruJoin the movement
APIs.guru
[email protected] ivangon4arovhttps://github.com/APIs-guru/api-models
@APIs_guru