the things you can learn about apis from trying to …...(social, geo, fintech, etc.) •...
TRANSCRIPT
The things you can learn about APIs from trying to classify them!
ProgrammingInterface
User Application
What Problem Do We Solve?
What is an API?
SDKs• API Provider’s Home Page• API Developer Portal
• Docs Home Page• Forum Home• ToS URL
• API Endpoint • Category (Social, Geo, Fintech, etc.)• Description• Support email• Protocols/Styles• Data Format• Authentication Model• Business Model• Etc.
API Resources
Libraries
MashupsBlogs
Frame-Works
Other
Code & How-To
• Category (Social, Geo, Fintech, etc.)
The old days.
SDKs• API Provider’s Home Page• API Developer Portal
• Docs Home Page• Forum Home• ToS URL
• API Endpoint • Category (Social, Geo, Fintech, etc.)• Description• Support email• Protocols/Styles• Data Format• Authentication Model• Business Model• Etc.
API Resources
Libraries
MashupsBlogs
Frame-Works
Other
Code & How-To
• Category (Social, Geo, Fintech, etc.)
• API Provider’s Home Page• API Developer Portal
• Docs Home Page• Forum Home• ToS URL
• API Endpoint • Category (Social, Geo, Fintech, etc.)• Description• Support email• Protocols/Styles• Data Format• Authentication Model• Business Model• Etc.
API ? • API Provider/Company
• API Provider’s Home Page• API Developer Portal
• Docs Home Page• Forum Home• ToS URL
• API Endpoint • Category (Social, Geo, Fintech, etc.)• Description• Support email• Protocols/Styles• Data Format• Authentication Model• Business Model• Etc.
API ? • API Provider/Company• Interactive Console Home
• API Provider’s Home Page• API Developer Portal
• Docs Home Page• Forum Home• ToS URL
• API Endpoint • Category (Social, Geo, Fintech, etc.)• Description• Support email• Protocols/Styles• Data Format• Authentication Model• Business Model• Etc.
API ? • API Provider/Company• Interactive Console Home• Description File URL
• API Provider’s Home Page• API Developer Portal
• Docs Home Page• Forum Home• ToS URL
• API Endpoint • Category (Social, Geo, Fintech, etc.)• Description• Support email• Protocols/Styles• Data Format• Authentication Model• Business Model• Etc.
API ? • API Provider/Company• Interactive Console Home• Description File URL• API Endpoint (unique)
• API Provider’s Home Page• API Developer Portal
• Docs Home Page• Forum Home• ToS URL
• API Endpoint • Category (Social, Geo, Fintech, etc.)• Description• Support email• Protocols/Styles• Data Format• Authentication Model• Business Model• Etc.
API ? • API Provider/Company• Interactive Console Home• Description File URL• API Endpoint (unique)• Primary Category
• API Provider’s Home Page• API Developer Portal
• Docs Home Page• Forum Home• ToS URL
• API Endpoint • Category (Social, Geo, Fintech, etc.)• Description• Support email• Protocols/Styles• Data Format• Authentication Model• Business Model• Etc.
API ? • API Provider/Company• Interactive Console Home• Description File URL• API Endpoint (unique)• Primary Category • Secondary Categories
• API Provider’s Home Page• API Developer Portal
• Docs Home Page• Forum Home• ToS URL
• API Endpoint • Category (Social, Geo, Fintech, etc.)• Description• Support email• Protocols/Styles• Data Format• Authentication Model• Business Model• Etc.
API ? • API Provider/Company• Interactive Console Home• Description File URL• API Endpoint (unique)• Primary Category • Secondary Categories• Twitter ID
• API Provider’s Home Page• API Developer Portal
• Docs Home Page• Forum Home• ToS URL
• API Endpoint • Category (Social, Geo, Fintech, etc.)• Description• Support email• Protocols/Styles• Data Format• Authentication Model• Business Model• Etc.
API ? • API Provider/Company• Interactive Console Home• Description File URL• API Endpoint (unique)• Primary Category • Secondary Categories• Twitter ID• Complies With?
• API Provider’s Home Page• API Developer Portal
• Docs Home Page• Forum Home• ToS URL
• API Endpoint • Category (Social, Geo, Fintech, etc.)• Description• Support email• Protocols/Styles• Data Format• Authentication Model• Business Model• Etc.
API ? • API Provider/Company• Interactive Console Home• Description File URL• API Endpoint (unique)• Primary Category • Secondary Categories• Twitter ID• Complies With? • Non-Proprietary?
• API Provider’s Home Page• API Developer Portal
• Docs Home Page• Forum Home• ToS URL
• API Endpoint • Category (Social, Geo, Fintech, etc.)• Description• Support email• Protocols/Styles• Data Format• Authentication Model• Business Model• Etc.
API ? • API Provider/Company• Interactive Console Home• Description File URL• API Endpoint (unique)• Primary Category • Secondary Categories• Twitter ID• Complies With? • Non-Proprietary?• License Type if Non Proprietary?
• API Provider’s Home Page• API Developer Portal
• Docs Home Page• Forum Home• ToS URL
• API Endpoint • Category (Social, Geo, Fintech, etc.)• Description• Support email• Protocols/Styles• Data Format• Authentication Model• Business Model• Etc.
API ? • API Provider/Company• Interactive Console Home• Description File URL• API Endpoint (unique)• Primary Category • Secondary Categories• Twitter ID• Complies With? • Non-Proprietary?• License Type if Non Proprietary?• Hypermedia? (y/n)
• API Provider’s Home Page• API Developer Portal
• Docs Home Page• Forum Home• ToS URL
• API Endpoint • Category (Social, Geo, Fintech, etc.)• Description• Support email• Protocols/Styles• Data Format• Authentication Model• Business Model• Etc.
API ? • API Provider/Company• Interactive Console Home• Description File URL• API Endpoint (unique)• Primary Category • Secondary Categories• Twitter ID• Complies With? • Non-Proprietary?• License Type if Non Proprietary?• Hypermedia? (y/n)• Restricted Access? (y/n)
• API Provider’s Home Page• API Developer Portal
• Docs Home Page• Forum Home• ToS URL
• API Endpoint • Category (Social, Geo, Fintech, etc.)• Description• Support email• Protocols/Styles• Data Format• Authentication Model• Business Model• Etc.
API ? • API Provider/Company• Interactive Console Home• Description File URL• API Endpoint (unique)• Primary Category • Secondary Categories• Twitter ID• Complies With? • Non-Proprietary?• License Type if Non Proprietary?• Hypermedia? (y/n)• Restricted Access? (y/n)• Unofficial? (y/n)
• API Provider’s Home Page• API Developer Portal
• Docs Home Page• Forum Home• ToS URL
• API Endpoint • Category (Social, Geo, Fintech, etc.)• Description• Support email• Protocols/Styles• Data Format• Authentication Model• Business Model• Etc.
API• API Provider/Company• Interactive Console Home• Description File URL• API Endpoint (unique)• Primary Category • Secondary Categories• Twitter ID• Complies With? • Non-Proprietary?• License Type if Non Proprietary?• Hypermedia? (y/n)• Restricted Access? (y/n)• Unofficial? (y/n)• Changelog (triggers emails)
• API Provider’s Home Page• API Developer Portal
• Docs Home Page• Forum Home• ToS URL
• API Endpoint • Category (Social, Geo, Fintech, etc.)• Description• Support email• Protocols/Styles• Data Format• Authentication Model• Business Model• Etc.
API• API Provider/Company• Interactive Console Home• Description File URL• API Endpoint (unique)• Primary Category • Secondary Categories• Twitter ID• Complies With? • Non-Proprietary?• License Type if Non Proprietary?• Hypermedia? (y/n)• Restricted Access? (y/n)• Unofficial? (y/n)• Changelog (triggers emails)
Arch Style
• REST• Push/Streaming• RPC• Native/Browser• Indirect (eg: SDK only)
• API Provider’s Home Page• API Developer Portal
• Docs Home Page• Forum Home• ToS URL
• API Endpoint • Category (Social, Geo, Fintech, etc.)• Description• Support email• Protocols/Styles• Data Format• Authentication Model• Business Model• Etc.
API• API Provider/Company• Interactive Console Home• Description File URL• API Endpoint (unique)• Primary Category • Secondary Categories• Twitter ID• Complies With? • Non-Proprietary?• License Type if Non Proprietary?• Hypermedia? (y/n)• Restricted Access? (y/n)• Unofficial? (y/n)• Changelog (triggers emails)
Arch Style
• REST• Push/Streaming• RPC• Native/Browser• Indirect (eg: SDK only)
Type
• Web/Internet• Browser• Product• Standard Spec• System/Embedded
• API Provider’s Home Page• API Developer Portal
• Docs Home Page• Forum Home• ToS URL
• API Endpoint • Category (Social, Geo, Fintech, etc.)• Description• Support email• Protocols/Styles• Data Format• Authentication Model• Business Model• Etc.
API• API Provider/Company• Interactive Console Home• Description File URL• API Endpoint (unique)• Primary Category • Secondary Categories• Twitter ID• Complies With? • Non-Proprietary?• License Type if Non Proprietary?• Hypermedia? (y/n)• Restricted Access? (y/n)• Unofficial? (y/n)• Changelog (triggers emails)
Arch Style
• REST• Push/Streaming• RPC• Native/Browser• Indirect (eg: SDK only)
Type
• Web/Internet• Browser• Product• Standard Spec• System/Embedded
Scope• Single Purpose• Meta/Aggregate• Microservice
• API Provider’s Home Page• API Developer Portal
• Docs Home Page• Forum Home• ToS URL
• API Endpoint • Category (Social, Geo, Fintech, etc.)• Description• Support email• Protocols/Styles• Data Format• Authentication Model• Business Model• Etc.
API• API Provider/Company• Interactive Console Home• Description File URL• API Endpoint (unique)• Primary Category • Secondary Categories• Twitter ID• Complies With? • Non-Proprietary?• License Type if Non Proprietary?• Hypermedia? (y/n)• Restricted Access? (y/n)• Unofficial? (y/n)• Changelog (triggers emails)
Arch Style
• REST• Push/Streaming• RPC• Native/Browser• Indirect (eg: SDK only)
Type
• Web/Internet• Browser• Product• Standard Spec• System/Embedded
Scope• Single Purpose• Meta/Aggregate• Microservice
Request• SOAP• URI Query/CRUD• XML• Etc.
• API Provider’s Home Page• API Developer Portal
• Docs Home Page• Forum Home• ToS URL
• API Endpoint • Category (Social, Geo, Fintech, etc.)• Description• Support email• Protocols/Styles• Data Format• Authentication Model• Business Model• Etc.
API• API Provider/Company• Interactive Console Home• Description File URL• API Endpoint (unique)• Primary Category • Secondary Categories• Twitter ID• Complies With? • Non-Proprietary?• License Type if Non Proprietary?• Hypermedia? (y/n)• Restricted Access? (y/n)• Unofficial? (y/n)• Changelog (triggers emails)
Arch Style
• REST• Push/Streaming• RPC• Native/Browser• Indirect (eg: SDK only)
Type
• Web/Internet• Browser• Product• Standard Spec• System/Embedded
Scope• Single Purpose• Meta/Aggregate• Microservice
Request• SOAP• URI Query/CRUD• XML• Etc.
Reply• JSON• CSV• XML• Etc.
Before / After Example
APIAPI
APIAPI
APIAPI
Version 3.1
Arch Style
• REST• Push/Streaming• RPC• Native/Browser• Indirect (eg: SDK only)
Type
• Web/Internet• Browser• Product• Standard Spec• System/Embedded
Scope• Single Purpose• Meta/Aggregate• Microservice
Request• SOAP• URI Query/CRUD• XML• Etc.
Reply• JSON• CSV• XML• Etc.
API
1.0
1.1
2.0
3.0
3.1
Beta
Deactivated
Not supported, scheduled for deactivation
Supported, scheduled for Deprecation
Supported
Supported, recommended
Not supported, could change
Arch Style
• REST• Push/Streaming• RPC• Native/Browser• Indirect (eg: SDK only)
Type
• Web/Internet• Browser• Product• Standard Spec• System/Embedded
Scope• Single Purpose• Meta/Aggregate• Microservice
Request• SOAP• URI Query/CRUD• XML• Etc.
Reply• JSON• CSV• XML• Etc.
API
1.0
1.1
2.0
3.0
3.1
Beta
Deactivated
Not supported, scheduled for deactivation
Supported, scheduled for Deprecation
Supported
Supported, recommended
Not supported, could change
iOS SDK v. X.Y
Droid SDK v. X.Y
JS SDK v. X.Y
Node SDK v. X.Y
iOS SDK v. X.Y
Droid SDK v. X.Y
JS SDK v. X.Y
Node SDK v. X.Y
iOS SDK v. X.Y
Droid SDK v. X.Y
JS SDK v. X.Y
Node SDK v. X.Y
API
1.0
1.1
2.0
3.0
3.1
Beta
Deactivated
Not supported, scheduled for deactivation
Supported, scheduled for Deprecation
Supported
Supported, recommended
Not supported, could change
iOS SDK v. X.Y
Droid SDK v. X.Y
JS SDK v. X.Y
Node SDK v. X.Y
iOS SDK v. X.Y
Droid SDK v. X.Y
JS SDK v. X.Y
Node SDK v. X.Y
iOS SDK v. X.Y
Droid SDK v. X.Y
JS SDK v. X.Y
Node SDK v. X.Y
iOS SDK v. X.Y
Droid SDK v. X.Y
JS SDK v. X.Y
Node SDK v. X.Y
iOS SDK v. X.Y
Droid SDK v. X.Y
JS SDK v. X.Y
Node SDK v. X.Y
iOS SDK v. X.Y
Droid SDK v. X.Y
JS SDK v. X.Y
Node SDK v. X.Y
Official
Official
Official
SDKs• API Provider’s Home Page• API Developer Portal
• Docs Home Page• Forum Home• ToS URL
• API Endpoint • Category (Social, Geo, Fintech, etc.)• Description• Support email• Protocols/Styles• Data Format• Authentication Model• Business Model• Etc.
API Resources
Libraries
MashupsBlogs
Frame-Works
Other
Code & How-To
• Category (Social, Geo, Fintech, etc.)
Other
FrameWorks
Libraries
SDKs
Resources
SDKs vs. Libraries?
SDKs vs. Libraries?
• SDKs = consumption
SDKs vs. Libraries?
• SDKs = consumption• Libraries = provisioning and other non-consumption functions
SDKs vs. Libraries?
• SDKs = consumption• Libraries = provisioning and other non-consumption functions
*Both are language specific
SDKs vs. Libraries?
• SDKs = consumption• Libraries = provisioning and other non-consumption functions
*Both are language specific** Javascript APIs are treated as SDKs (it’s about search)
SDKs• API Provider’s Home Page• API Developer Portal
• Docs Home Page• Forum Home• ToS URL
• API Endpoint • Category (Social, Geo, Fintech, etc.)• Description• Support email• Protocols/Styles• Data Format• Authentication Model• Business Model• Etc.
API Resources
Libraries
MashupsBlogs
Frame-Works
Other
Code & How-To
• Category (Social, Geo, Fintech, etc.)
Source Samples
Source Samples
Source Samples
Source Samples
Source Samples
Source Samples
Source SamplesLibraries
Source Samples
Source Samples
Source SamplesSDKs
Source Samples
Source Samples
Source Samples
Frame-Works
Like APIs, New First Class Citizens
Source Samples
Source Samples
Source Samples
Mashup& Apps
Source Samples
Source Samples
Source SamplesAPIs
Source Samples
Source Samples
Source Samples
Source Samples
Source Samples
Source Samples
Source SamplesLibraries
Source Samples
Source Samples
Source SamplesSDKs
Source Samples
Source Samples
Source Samples
Frame-Works
Like APIs, New First Class Citizens
Source Samples
Source Samples
Source Samples
Mashup& Apps
Source Samples
Source Samples
Source SamplesAPIs
Language
Company
Source Samples
Source Samples
Source Samples
Source Samples
Source Samples
Source Samples
Source SamplesLibraries
Source Samples
Source Samples
Source SamplesSDKs
Source Samples
Source Samples
Source Samples
Frame-Works
Like APIs, New First Class Citizens
Source Samples
Source Samples
Source Samples
Mashup& Apps
Source Samples
Source Samples
Source SamplesAPIs
Language
Company
Source Samples
Source Samples
Source Samples
Source Samples
Source Samples
Source Samples
Source SamplesLibraries
Source Samples
Source Samples
Source SamplesSDKs
Source Samples
Source Samples
Source Samples
Frame-Works
Like APIs, New First Class Citizens
Source Samples
Source Samples
Source Samples
Mashup& Apps
Source Samples
Source Samples
Source SamplesAPIs
Language
Company
* What about How To’s?
SponsoredContent
ContributedContent
Press Releases
Analysis
News
Articles
How-To
SponsoredContent
ContributedContent
Press Releases
Analysis
News
Articles
The API Endpoint is a Unique Identifier
Acme API
• Acme REST API v1.1• Acme RPC API v1.1• Acme REST API v2.0• Acme RPC API v2.0• Acme REST API v2.1• Acme GraphQL API Beta
VS.
Master API
Version 1.0Version 1.2
Version 2.0Beta
Arch Style
• REST• Push/Streaming• RPC• Native/Browser• Indirect (eg: SDK only)
Type
• Web/Internet• Browser• Product• Standard Spec• System/Embedded
Scope• Single Purpose• Meta/Aggregate• Microservice
Request• SOAP• URI Query/CRUD• XML• Etc.
Reply• JSON• CSV• XML• Etc.
iOS SDK v. X.Y
Droid SDK v. X.Y
JS SDK v. X.Y
Node SDK v. X.Y
iOS SDK v. X.Y
Droid SDK v. X.Y
Python SDK v. X.Y
PHP SDK v. X.Y
Source Samples
Source Samples
Source Samples
Source Samples
Source Samples
Source Samples
Source SamplesArticles
Source Samples
Source Samples
Source SamplesLibraries
Source Samples
Source Samples
Source Samples
Frame-Works
Source Samples
Source Samples
Source SamplesApps
MetadataMetadata
MetadataMetadata
By Arch. Style
Master API
Version 1.0Version 1.2
Version 2.0Beta
Arch Style
• REST• Push/Streaming• RPC• Native/Browser• Indirect (eg: SDK only)
Type
• Web/Internet• Browser• Product• Standard Spec• System/Embedded
Scope• Single Purpose• Meta/Aggregate• Microservice
Request• SOAP• URI Query/CRUD• XML• Etc.
Reply• JSON• CSV• XML• Etc.
iOS SDK v. X.Y
Droid SDK v. X.Y
JS SDK v. X.Y
Node SDK v. X.Y
iOS SDK v. X.Y
Droid SDK v. X.Y
Python SDK v. X.Y
PHP SDK v. X.Y
Source Samples
Source Samples
Source Samples
Source Samples
Source Samples
Source Samples
Source SamplesArticles
Source Samples
Source Samples
Source SamplesLibraries
Source Samples
Source Samples
Source Samples
Frame-Works
Source Samples
Source Samples
Source SamplesApps
MetadataMetadata
MetadataMetadata
By Arch. Style
Better foundation for:• Site usability• Power Search
But then, uh oh.
RPC vs. Streaming
RPC vs. Streaming
(not mutually exclusive)
RPC vs. Streaming
(not mutually exclusive)
Whoops!
Some Real-Time Streaming Technologies
• Server-Sent Events (SSE)• XMPP• Webhooks• Websockets• PubSubHubbub• GraphQL• gRPC• MQTT
• Unidirectional• Unidirectional• Unidirectional• Bidirectional• Unidirectional• Unidirectional• Bidirectional (HTTP/2)• Unidirectional
#1 Question
Where’s the API for APIs?
Some Key Takeaways and Observations• REST wasn’t the first architectural style, it already isn’t the last
• RPC, Network DDE, EDI, Corba, XML-RPC, SOAP, REST, gRPC, GraphQL…• Future proof yourself as best you can
• Publish your description files (Swagger, RAML, Blueprint, etc.)• Encourage open licensing
• Be opinionated about SDKs, Libraries, etc.• Encourage community contribution and involvement
• Think long and hard about versioning and how resources (docs, SDKs, etc.) will remain accessible on an ongoing basis
• Consider synching SDK version numbers with API version numbers• App Dev now involves all kinds of APIs (not just networkable ones)• The API economy will include meta and microservice (workflow) APIs• APIs related to the IoT will eventually dwarf all other APIs by orders of magnitude• API Security is the soft white underbelly of everything.
• Teach developers how to build secure apps• Have Developer Empathy
Thank you EC!