SlideShare a Scribd company logo
API-Driven Relationships
Building The Trans-Internet Express of the Future
Pat Patterson
Developer Evangelist Architect
@metadaddy
Apps
Image used under CC-BY-SA.
Attribution: SeeSchloss on en.wikipedia.org
APIs
Image used under CC-BY-SA.
Attribution: Daniel Schwen on en.wikipedia.org
Identity
Image used under CC-BY-SA.
Attribution: Arne Hückelheim on en.wikipedia.org
Integrating Issues from GitHub into Salesforce1
•I’m tracking support cases in Service Cloud
•Some of my products are also open source projects
•I want to…
–link Service Cloud Case records to GitHub Issues
–manage links from the Salesforce1 Mobile App
Salesforce1 Mobile App
Run Your Business From Your Phone
• Mobile access to data in Salesforce
– Accounts, Contacts, Cases etc
– Custom Objects
• Extension points for customization
– PublisherActions
– CustomApps
Containerization
Image used under CC-BY-SA. Attribution: Simeon87 on en.wikipedia.org
GitHub API
•Resources:
–Repositories, issues, comments, file contents etc
–Hyperlinked
•Authentication:
–None
–Basic
–OAuth 2.0
REST
GitHub API
Example call
$curlhttps://api.github.com/users/metadaddy-sfdc
{
"login": "metadaddy-sfdc",
"id":723517,
"avatar_url": "https://avatars.githubusercontent.com/u/723517?",
"gravatar_id": "19573811373a51e4d063f9be63a5ac7c",
"url":"https://api.github.com/users/metadaddy-sfdc",
"html_url": "https://github.com/metadaddy-sfdc",
"followers_url": "https://api.github.com/users/metadaddy-sfdc/followers",
"following_url": "https://api.github.com/users/metadaddy-sfdc/following{/other_user}",
"repos_url":"https://api.github.com/users/metadaddy-sfdc/repos",
"type": "User",
"name":"Pat Patterson",
"company": "salesforce.com",
"location": "SanFrancisco, CA",
"bio":"Principal Developer Evangelist at salesforce.com",
"public_repos": 55,
"public_gists": 31,
}
Issues in GitHub
‘Single-page app’ built with Ionic Framework and AngularJS
• Custom ‘GitHub URL’ field on Salesforce Case
object
• Custom ‘GitHub token’field on Salesforce User
object
• Login to GitHub via OAuth 2.0
• Pull my open Issues via GitHubAPI
• Set value of GitHub URL field on Case
github.com/metadaddy-sfdc/IssuesInGitHub
Demo
Issues in GitHub
Automating Salesforce ExactTarget Marketing Cloud
• I use ExactTarget for email marketing
• My users log in to a community site via Facebook and other social
providers
• I want to…
– automatically add new users to ExactTarget
– send new users a personalized welcome email
Double Header
Image used under CC-BY. Attribution: chief_huddleston on Flickr
ExactTarget APIs
Authentication – App-to-App
• Request
POST/v1/requestToken
Host:auth.exacttargetapis.com
Content-type: application/json
{
"clientSecret":"jY3CejwqkeqhelkqweetMKh",
"clientId":"qew7rehjlrhlehrlwerwbfbfh49w”
}
• Response
{
"accessToken":"uuqxk7rf5f7ddpy7f5f4m74u",
"expiresIn":3550
}
ExactTarget APIs
Web Service (SOAP)
• Manage Subscribers, Lists, Campaigns etc
<s:Envelopexmlns:s="http://www.w3.org/2003/05/soap-envelope"
xmlns:a="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<s:Header>
<a:Actions:mustUnderstand="1">Create</a:Action>
<a:Tos:mustUnderstand="1">https://webservice.exacttarget.com/Service.asmx</a:To>
<ns1:fueloauthxmlns:ns1="http://exacttarget.com">uuqxk7rf5f7ddpy7f5f4m74u</ns1:fueloauth>
</s:Header>
<s:Bodyxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<CreateRequestxmlns="http://exacttarget.com/wsdl/partnerAPI">
<Objectsxsi:type="Subscriber">
<EmailAddress>demo@salesforceidentity.info</EmailAddress>
<SubscriberKey>demo@salesforceidentity.info</SubscriberKey>
</Objects>
</CreateRequest>
</s:Body>
</s:Envelope>
Image used under CC-BY-SA.
Attribution: François Melchior on en.wikipedia.org
SOAP
ExactTarget APIs
Fuel API (REST)
• Trigger events, send SMS, mobile app notifications
POST/interaction-experimental/v1/events
Host:www.exacttargetapis.com
Authorization: Bearer uuqxk7rf5f7ddpy7f5f4m74u
Content-type: application/json
{
"ContactKey": "demo@salesforceidentity.info",
"Data": {
"Facebook_ID__c": "100001234567890",
"First_Name__c": ”Demo",
"Last_Name__c": ”User",
"Locale__c": "en_US",
"User_Email__c": "demo@salesforceidentity.info"
},
"EventDefinitionKey": "Facebook-User-c-trigger"
}
REST
Image used under CC-BY-SA.
Attribution: Daniel Schwen on en.wikipedia.org
Demo
Communities / ExactTarget Integration
Visualizing Business Data… in Minecraft
• I build Minecraft mods with my kids
• I want to see data from Salesforce in a Minecraft world
Image used under CC-BY. Attribution: Rklawton on en.wikipedia.org
Fun!
Salesforce Identity
OAuth 2.0 (Resource Owner Password Credentials Grant)
• Request
POST/services/oauth2/token
Host:login.salesforce.com
Content-type:application/x-www-form-urlencoded
grant_type=password&client_id=3MV...&client_secret=123...&username=user@example.com&password=password
• Response
{
"id":"https://login.salesforce.com/id/00D50000000IZ3ZEAW/00550000001fg5OAAQ",
"issued_at":"1296509381665",
"instance_url":"https://na1.salesforce.com",
"signature":"+Nbl5EOl/DlsvUZ4NbGDno6vn935XsWGVbwoKyXHayo=",
"access_token":"00D50000000IZ3Z!AQgAQH0Yd9M51BU_rayzAdmZ6NmT3pXZ1kTuuQPljJVsX4CPt3naL7qustlb"
}
Salesforce1 Platform
Force.com REST API
• Queries
– SOQLor SOSL query passed as URLparameter
• /services/data/v29.0/query?q=SELECT+Id,+Name+FROM+Account…
• Resources
– Object types and records in database
• /services/data/v29.0/sobjects/
• /services/data/v29.0/sobjects/Account/
• /services/data/v29.0/sobjects/Account/001i000000b64Rw
Salesforce1 Platform
Force.com Streaming API
• Bayeux wire protocol
– HTTP Long Polling
• CometD Client Libraries
client = new BayeuxClient(salesforceStreamingEndpoint(endpoint), transport);
...
client.getChannel(OPPORTUNITY_CHANNEL).subscribe(new OpportunityListener());
...
public class OpportunityListener implements MessageListener {
public void onMessage(ClientSessionChannel channel, Message message) {
}
}
Demo
Forcecraft
github.com/metadaddy-sfdc/Forcecraft
Just as standard rail gauge and couplings
allowed the railways to flourish, identity
standards such as OAuth 2.0 and OpenID
Connect, and standard API patterns such as
REST, allow us to build the Trans-Internet
Express of the future.
API-Driven Relationships: Building The Trans-Internet Express of the Future

