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

What's hot (20)

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

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

PPTX
#CNX14 - Dive Deep into the ExactTarget Fuel APIs
Salesforce Marketing Cloud
 
PPTX
CRM Science - Dreamforce '14: Using the Google SOAP API
CRMScienceKirk
 
PPTX
Exploring the Salesforce REST API
Salesforce Developers
 
PDF
Control your world using the Salesforce1 Platform (IoT)
InternetCreations
 
PPTX
Deep dive into Salesforce Connected App
Dhanik Sahni
 
PDF
Great APIs - Future of Your Progress App
Gabriel Lucaciu
 
PDF
Enterprise API New Features and Roadmap
Salesforce Developers
 
PDF
LF_APIStrat17_Connect Your RESTful API to Hundreds of Others in Minutes (Zapi...
LF_APIStrat
 
PDF
REST - What's It All About? (SAP TechEd 2012, CD110)
Sascha Wenninger
 
PDF
Architect day 20181128 - Afternoon Session
Salesforce - Sweden, Denmark, Norway
 
PDF
The ultimate api checklist by Blendr.io
Blendr.io
 
PPTX
Digital transformation
Anoop Goyal
 
PPTX
2022 APIsecure_Securing APIs with Open Standards
APIsecure_ Official
 
PDF
Integration step up session
Amit Behere
 
PPTX
Marketing Cloud integration with MuleSoft
Patryk Bandurski
 
PPTX
Cnx2014 breakouts- dive deep into the fuel apis
Kris Chant
 
PDF
The Swisscom APi journey
Kay Lummitsch - Digital Journeyman
 
PPTX
APIs Fueling the Connected Car Opportunity - Scott Morrison, SVP & Distinguis...
CA API Management
 
POTX
Using the Google SOAP API
Salesforce Developers
 
PDF
Boxcars and Cabooses: When one more XHR is too much - Peter Chittum - Codemot...
Codemotion
 
#CNX14 - Dive Deep into the ExactTarget Fuel APIs
Salesforce Marketing Cloud
 
CRM Science - Dreamforce '14: Using the Google SOAP API
CRMScienceKirk
 
Exploring the Salesforce REST API
Salesforce Developers
 
Control your world using the Salesforce1 Platform (IoT)
InternetCreations
 
Deep dive into Salesforce Connected App
Dhanik Sahni
 
Great APIs - Future of Your Progress App
Gabriel Lucaciu
 
Enterprise API New Features and Roadmap
Salesforce Developers
 
LF_APIStrat17_Connect Your RESTful API to Hundreds of Others in Minutes (Zapi...
LF_APIStrat
 
REST - What's It All About? (SAP TechEd 2012, CD110)
Sascha Wenninger
 
Architect day 20181128 - Afternoon Session
Salesforce - Sweden, Denmark, Norway
 
The ultimate api checklist by Blendr.io
Blendr.io
 
Digital transformation
Anoop Goyal
 
2022 APIsecure_Securing APIs with Open Standards
APIsecure_ Official
 
Integration step up session
Amit Behere
 
Marketing Cloud integration with MuleSoft
Patryk Bandurski
 
Cnx2014 breakouts- dive deep into the fuel apis
Kris Chant
 
The Swisscom APi journey
Kay Lummitsch - Digital Journeyman
 
APIs Fueling the Connected Car Opportunity - Scott Morrison, SVP & Distinguis...
CA API Management
 
Using the Google SOAP API
Salesforce Developers
 
Boxcars and Cabooses: When one more XHR is too much - Peter Chittum - Codemot...
Codemotion
 
Ad

More from Pat Patterson (20)

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

Recently uploaded (20)

PPTX
Help for Correlations in IBM SPSS Statistics.pptx
Version 1 Analytics
 
PDF
IObit Driver Booster Pro 12.4.0.585 Crack Free Download
henryc1122g
 
PPTX
Milwaukee Marketo User Group - Summer Road Trip: Mapping and Personalizing Yo...
bbedford2
 
PDF
4K Video Downloader Plus Pro Crack for MacOS New Download 2025
bashirkhan333g
 
PDF
Add Background Images to Charts in IBM SPSS Statistics Version 31.pdf
Version 1 Analytics
 
PPTX
Agentic Automation Journey Series Day 2 – Prompt Engineering for UiPath Agents
klpathrudu
 
PDF
Wondershare PDFelement Pro Crack for MacOS New Version Latest 2025
bashirkhan333g
 
PDF
AI + DevOps = Smart Automation with devseccops.ai.pdf
Devseccops.ai
 
PDF
Empower Your Tech Vision- Why Businesses Prefer to Hire Remote Developers fro...
logixshapers59
 
PDF
Simplify React app login with asgardeo-sdk
vaibhav289687
 
PPTX
Smart Doctor Appointment Booking option in odoo.pptx
AxisTechnolabs
 
PDF
AOMEI Partition Assistant Crack 10.8.2 + WinPE Free Downlaod New Version 2025
bashirkhan333g
 
PPTX
Coefficient of Variance in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PPTX
ChiSquare Procedure in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PPTX
Get Started with Maestro: Agent, Robot, and Human in Action – Session 5 of 5
klpathrudu
 
PDF
Everything you need to know about pricing & licensing Microsoft 365 Copilot f...
Q-Advise
 
PDF
How to Hire AI Developers_ Step-by-Step Guide in 2025.pdf
DianApps Technologies
 
PPTX
Empowering Asian Contributions: The Rise of Regional User Groups in Open Sour...
Shane Coughlan
 
PDF
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
PDF
SciPy 2025 - Packaging a Scientific Python Project
Henry Schreiner
 
Help for Correlations in IBM SPSS Statistics.pptx
Version 1 Analytics
 
IObit Driver Booster Pro 12.4.0.585 Crack Free Download
henryc1122g
 
Milwaukee Marketo User Group - Summer Road Trip: Mapping and Personalizing Yo...
bbedford2
 
4K Video Downloader Plus Pro Crack for MacOS New Download 2025
bashirkhan333g
 
Add Background Images to Charts in IBM SPSS Statistics Version 31.pdf
Version 1 Analytics
 
Agentic Automation Journey Series Day 2 – Prompt Engineering for UiPath Agents
klpathrudu
 
Wondershare PDFelement Pro Crack for MacOS New Version Latest 2025
bashirkhan333g
 
AI + DevOps = Smart Automation with devseccops.ai.pdf
Devseccops.ai
 
Empower Your Tech Vision- Why Businesses Prefer to Hire Remote Developers fro...
logixshapers59
 
Simplify React app login with asgardeo-sdk
vaibhav289687
 
Smart Doctor Appointment Booking option in odoo.pptx
AxisTechnolabs
 
AOMEI Partition Assistant Crack 10.8.2 + WinPE Free Downlaod New Version 2025
bashirkhan333g
 
Coefficient of Variance in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
ChiSquare Procedure in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
Get Started with Maestro: Agent, Robot, and Human in Action – Session 5 of 5
klpathrudu
 
Everything you need to know about pricing & licensing Microsoft 365 Copilot f...
Q-Advise
 
How to Hire AI Developers_ Step-by-Step Guide in 2025.pdf
DianApps Technologies
 
Empowering Asian Contributions: The Rise of Regional User Groups in Open Sour...
Shane Coughlan
 
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
SciPy 2025 - Packaging a Scientific Python Project
Henry Schreiner
 

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>[email protected]</EmailAddress> <SubscriberKey>[email protected]</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": "[email protected]", "Data": { "Facebook_ID__c": "100001234567890", "First_Name__c": ”Demo", "Last_Name__c": ”User", "Locale__c": "en_US", "User_Email__c": "[email protected]" }, "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...&[email protected]&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.