SlideShare a Scribd company logo
Building Tomorrow’s Web Services API
Pat Cappelaere




                                       REST Fest 2012
                                        The Day After...
                                         Sept 16, 2012
Web Service API Evolution

• 1990 HTTP REST Richardson Maturity Level 0/1


• 2000 Service Oriented Architecture (SOAP, WS-*)


• 2010 REST Oriented Architecture


  • Level Richardson Maturity Level 2/3 -> Caching and HyperMedia



I Think That We Are Still Heading In Wrong Direction

• Next: 2015-2020??? Richardson Maturity Level 4?
Why?

•Users Do Not Care About Your Resource Model
                                          Stop CRUD
•Users May Not Care About Your Link Relations Between
 Resources
                             This is Your Own Plumbing
                         It May Still Be Necessary But...

•Tomorrow’s Users Of Your API Will Not Be Humans



           SO LONG REST AND HYPERMEDIA...??
Tomorrow’s User

 •Welcome SIRI     Your APP there




Your User Here
What’s Different With a User-Agent?

• Has Low Bandwidth - Think 3G-4G - 1MB is a big/costly chunk


• Acts on Behalf of User


• Performs One or More Activities to Achieve a User Goal


• Needs to be Able to Find Relevant Activities That Could Be Performed By
  Nearby Server(s)
How Does A User-Agent Work?

• Goal (/Preferences) Directed


• Sensing


• Reactive / Effective


• Can Be Programmed To Act “Intelligently”


   • See Constrained Behavior Trees (Game AI) With Blackboard ... Executing A
     Specific Activity For Current Context and User Goal



       Goal: Enabling User Agents By Publishing The
         Possible Activities They Could Perform
http://activitystrea.ms/specs/json/1.0/
What’s An Activity (Stream)?

• Get/Post/Update/Delete A Document

• or better... Execute/Halt/Resume/Delete a Local Process or Workflow

• Examples:

  • Facebook Social Activity Stream aka News Feed

  • OGC

     • Process Image (WPS)

     • Task Satellite (SPS)

     • Get Observation (SOS), a Map (WMS), a Coverage (WCS), a Feature
       (WFS)...

              http://www.socialcast.com/activity-streams
Activity Properties

• [User]

• Verb
            https://raw.github.com/activitystreams/activity-streams-verb-definition/master/activity-streams-verb-definition.txt


• Object

• Target

• May be a Few More for Advanced/Complex Activities...

   • Location, Duration, Cost, Priority, Date, TimeSpan...




                                           {user} {verb} {object} [{target}]
From Activities To Activity Streams

• Once Actors Perform Many Activities, Activity Streams Can Be Generated


  • See: http://activitystrea.ms/specs/json/1.0/


• Our Problem is to Provide an Activity Template for Actors to Perform
  Activities (on Behalf of Users)


• And Make them Discoverable (Activity Discovery Document???)


• And Searchable by User Agents To Meet Current Needs (or Goals)
Activity Discovery Document?




    User Agents Could Access It and Mine it
    For Activity Opportunities... Then Follow
     Links For Particular Activity Template
So...
• Support Auto-Discovery Of Relevant User-Agent Info
  • Link to Activity Description Document in End Point Page Header
        <link rel=‘activities’ href=‘http://www.example.com/activities’/>


  • Link to Activity Search Document in End Point Page Header
         <link rel="search"
               href="http://example.com/opensearchdescription.xml"
               type="application/opensearchdescription+xml"
               title="Activity Search" />


• Support Activity Search (Described in Url Template of OpenSearch
  Document) By Generic Search Terms or Specific Object/Verb Search

        template="http://example.com/?q={searchTerms}&amp;
        objects={objectTerms}&amp;verbs={verbs?}"/>
Activity Template??
{
	   "activities": {
                                         Could Easily Be Added To API Discovery Document...
	   	     "process data": {                                 https://developers.google.com/discovery/
	   	     	     "verb": 	   "process",
	   	     	     "object":	 {
	   	     	     	     "objectType": "http://example.com/terms#data",
	   	     	     	     "displayName": "data"
	   	     	     },
	   	     	     "target": {
	   	     	     	     "objectType": "http://example.com/terms# floodmap",
	   	     	     	     "displayName": "floodmap"
	   	     	     },
	   	     	     "method": {
	   	     	     	     "httpMethod": 	 "POST",
	   	     	     	     "path": 	   	      "/activities/1",
	   	     	     	     "mediaType": 	 "application/json",
	   	     	     	     "description": 	 "",
	   	     	     	     "parameters": {...},
	   	     	     	     "response": {...},
	   	     	     	     "scopes": {...}
	   	     	     },
	   	     	     ...
	   	     },...
	   }
}
So Where Are We Going?

