API Athens Meetup - API standards 22.03.2016

Post on 15-Feb-2017

390 views 1 download

Transcript of API Athens Meetup - API standards 22.03.2016

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

ivan.goncharov.ua@gmail.com ivangon4arovhttps://github.com/APIs-guru/api-models

@APIs_guru