More Related Content

PPTX
An introduction to Microsoft Graph for developers
PPTX
Microsoft Graph: Connect to essential data every app needs
PPTX
Apps 101 - Moving to the SharePoint 2013 App Model - Presented 7/27/13 at Sha...
PPTX
Developing a Provider Hosted SharePoint app
PPTX
Microsoft identity platform developer community call-October 2019
PPTX
SPCA2013 - Developing Provider-Hosted Apps for SharePoint 2013
PPTX
Microsoft Graph developer community call-March 2020
PPTX
Deep dive into SharePoint 2013 hosted apps - Chris OBrien
An introduction to Microsoft Graph for developers
Microsoft Graph: Connect to essential data every app needs
Apps 101 - Moving to the SharePoint 2013 App Model - Presented 7/27/13 at Sha...
Developing a Provider Hosted SharePoint app
Microsoft identity platform developer community call-October 2019
SPCA2013 - Developing Provider-Hosted Apps for SharePoint 2013
Microsoft Graph developer community call-March 2020
Deep dive into SharePoint 2013 hosted apps - Chris OBrien

What's hot (20)

PPTX
Developer’s Independence Day: Introducing the SharePoint App Model
PPTX
SharePoint 2013 “App Model” Developing and Deploying Provider Hosted Apps
PPTX
European SharePoint Conference 2018 - Build an intelligent application by con...
PPTX
SharePoint Conference 2018 - Build an intelligent application by connecting i...
PDF
O365Con18 - Reach for the Cloud Build Solutions with the Power of Microsoft G...
PPTX
Implement Authorization in your Apps with Microsoft identity platform-June 2020
PPTX
Building Apps for SharePoint 2013 by Andrew Connell - SPTechCon
PPTX
Change Notifications in Azure Event Hubs-April 2021
PPTX
From Event Receivers to SharePoint Webhooks (SPS Lisbon 2017)
PPTX
Community call: Develop multi tenant apps with the Microsoft identity platform
PPTX
From Event Receivers to SharePoint Webhooks
PPTX
App Model For SharePoint 2013
PPTX
Timeline SoMa WADE
PPTX
SPSNL17 - Getting notified by SharePoint with the webhook functionality - Eli...
PPTX
Designing for SharePoint Provider Hosted Apps
PDF
Connecting Google API's With Mule ESB
PPTX
SharePoint 2013 “App Model” Developing and Deploying Provider Hosted Apps
PPTX
Microsoft identity platform community call-May 2020
PPTX
Office 365 Groups Deep Dive
PPTX
Building Social Tools
Developer’s Independence Day: Introducing the SharePoint App Model
SharePoint 2013 “App Model” Developing and Deploying Provider Hosted Apps
European SharePoint Conference 2018 - Build an intelligent application by con...
SharePoint Conference 2018 - Build an intelligent application by connecting i...
O365Con18 - Reach for the Cloud Build Solutions with the Power of Microsoft G...
Implement Authorization in your Apps with Microsoft identity platform-June 2020
Building Apps for SharePoint 2013 by Andrew Connell - SPTechCon
Change Notifications in Azure Event Hubs-April 2021
From Event Receivers to SharePoint Webhooks (SPS Lisbon 2017)
Community call: Develop multi tenant apps with the Microsoft identity platform
From Event Receivers to SharePoint Webhooks
App Model For SharePoint 2013
Timeline SoMa WADE
SPSNL17 - Getting notified by SharePoint with the webhook functionality - Eli...
Designing for SharePoint Provider Hosted Apps
Connecting Google API's With Mule ESB
SharePoint 2013 “App Model” Developing and Deploying Provider Hosted Apps
Microsoft identity platform community call-May 2020
Office 365 Groups Deep Dive
Building Social Tools
Ad