• 1990 HTTP REST Richardson Maturity Level 0/1

• 2000 Service Oriented Architecture (SOA)

  • SOAP, WS-*

• 2010 REST Oriented Architecture (ROA)

  • Level Richardson Maturity Level 2/3 -> Caching and HyperMedia

• Activity Oriented Architecture (AOA ?)
  • Level 4?
Rationale

• Once We Have An Activity-Oriented Architecture, We Ought To Be Able to
  Link Data and Actions

  • See Stu Charlton’s REST FEST Presentation

     • https://github.com/RESTFest/2012-greenville/blob/master/
       presentation/linking%20data%20actions.pdf
Minor Problems

• Expressing Domain Specific Object/Verbs Semantics

  • Users do not like to express semantics

  • Example:

     • User wants to get a floodmap of Haiti (Activity)

        • But what’s a floodmap?

        • Note: There is also a huge difference between a MODIS floodmap at
          250m resolution and Radarsat-2 floodmap at 4m resolution... Does it
          matter? There is/could be some big differences as well (data size,
          generation time and $$)... Hummmm!

• Need Activity Aggregator ASAP ??

  • PubsubHubbub?
Feedback?
• pat@cappelaere.com


Major Thanks To:
    REST FEST 2012
          https://github.com/RESTFest/2012-greenville/wiki/People

    Activity Streams Group
          https://groups.google.com/forum/?fromgroups#!forum/activity-streams

    API-Craft Group
          https://groups.google.com/forum/?fromgroups#!forum/api-craft

    OGC REST Standards Working Group
    NASA SensorWeb Group

More Related Content

PDF
Open GeoSocial API
PPTX
Intelligent Payload Processing
PPT
Is It API Time For A New Strategy?
PDF
ROMA User-Customizable NoSQL Database in Ruby
PDF
Common and unique use cases for Apache Hadoop
PDF
Beyond REST? Building data services with XMPP
PDF
Applications of the REST Principle
PPTX
Lies you have been told about REST
Open GeoSocial API
Intelligent Payload Processing
Is It API Time For A New Strategy?
ROMA User-Customizable NoSQL Database in Ruby
Common and unique use cases for Apache Hadoop
Beyond REST? Building data services with XMPP
Applications of the REST Principle
Lies you have been told about REST

Similar to Building Tomorrow's Web Services (20)

PPTX
Rest assured
PPTX
RESTful Web Services
PDF
REST & API Management with the WSO2 ESB
PDF
Rest api webinar(3)
KEY
Want Your API to Stick? Try Story-Telling...
PPTX
Webservices: The RESTful Approach
PPTX
Reaching 1 Million APIs and what to do when we get there
KEY
RESTFul Services, Does it Matter Anymore?
PPT
Rest introduction
PDF
Introduction to REST and Jersey
PPTX
REST Presentation
PDF
Cwinters Intro To Rest And JerREST and Jersey Introductionsey
PPTX
Building Software Backend (Web API)
PDF
Past, Present and Future of APIs of Mobile and Web Apps
PDF
Web APIs - Infrastructure for the (Intelligent) Programmable Web (R&D Talk)
PDF
Creating Restful Web Services with restish
PDF
On being RESTful
PPTX
Http and REST APIs.
PDF
HATEOAS: The Confusing Bit from REST
PDF
What is REST?
Rest assured
RESTful Web Services
REST & API Management with the WSO2 ESB
Rest api webinar(3)
Want Your API to Stick? Try Story-Telling...
Webservices: The RESTful Approach
Reaching 1 Million APIs and what to do when we get there
RESTFul Services, Does it Matter Anymore?
Rest introduction
Introduction to REST and Jersey
REST Presentation
Cwinters Intro To Rest And JerREST and Jersey Introductionsey
Building Software Backend (Web API)
Past, Present and Future of APIs of Mobile and Web Apps
Web APIs - Infrastructure for the (Intelligent) Programmable Web (R&D Talk)
Creating Restful Web Services with restish
On being RESTful
Http and REST APIs.
HATEOAS: The Confusing Bit from REST
What is REST?
Ad