Similar to API-Driven Relationships: Building The Trans-Internet Express of the Future (20)

PDF
apidays LIVE Paris - Exploring an API with Blocks by Larry Kluger
PPTX
Api security-eic-prabath
PPTX
Logic apps and PowerApps - Integrate across your APIs
PPTX
API Versioning in the Cloud
PDF
Build an AI/ML-driven image archive processing workflow: Image archive, analy...
PDF
apidays LIVE LONDON - Exploring an API with Blocks by Larry Kluger
PPTX
Empower your business with automate processes + tasks using microsoft flows
PDF
BeEF_EUSecWest-2012_Michele-Orru
PDF
Building APIs in an easy way using API Platform
PPTX
What's new for Developers in SharePoint 2013
PPTX
First Look at Azure Logic Apps (BAUG)
PDF
Open stack ocata summit enabling aws lambda-like functionality with openstac...
PDF
Microsoft graph and power platform champ
PPTX
Adding Identity Management and Access Control to your Application - Exersices
PDF
Kasten securing access to your kubernetes applications
PDF
Best Practices in Building an API Security Ecosystem
PDF
Building an API Security Ecosystem
PDF
Build an AI/ML-driven image archive processing workflow: Image archive, analy...
PPTX
Microsoft Azure Identity and O365
PDF
Microservices and the Art of Taming the Dependency Hell Monster
apidays LIVE Paris - Exploring an API with Blocks by Larry Kluger
Api security-eic-prabath
Logic apps and PowerApps - Integrate across your APIs
API Versioning in the Cloud
Build an AI/ML-driven image archive processing workflow: Image archive, analy...
apidays LIVE LONDON - Exploring an API with Blocks by Larry Kluger
Empower your business with automate processes + tasks using microsoft flows
BeEF_EUSecWest-2012_Michele-Orru
Building APIs in an easy way using API Platform
What's new for Developers in SharePoint 2013
First Look at Azure Logic Apps (BAUG)
Open stack ocata summit enabling aws lambda-like functionality with openstac...
Microsoft graph and power platform champ
Adding Identity Management and Access Control to your Application - Exersices
Kasten securing access to your kubernetes applications
Best Practices in Building an API Security Ecosystem
Building an API Security Ecosystem
Build an AI/ML-driven image archive processing workflow: Image archive, analy...
Microsoft Azure Identity and O365
Microservices and the Art of Taming the Dependency Hell Monster
Ad