More from Pat Cappelaere (20)

PPTX
GeoCAPE Strategies
PPTX
Open Geo-Social API (and Screencast)
PPT
GEOSS Future Products & GeoSocial API
PDF
Shoudl We Have An API Day?
PDF
Api Days Are Over
KEY
REST Level 5 - A Trek To The Summit
KEY
HyspIRI IPM Goes Social
PDF
Cathalac Story Based on Actual Data
KEY
Radarsat Facebook App Concept
KEY
Story Telling as an Activity-based Architecture
KEY
NASA SensorWeb Enterprise Services
PDF
Nasa aip5.pptx
PDF
Restful Security Requirements
PDF
Two Degrees To SensoWeb
PDF
Esip Jan 09
PDF
EO/NRE Interoperability Presentation
PDF
A RESTful WfXML
PDF
RESTful OGC Services
PDF
Geobliki: A Platform For Emergency Response
GeoCAPE Strategies
Open Geo-Social API (and Screencast)
GEOSS Future Products & GeoSocial API
Shoudl We Have An API Day?
Api Days Are Over
REST Level 5 - A Trek To The Summit
HyspIRI IPM Goes Social
Cathalac Story Based on Actual Data
Radarsat Facebook App Concept
Story Telling as an Activity-based Architecture
NASA SensorWeb Enterprise Services
Nasa aip5.pptx
Restful Security Requirements
Two Degrees To SensoWeb
Esip Jan 09
EO/NRE Interoperability Presentation
A RESTful WfXML
RESTful OGC Services
Geobliki: A Platform For Emergency Response
Ad

Recently uploaded (20)

PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
Big Data Technologies - Introduction.pptx
PDF
Advanced IT Governance
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
GDG Cloud Iasi [PUBLIC] Florian Blaga - Unveiling the Evolution of Cybersecur...
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
solutions_manual_-_materials___processing_in_manufacturing__demargo_.pdf
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Approach and Philosophy of On baking technology
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPT
Teaching material agriculture food technology
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
Advanced Soft Computing BINUS July 2025.pdf
PDF
cuic standard and advanced reporting.pdf
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
KodekX | Application Modernization Development
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
NewMind AI Weekly Chronicles - August'25 Week I
Spectral efficient network and resource selection model in 5G networks
Big Data Technologies - Introduction.pptx
Advanced IT Governance
Advanced methodologies resolving dimensionality complications for autism neur...
GDG Cloud Iasi [PUBLIC] Florian Blaga - Unveiling the Evolution of Cybersecur...
Diabetes mellitus diagnosis method based random forest with bat algorithm
solutions_manual_-_materials___processing_in_manufacturing__demargo_.pdf
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Approach and Philosophy of On baking technology
Dropbox Q2 2025 Financial Results & Investor Presentation
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Teaching material agriculture food technology
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Advanced Soft Computing BINUS July 2025.pdf
cuic standard and advanced reporting.pdf
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
KodekX | Application Modernization Development
Unlocking AI with Model Context Protocol (MCP)
NewMind AI Weekly Chronicles - August'25 Week I

Building Tomorrow's Web Services

  • 1. Building Tomorrow’s Web Services API Pat Cappelaere REST Fest 2012 The Day After... Sept 16, 2012
  • 2. Web Service API Evolution • 1990 HTTP REST Richardson Maturity Level 0/1 • 2000 Service Oriented Architecture (SOAP, WS-*) • 2010 REST Oriented Architecture • Level Richardson Maturity Level 2/3 -> Caching and HyperMedia I Think That We Are Still Heading In Wrong Direction • Next: 2015-2020??? Richardson Maturity Level 4?
  • 3. Why? •Users Do Not Care About Your Resource Model Stop CRUD •Users May Not Care About Your Link Relations Between Resources This is Your Own Plumbing It May Still Be Necessary But... •Tomorrow’s Users Of Your API Will Not Be Humans SO LONG REST AND HYPERMEDIA...??
  • 4. Tomorrow’s User •Welcome SIRI Your APP there Your User Here
  • 5. What’s Different With a User-Agent? • Has Low Bandwidth - Think 3G-4G - 1MB is a big/costly chunk • Acts on Behalf of User • Performs One or More Activities to Achieve a User Goal • Needs to be Able to Find Relevant Activities That Could Be Performed By Nearby Server(s)
  • 6. How Does A User-Agent Work? • Goal (/Preferences) Directed • Sensing • Reactive / Effective • Can Be Programmed To Act “Intelligently” • See Constrained Behavior Trees (Game AI) With Blackboard ... Executing A Specific Activity For Current Context and User Goal Goal: Enabling User Agents By Publishing The Possible Activities They Could Perform
  • 7. http://activitystrea.ms/specs/json/1.0/ What’s An Activity (Stream)? • Get/Post/Update/Delete A Document • or better... Execute/Halt/Resume/Delete a Local Process or Workflow • Examples: • Facebook Social Activity Stream aka News Feed • OGC • Process Image (WPS) • Task Satellite (SPS) • Get Observation (SOS), a Map (WMS), a Coverage (WCS), a Feature (WFS)... http://www.socialcast.com/activity-streams
  • 8. Activity Properties • [User] • Verb https://raw.github.com/activitystreams/activity-streams-verb-definition/master/activity-streams-verb-definition.txt • Object • Target • May be a Few More for Advanced/Complex Activities... • Location, Duration, Cost, Priority, Date, TimeSpan... {user} {verb} {object} [{target}]
  • 9. From Activities To Activity Streams • Once Actors Perform Many Activities, Activity Streams Can Be Generated • See: http://activitystrea.ms/specs/json/1.0/ • Our Problem is to Provide an Activity Template for Actors to Perform Activities (on Behalf of Users) • And Make them Discoverable (Activity Discovery Document???) • And Searchable by User Agents To Meet Current Needs (or Goals)
  • 10. Activity Discovery Document? User Agents Could Access It and Mine it For Activity Opportunities... Then Follow Links For Particular Activity Template
  • 11. So... • Support Auto-Discovery Of Relevant User-Agent Info • Link to Activity Description Document in End Point Page Header <link rel=‘activities’ href=‘http://www.example.com/activities’/> • Link to Activity Search Document in End Point Page Header <link rel="search" href="http://example.com/opensearchdescription.xml" type="application/opensearchdescription+xml" title="Activity Search" /> • Support Activity Search (Described in Url Template of OpenSearch Document) By Generic Search Terms or Specific Object/Verb Search template="http://example.com/?q={searchTerms}&amp; objects={objectTerms}&amp;verbs={verbs?}"/>
  • 12. Activity Template?? { "activities": { Could Easily Be Added To API Discovery Document... "process data": { https://developers.google.com/discovery/ "verb": "process", "object": { "objectType": "http://example.com/terms#data", "displayName": "data" }, "target": { "objectType": "http://example.com/terms# floodmap", "displayName": "floodmap" }, "method": { "httpMethod": "POST", "path": "/activities/1", "mediaType": "application/json", "description": "", "parameters": {...}, "response": {...}, "scopes": {...} }, ... },... } }
  • 13. So Where Are We Going? • 1990 HTTP REST Richardson Maturity Level 0/1 • 2000 Service Oriented Architecture (SOA) • SOAP, WS-* • 2010 REST Oriented Architecture (ROA) • Level Richardson Maturity Level 2/3 -> Caching and HyperMedia • Activity Oriented Architecture (AOA ?) • Level 4?
  • 14. Rationale • Once We Have An Activity-Oriented Architecture, We Ought To Be Able to Link Data and Actions • See Stu Charlton’s REST FEST Presentation • https://github.com/RESTFest/2012-greenville/blob/master/ presentation/linking%20data%20actions.pdf
  • 15. Minor Problems • Expressing Domain Specific Object/Verbs Semantics • Users do not like to express semantics • Example: • User wants to get a floodmap of Haiti (Activity) • But what’s a floodmap? • Note: There is also a huge difference between a MODIS floodmap at 250m resolution and Radarsat-2 floodmap at 4m resolution... Does it matter? There is/could be some big differences as well (data size, generation time and $$)... Hummmm! • Need Activity Aggregator ASAP ?? • PubsubHubbub?
  • 16. Feedback? • pat@cappelaere.com Major Thanks To: REST FEST 2012 https://github.com/RESTFest/2012-greenville/wiki/People Activity Streams Group https://groups.google.com/forum/?fromgroups#!forum/activity-streams API-Craft Group https://groups.google.com/forum/?fromgroups#!forum/api-craft OGC REST Standards Working Group NASA SensorWeb Group

Editor's Notes