More from Pat Patterson (20)

PPTX
DevOps from the Provider Perspective
PPTX
How Imprivata Combines External Data Sources for Business Insights
PPTX
Data Integration with Apache Kafka: What, Why, How
PPTX
Project Ouroboros: Using StreamSets Data Collector to Help Manage the StreamS...
PPTX
Dealing with Drift: Building an Enterprise Data Lake
PPTX
Integrating with Einstein Analytics
PPTX
Efficient Schemas in Motion with Kafka and Schema Registry
PPTX
Dealing With Drift - Building an Enterprise Data Lake
PPTX
Building Data Pipelines with Spark and StreamSets
PPTX
Adaptive Data Cleansing with StreamSets and Cassandra
PDF
Building Custom Big Data Integrations
PPTX
Ingest and Stream Processing - What will you choose?
PPTX
Open Source Big Data Ingestion - Without the Heartburn!
PPTX
Ingest and Stream Processing - What will you choose?
PPTX
All Aboard the Boxcar! Going Beyond the Basics of REST
PPTX
Provisioning IDaaS - Using SCIM to Enable Cloud Identity
PPTX
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
PPTX
Enterprise IoT: Data in Context
PPTX
OData: A Standard API for Data Access
PPTX
Using Salesforce to Manage Your Developer Community
DevOps from the Provider Perspective
How Imprivata Combines External Data Sources for Business Insights
Data Integration with Apache Kafka: What, Why, How
Project Ouroboros: Using StreamSets Data Collector to Help Manage the StreamS...
Dealing with Drift: Building an Enterprise Data Lake
Integrating with Einstein Analytics
Efficient Schemas in Motion with Kafka and Schema Registry
Dealing With Drift - Building an Enterprise Data Lake
Building Data Pipelines with Spark and StreamSets
Adaptive Data Cleansing with StreamSets and Cassandra
Building Custom Big Data Integrations
Ingest and Stream Processing - What will you choose?
Open Source Big Data Ingestion - Without the Heartburn!
Ingest and Stream Processing - What will you choose?
All Aboard the Boxcar! Going Beyond the Basics of REST
Provisioning IDaaS - Using SCIM to Enable Cloud Identity
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
Enterprise IoT: Data in Context
OData: A Standard API for Data Access
Using Salesforce to Manage Your Developer Community

Recently uploaded (20)

PPTX
Transform Your Business with a Software ERP System
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PPTX
Operating system designcfffgfgggggggvggggggggg
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PPTX
history of c programming in notes for students .pptx
PPTX
ai tools demonstartion for schools and inter college
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PDF
top salesforce developer skills in 2025.pdf
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PPTX
ISO 45001 Occupational Health and Safety Management System
PPTX
Odoo POS Development Services by CandidRoot Solutions
PPTX
Introduction to Artificial Intelligence
PDF
System and Network Administraation Chapter 3
PDF
medical staffing services at VALiNTRY
PPTX
CHAPTER 2 - PM Management and IT Context
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
Transform Your Business with a Software ERP System
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Design an Analysis of Algorithms I-SECS-1021-03
Operating system designcfffgfgggggggvggggggggg
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
history of c programming in notes for students .pptx
ai tools demonstartion for schools and inter college
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
top salesforce developer skills in 2025.pdf
Design an Analysis of Algorithms II-SECS-1021-03
ISO 45001 Occupational Health and Safety Management System
Odoo POS Development Services by CandidRoot Solutions
Introduction to Artificial Intelligence
System and Network Administraation Chapter 3
medical staffing services at VALiNTRY
CHAPTER 2 - PM Management and IT Context
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
2025 Textile ERP Trends: SAP, Odoo & Oracle

API-Driven Relationships: Building The Trans-Internet Express of the Future

  • 1. API-Driven Relationships Building The Trans-Internet Express of the Future Pat Patterson Developer Evangelist Architect @metadaddy
  • 2. Apps Image used under CC-BY-SA. Attribution: SeeSchloss on en.wikipedia.org APIs Image used under CC-BY-SA. Attribution: Daniel Schwen on en.wikipedia.org Identity Image used under CC-BY-SA. Attribution: Arne Hückelheim on en.wikipedia.org
  • 3. Integrating Issues from GitHub into Salesforce1 •I’m tracking support cases in Service Cloud •Some of my products are also open source projects •I want to… –link Service Cloud Case records to GitHub Issues –manage links from the Salesforce1 Mobile App
  • 4. Salesforce1 Mobile App Run Your Business From Your Phone • Mobile access to data in Salesforce – Accounts, Contacts, Cases etc – Custom Objects • Extension points for customization – PublisherActions – CustomApps Containerization Image used under CC-BY-SA. Attribution: Simeon87 on en.wikipedia.org
  • 5. GitHub API •Resources: –Repositories, issues, comments, file contents etc –Hyperlinked •Authentication: –None –Basic –OAuth 2.0 REST
  • 6. GitHub API Example call $curlhttps://api.github.com/users/metadaddy-sfdc { "login": "metadaddy-sfdc", "id":723517, "avatar_url": "https://avatars.githubusercontent.com/u/723517?", "gravatar_id": "19573811373a51e4d063f9be63a5ac7c", "url":"https://api.github.com/users/metadaddy-sfdc", "html_url": "https://github.com/metadaddy-sfdc", "followers_url": "https://api.github.com/users/metadaddy-sfdc/followers", "following_url": "https://api.github.com/users/metadaddy-sfdc/following{/other_user}", "repos_url":"https://api.github.com/users/metadaddy-sfdc/repos", "type": "User", "name":"Pat Patterson", "company": "salesforce.com", "location": "SanFrancisco, CA", "bio":"Principal Developer Evangelist at salesforce.com", "public_repos": 55, "public_gists": 31, }
  • 7. Issues in GitHub ‘Single-page app’ built with Ionic Framework and AngularJS • Custom ‘GitHub URL’ field on Salesforce Case object • Custom ‘GitHub token’field on Salesforce User object • Login to GitHub via OAuth 2.0 • Pull my open Issues via GitHubAPI • Set value of GitHub URL field on Case github.com/metadaddy-sfdc/IssuesInGitHub
  • 9. Automating Salesforce ExactTarget Marketing Cloud • I use ExactTarget for email marketing • My users log in to a community site via Facebook and other social providers • I want to… – automatically add new users to ExactTarget – send new users a personalized welcome email Double Header Image used under CC-BY. Attribution: chief_huddleston on Flickr
  • 10. ExactTarget APIs Authentication – App-to-App • Request POST/v1/requestToken Host:auth.exacttargetapis.com Content-type: application/json { "clientSecret":"jY3CejwqkeqhelkqweetMKh", "clientId":"qew7rehjlrhlehrlwerwbfbfh49w” } • Response { "accessToken":"uuqxk7rf5f7ddpy7f5f4m74u", "expiresIn":3550 }
  • 11. ExactTarget APIs Web Service (SOAP) • Manage Subscribers, Lists, Campaigns etc <s:Envelopexmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <s:Header> <a:Actions:mustUnderstand="1">Create</a:Action> <a:Tos:mustUnderstand="1">https://webservice.exacttarget.com/Service.asmx</a:To> <ns1:fueloauthxmlns:ns1="http://exacttarget.com">uuqxk7rf5f7ddpy7f5f4m74u</ns1:fueloauth> </s:Header> <s:Bodyxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <CreateRequestxmlns="http://exacttarget.com/wsdl/partnerAPI"> <Objectsxsi:type="Subscriber"> <EmailAddress>demo@salesforceidentity.info</EmailAddress> <SubscriberKey>demo@salesforceidentity.info</SubscriberKey> </Objects> </CreateRequest> </s:Body> </s:Envelope> Image used under CC-BY-SA. Attribution: François Melchior on en.wikipedia.org SOAP
  • 12. ExactTarget APIs Fuel API (REST) • Trigger events, send SMS, mobile app notifications POST/interaction-experimental/v1/events Host:www.exacttargetapis.com Authorization: Bearer uuqxk7rf5f7ddpy7f5f4m74u Content-type: application/json { "ContactKey": "demo@salesforceidentity.info", "Data": { "Facebook_ID__c": "100001234567890", "First_Name__c": ”Demo", "Last_Name__c": ”User", "Locale__c": "en_US", "User_Email__c": "demo@salesforceidentity.info" }, "EventDefinitionKey": "Facebook-User-c-trigger" } REST Image used under CC-BY-SA. Attribution: Daniel Schwen on en.wikipedia.org
  • 14. Visualizing Business Data… in Minecraft • I build Minecraft mods with my kids • I want to see data from Salesforce in a Minecraft world Image used under CC-BY. Attribution: Rklawton on en.wikipedia.org Fun!
  • 15. Salesforce Identity OAuth 2.0 (Resource Owner Password Credentials Grant) • Request POST/services/oauth2/token Host:login.salesforce.com Content-type:application/x-www-form-urlencoded grant_type=password&client_id=3MV...&client_secret=123...&username=user@example.com&password=password • Response { "id":"https://login.salesforce.com/id/00D50000000IZ3ZEAW/00550000001fg5OAAQ", "issued_at":"1296509381665", "instance_url":"https://na1.salesforce.com", "signature":"+Nbl5EOl/DlsvUZ4NbGDno6vn935XsWGVbwoKyXHayo=", "access_token":"00D50000000IZ3Z!AQgAQH0Yd9M51BU_rayzAdmZ6NmT3pXZ1kTuuQPljJVsX4CPt3naL7qustlb" }
  • 16. Salesforce1 Platform Force.com REST API • Queries – SOQLor SOSL query passed as URLparameter • /services/data/v29.0/query?q=SELECT+Id,+Name+FROM+Account… • Resources – Object types and records in database • /services/data/v29.0/sobjects/ • /services/data/v29.0/sobjects/Account/ • /services/data/v29.0/sobjects/Account/001i000000b64Rw
  • 17. Salesforce1 Platform Force.com Streaming API • Bayeux wire protocol – HTTP Long Polling • CometD Client Libraries client = new BayeuxClient(salesforceStreamingEndpoint(endpoint), transport); ... client.getChannel(OPPORTUNITY_CHANNEL).subscribe(new OpportunityListener()); ... public class OpportunityListener implements MessageListener { public void onMessage(ClientSessionChannel channel, Message message) { } }
  • 19. Just as standard rail gauge and couplings allowed the railways to flourish, identity standards such as OAuth 2.0 and OpenID Connect, and standard API patterns such as REST, allow us to build the Trans-Internet Express of the future.