SlideShare a Scribd company logo
Business Mashups: Best of the Web APIs Ron Hess, salesforce.com Jon Jessup, Infopia  Charlie Wood, Spanning Partners Track: New AppExchange Developer
Safe Harbor Statement “ Safe harbor” statement under the Private Securities Litigation Reform Act of 1995: This presentation may contain forward-looking statements the achievement of which involves risks, uncertainties and assumptions. If any such risks or uncertainties materialize or if any of the assumptions proves incorrect, our results could differ materially from the results expressed or implied by the forward-looking statements we make.  All statements other than statements of historical fact could be deemed forward-looking, including any projections of subscriber growth, earnings, revenues, or other financial items and any statements regarding strategies or plans of management for future operations, statements of belief, any statements concerning new, planned, or upgraded services or technology developments and customer contracts or use of our services. The risks and uncertainties referred to above include - but are not limited to - risks associated with the integration of Sendia Corporation’s technology, operations, infrastructure and personnel with ours; unexpected costs or delays incurred in integrating Sendia with salesforce.com, which could adversely affect our operating results and rate of growth; any unknown errors or limitations in the Sendia technology; any third party intellectual property claims arising from the Sendia technology; customer and partner acceptance and deployment of the AppExchange and AppExchange Mobile platforms; interruptions or delays in our service or our Web hosting; our new business model; breach of our security measures; possible fluctuations in our operating results and rate of growth; the emerging market in which we operate; our relatively limited operating history; our ability to hire, retain and motivate our employees and manage our growth; competition; our ability to continue to release and gain customer acceptance of new and improved versions of our CRM service; unanticipated changes in our effective tax rate; fluctuations in the number of shares outstanding; the price of such shares; foreign currency exchange rates and interest rates. Further information on these and other factors that could affect our financial results is included in the reports on Forms 10-K, 10-Q and 8-K and in other filings we make with the Securities and Exchange Commission from time to time, including our Form 10-K for the fiscal year ended January 31, 2006. These documents are available on the SEC Filings section of the Investor Information section of our website at  www.salesforce.com/investor . Any unreleased services or features referenced in this or other press releases or public statements are not currently available and may not be delivered on time or at all.  Customers who purchase our services should make purchase decisions based upon features that are currently available.  Salesforce.com, inc. assumes no obligation and does not intend to update these forward-looking statements, except as required by law.
Business Mashups: Best of the Web APIs Track: New AppExchange Developer Jonathan Jessup Development Manager
Infopia Introduction  Leader in On-demand eCommerce Solutions The industry’s most complete on-demand eCommerce solution suite for online merchants:  Marketplace Manager ™ INDUSTRY:  eCommerce EMPLOYEES:  43 GEOGRAPHY:  Global PRODUCTS USED:  Oracle On-Demand, Salesforce. # USERS:  350
Multichannel Selling – Means “Multi-Mashup” Infopia utilizes API’s from many partners to deliver a complete ‘Inventory to Cash’ solution Real-Time Inventory Listings (Price, Promotion, Product, Place) Website Marketplaces Comparison Shopping Order Mgmt Customer Mgmt Fraud Alert Online Sales Pipeline Marketplaces Customers Products Market Presence & Shopping Tools Inventory & Merchandising Fulfillment & Service Analysis & Decisions CRM Marketplaces Comparison Shopping ERP  Analytics Payment & Shipping
Transforming eCommerce Transactions into Relationships The Challenge – Taking my Business to eBay Businesses looking to take advantage of eBay marketplace Required resources to making this a viable business channel  Keeping this channel in sync with their traditional direct sales efforts. The Solution –Infopia, salesforce.com, & eBay Extend the sales reach to the vast eBay online marketplace in a cost effective manner Optimize customer service by maintaining the complete 360-degree customer visibility Ecommerce Solution Marketing Service Sales Analytics Operations & Merchandising Fulfillment &  Service Market Presence Analysis/ Decisions CRM Solution Online Sales Channels
Keys to Successful API Integration Language-independent implementation (SOAP XML) Accessible over standard Internet protocols (HTTPS)  Clear and unambiguous description language (WSDL or XSD) Full development and sandbox environments  SDK and sample codes Developer’s Network and Support
eBay API Integration API to create, revise and process eBay auctions SOAP XML with complete WSDL Full development and sandbox environments Expansive Developers Network and Support eBay API Calls: com.ebay.sdk.ApiCall com.ebay.soap.eBLBaseComponents.ItemType com.ebay.soap.eBLBaseComponents.AddItemRequestType com.ebay.soap.eBLBaseComponents.ReviseItemRequestType com.ebay.soap.eBLBaseComponents.GetItemTransactionsResponseType com.ebay.soap.eBLBaseComponents.AddMemberMessageRTQRequestType
Paypal Integration API to process Paypal Payments  SOAP XML with complete WSDL and SDK Full development and sandbox environments Expansive Developers Network and Support Paypal API Calls: com.paypal.sdk.services.CallerServices com.paypal.soap.api.DoAuthorizationRequestType com.paypal.soap.api.DoCaptureRequestType com.paypal.soap.api.DoDirectPaymentRequestType com.paypal.soap.api.DoExpressCheckoutPaymentRequestType
Google Checkout Integration Google Payment Processing API XML Integration with complete XSD and SDK Full development and sandbox environments Good technical contacts and support Google Checkout API Calls: com.google.checkout.schema.x2.CheckoutShoppingCart com.google.checkout.schema.x2.NewOrderNotification com.google.checkout.schema.x2.RiskInformationNotification
Infopia Web Services API Allows clients and partners to integrate with Infopia SOAP XML, SSL, WSDL, SDK, Code Examples, etc. Secure, client-specific access to Marketplace Manager data Create, update, retrieve, and synchronize: Inventory  Orders  Customer data
Infopia Demo
Business Mashups: Best of the Web APIs Track: New AppExchange Developer Charlie Wood Principal [email_address]
The Road to Sync: Feeds and Calendars July ’05: Spanning Salesforce RSS/Atom feeds for Salesforce and other AppExchange applications July ’06: Spanning Salesforce for iCal Web calendars for Salesforce using the iCalendar format and webcal:// protocol
Requirement: Sync with Google Apps Customer Feedback Calendar publishing is good Two-way sync is better Google Apps becoming a viable alternative to Microsoft Exchange Technology Challenge Differences in protocols, formats, data models Transparent operation On-demand sync system Seamlessly integrates Google Applications with salesforce.com Speaks each system’s native language
Spanning Sync for Google and AppExchange How did we address the challenges? Created a composite AppExchange application Exposed the user interface in a custom tab Hosted the sync engine on an external server Used the AppExchange SOAP API and PHP Toolkit, and the Google Calendar Data API
User Perspective Salesforce calendar and Google Calendar stay in sync Key Requirements Simple Reliable Transparent Key Benefits Eliminates need to maintain multiple calendars Enables calendar sharing with non-SFDC users Enables integration with numerous third-party PIM applications
Developer Perspective: Components
Developer Perspective: Process Flow
Login to Google Get updated and deleted events Create/update events Delete events Developer Perspective: The Google Bits
GData: The Google Data API The API for Google Applications Google Calendar Blogger Google Base Format Atom 1.0 plus custom namespace extensions “ Kinds” for specific data types (e.g., calendar events) Protocol Atom for reading Atom Publishing Protocol for writing OpenSearch for queries Custom authentication for login to Google accounts Custom versioning for conflict detection
Login to Google Calendar ClientLogin (for installed apps), not AuthSub (for web apps) HTTPS POST login request Handle responses from Google: success (HTTP 200) failure (HTTP 403) invalid request CAPTCHA challenge “ Success” response includes an authentication token, required for all subsequent requests
Get Updated and Deleted Events Using GData Queries are expressed an HTTP URIs: http://www.google.com/calendar/feeds/default/private/full?gsessionid=t1tdeGVYHL0&updated-min=2006-10-08T09:00:00-07:00&max-results=1000 Queries return an Atom feed with data in elements from two custom XML namespace extensions (“gd” and “gCal”):   ... <gCal:sendEventNotifications  value = &quot;true&quot; /> <gd:recurrence> DTSTART;VALUE=DATE:20060818 DTEND;VALUE=DATE:20060819 RRULE:FREQ=DAILY;INTERVAL=1;UNTIL=20060823;WKST=SU </gd:recurrence> <gd:eventStatus  value = &quot;http://schemas.google.com/g/2005#event.confirmed&quot; /> <gd:transparency  value = &quot;http://schemas.google.com/g/2005#event.opaque&quot; /> <gd:reminder  minutes = &quot;10&quot; /> ... Updates and Deletes are returned together, with deletes denoted by their status: <gd:eventStatus  value = &quot;http://schemas.google.com/g/2005#event.canceled&quot; />
Create and Update Events Using GData Specify the event using the GData format : <?xml version=&quot;1.0&quot;?> <entry  xmlns =&quot;http://www.w3.org/2005/Atom&quot;  xmlns: openSearch =&quot;http://a9.com/-/spec/opensearchrss/1.0/&quot;  xmlns: gd = &quot;http://schemas.google.com/g/2005&quot;  xmlns: gCal = &quot;http://schemas.google.com/gCal/2005&quot; > < id>http://www.google.com/calendar/feeds/default/private/full/73st11emr9vunnde9sb2ggnsug </id> <category  scheme = &quot;http://schemas.google.com/g/2005#kind&quot;   term = &quot;http://schemas.google.com/g/2005#event&quot; /> <title  type = &quot;text&quot; > Dreamforce Preparty </title> <content  type = &quot;text&quot; > Don&apos;t stay out too late! </content> </content> <gd:transparency  value = &quot;http://schemas.google.com/g/2005#event.opaque&quot; /> <gd:visibility  value = &quot;http://schemas.google.com/g/2005#event.default&quot; /> <gd:eventStatus  value = &quot;http://schemas.google.com/g/2005#event.confirmed&quot; /> <gd:when  startTime = &quot;2006-10-08T21:00:00.000-07:00&quot;   endTime = &quot;2006-10-00T00:00:00.000-07:00&quot; > <gd:reminder  minutes = &quot;15&quot; /> </gd:when> </entry> To create a new event, use HTTP POST to the feed’s URI To update an event, use HTTP PUT to the event’s URI
Delete Events Using GData To delete an event, use HTTP DELETE with the event’s URI: <?php $header [] =  &quot;Authorization: GoogleLogin auth=&quot; . $this ->authToken; $header [] =  &quot;X-HTTP-Method-Override: DELETE&quot; ; $ch  =  curl_init (); curl_setopt ( $ch , CURLOPT_HTTPHEADER,  $header ); curl_setopt ( $ch , CURLOPT_URL,  $theEventURI . &quot;?gsessionid=&quot; . $this ->sessionID); curl_setopt ( $ch , CURLOPT_HEADER,  1 ); curl_setopt ( $ch , CURLOPT_RETURNTRANSFER,  1 ); curl_setopt ( $ch , CURLOPT_POST,  1 ); $tmp  =  curl_exec ( $ch ); curl_close ( $ch ); ?>
GData Optimistic Concurrency (Versioning) Motivation To prevent one client from overwriting another’s changes Implementation A version ID is appended to every GData entry’s URI: http://www.google.com/calendar/feeds/default/private/full/k28lgd7n9jgbi220cv4fe5to04/ 63293840053 When a PUT or DELETE is performed, the version in the request is compared to the version of the existing entry If the versions don’t match, Google responds with HTTP 409 Conflict  Beta This is still a work in progress
Lessons Learned Developing for GData feels like developing for AppExchange No software to install, no biz dev meetings to attend Develop using your language and tools of choice Google Calendar Data API is still in beta Only some data types supported (e.g., no contacts or tasks) “ Optimistic concurrency” versioning system still in development Format and protocol docs don’t yet always match behavior No scripting-level toolkits available yet, so you’ll be writing Java, C#, or raw HTTP requests AppExchange + Google mashups can be incredibly powerful and relatively simple to create
For More Information Google Data APIs (Beta) Developer’s Guide http://code.google.com/apis/gdata/overview.html Using the Google Calendar Data API http://code.google.com/apis/gdata/calendar.html Google Account Authentication http://code.google.com/apis/accounts/Authentication.html Google Groups: Google Calendar Data API http://groups.google.com/group/google-calendar-help-dataapi Moonwatcher (My Blog) http://globelogger.com/moonwatcher
Ron Hess Charlie Wood Principal Jonathan Jessup QUESTION & ANSWER SESSION Salesforce.com Spanning Partners Jonathan Jessup Development Manager Developer Marketing
Session Feedback Let us know how we’re doing! Please score the session from 5 to 1 (5=excellent,1=needs improvement) on the following categories: Overall rating of the session Quality of content Strength of presentation delivery Relevance of the session to your organization Save time! Use your cell phone or mobile device to send Feedback via SMS/Text Messaging! Send a message to  26335 In the message body:   Session 234, ####   For example, “ Session 123, 5555 ” Session ID:  234 Session ID # Scores for 4 categories SMS Voting powered by:
Login Sample Code (Part 1 of 3) <?php function authenticate($gcUname, $gcPword, $loginToken, $loginCaptcha) { $header[] = &quot;Content-type: application/x-www-form-urlencoded&quot;; $postFields = &quot;AccountType=HOSTED_OR_GOOGLE&Email=&quot;.urlencode($gcUname).&quot;&Passwd=&quot;; $postFields .= urlencode($gcPword).&quot;&source=Spanning-AppExSync-1&service=cl&quot;; if(strlen($loginToken) && strlen($loginCaptcha)) { $postFields .= &quot;&logintoken=&quot;.$loginToken.&quot;&logincaptcha=&quot;.$loginCaptcha; } $ch = curl_init(&quot;https://www.google.com/accounts/ClientLogin&quot;); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_HEADER, 1);  // include the header in the output curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  // store the output in a variable curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields); $tmp = curl_exec($ch); curl_close($ch); // parse the response and check for authentication success/failure $theResponse = $this->parse_response($tmp); switch($theResponse[&quot;code&quot;]) { case &quot;200&quot;: // success break; case &quot;403&quot;: $this->handleBadLoginResponse($theResponse[&quot;body&quot;]); break; default: $msg = &quot;Unrecognized response status code on attempted Google Calendar authentication.\n&quot;; $msg .= &quot;Status code: &quot;.$theResponse[&quot;code&quot;].&quot;\n&quot;; $msg .= &quot;Body: &quot;.$theResponse[&quot;body&quot;].&quot;\n&quot;; failWithError($msg); }
Login Sample Code (Part 2 of 3) // extract authorization token $ret = $theResponse[&quot;body&quot;]; if(ereg(&quot;Auth=(.*)\n&quot;,$ret,$regs)) { $this->authToken = $regs[1];  // authenticaion token } else { failWithError(&quot;Authorization token not found in response from Google Calendar.\n&quot;); } // make subsequent (authenticated) request to Calendar $ch = curl_init(&quot;http://www.google.com/calendar/feeds/default/private/full&quot;); unset($header); $header[] = &quot;Authorization: GoogleLogin auth=&quot;.$this->authToken; $header[] = &quot;Content-type: application/atom+xml&quot;; curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_HEADER, 1);  // include the header in the output curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  // store the output in a variable curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);  // DON'T follow the (expected) redirect $tmp = curl_exec($ch); curl_close($ch); // parse the response and check for authentication success/failure $theResponse = $this->parse_response($tmp); switch($theResponse[&quot;code&quot;]) { case &quot;302&quot;:  // success break; default: $msg = &quot;Unrecognized response status code (not 302) on authenticated request to Google Calendar.\n&quot;; $msg .= &quot;Status code: &quot;.$theResponse[&quot;code&quot;].&quot;\n&quot;; $msg .= &quot;Body: &quot;.$theResponse[&quot;body&quot;].&quot;\n&quot;; failWithError($msg); }
Login Sample Code (Part 3 of 3) // extract session id $ret = $theResponse[&quot;header&quot;][&quot;Location&quot;]; if(ereg(&quot;([^\?]*).*gsessionid=(.*)\n&quot;,$ret,$regs)) { $this->sessionID = $regs[2];  // authentication token $this->feedURL = $regs[1];  // feed URL } else { failWithError(&quot;Session ID not found in response from Google Calendar.&quot;); } debug(&quot;Connected to Google and authenticated.&quot;); } ?>
Ad

More Related Content

What's hot (20)

Why We Switched to Unlimited Edition Customer Panel
Why We Switched to Unlimited Edition Customer PanelWhy We Switched to Unlimited Edition Customer Panel
Why We Switched to Unlimited Edition Customer Panel
dreamforce2006
 
Developing an SOA Strategy
Developing an SOA StrategyDeveloping an SOA Strategy
Developing an SOA Strategy
dreamforce2006
 
How Salesforce.com Uses Service & Support
How Salesforce.com Uses Service & SupportHow Salesforce.com Uses Service & Support
How Salesforce.com Uses Service & Support
dreamforce2006
 
Tips & Tricks for Building Advanced Workflow
Tips & Tricks for Building Advanced WorkflowTips & Tricks for Building Advanced Workflow
Tips & Tricks for Building Advanced Workflow
dreamforce2006
 
How To Drive a Large Scale, Global Deployment
How To Drive a Large Scale, Global DeploymentHow To Drive a Large Scale, Global Deployment
How To Drive a Large Scale, Global Deployment
dreamforce2006
 
Architecting Apps for the AppExchange
Architecting Apps for the AppExchangeArchitecting Apps for the AppExchange
Architecting Apps for the AppExchange
dreamforce2006
 
Salesforce PRM, Partner Edition Roadmap
Salesforce PRM, Partner Edition RoadmapSalesforce PRM, Partner Edition Roadmap
Salesforce PRM, Partner Edition Roadmap
dreamforce2006
 
Improving Customer Service with a Branded Self Service Portal
Improving Customer Service with a Branded Self Service PortalImproving Customer Service with a Branded Self Service Portal
Improving Customer Service with a Branded Self Service Portal
dreamforce2006
 
Three Use Cases for Service & Support
Three Use Cases for Service & SupportThree Use Cases for Service & Support
Three Use Cases for Service & Support
dreamforce2006
 
Dreamforce '06 Keynote: Part 2
Dreamforce '06 Keynote: Part 2Dreamforce '06 Keynote: Part 2
Dreamforce '06 Keynote: Part 2
dreamforce2006
 
Wielding Workflow
Wielding WorkflowWielding Workflow
Wielding Workflow
dreamforce2006
 
Inside the Enterprise Case Studies of Customer Apps
Inside the Enterprise Case Studies of Customer AppsInside the Enterprise Case Studies of Customer Apps
Inside the Enterprise Case Studies of Customer Apps
dreamforce2006
 
Integration Strategies in a SaaS Environment
Integration Strategies in a SaaS EnvironmentIntegration Strategies in a SaaS Environment
Integration Strategies in a SaaS Environment
dreamforce2006
 
The Mystery Is Solved Demystifying Integrations
The Mystery Is Solved Demystifying IntegrationsThe Mystery Is Solved Demystifying Integrations
The Mystery Is Solved Demystifying Integrations
dreamforce2006
 
Enhancing Sales Effectiveness with the AppExchange
Enhancing Sales Effectiveness with the AppExchangeEnhancing Sales Effectiveness with the AppExchange
Enhancing Sales Effectiveness with the AppExchange
dreamforce2006
 
How Salesforce.com Uses PRM
How Salesforce.com Uses PRMHow Salesforce.com Uses PRM
How Salesforce.com Uses PRM
dreamforce2006
 
Extending Your CRM with World-Class Service and Support
Extending Your CRM with World-Class Service and SupportExtending Your CRM with World-Class Service and Support
Extending Your CRM with World-Class Service and Support
dreamforce2006
 
System Overload: Getting Control of Your Data and Sanity
System Overload: Getting Control of Your Data and SanitySystem Overload: Getting Control of Your Data and Sanity
System Overload: Getting Control of Your Data and Sanity
dreamforce2006
 
Building an Effective Community Strategy with On-Demand and Salesforce
Building an Effective Community Strategy with On-Demand and SalesforceBuilding an Effective Community Strategy with On-Demand and Salesforce
Building an Effective Community Strategy with On-Demand and Salesforce
dreamforce2006
 
IT Success with the Winter '07 Release Platform Overview
IT Success with the Winter '07 Release Platform OverviewIT Success with the Winter '07 Release Platform Overview
IT Success with the Winter '07 Release Platform Overview
dreamforce2006
 
Why We Switched to Unlimited Edition Customer Panel
Why We Switched to Unlimited Edition Customer PanelWhy We Switched to Unlimited Edition Customer Panel
Why We Switched to Unlimited Edition Customer Panel
dreamforce2006
 
Developing an SOA Strategy
Developing an SOA StrategyDeveloping an SOA Strategy
Developing an SOA Strategy
dreamforce2006
 
How Salesforce.com Uses Service & Support
How Salesforce.com Uses Service & SupportHow Salesforce.com Uses Service & Support
How Salesforce.com Uses Service & Support
dreamforce2006
 
Tips & Tricks for Building Advanced Workflow
Tips & Tricks for Building Advanced WorkflowTips & Tricks for Building Advanced Workflow
Tips & Tricks for Building Advanced Workflow
dreamforce2006
 
How To Drive a Large Scale, Global Deployment
How To Drive a Large Scale, Global DeploymentHow To Drive a Large Scale, Global Deployment
How To Drive a Large Scale, Global Deployment
dreamforce2006
 
Architecting Apps for the AppExchange
Architecting Apps for the AppExchangeArchitecting Apps for the AppExchange
Architecting Apps for the AppExchange
dreamforce2006
 
Salesforce PRM, Partner Edition Roadmap
Salesforce PRM, Partner Edition RoadmapSalesforce PRM, Partner Edition Roadmap
Salesforce PRM, Partner Edition Roadmap
dreamforce2006
 
Improving Customer Service with a Branded Self Service Portal
Improving Customer Service with a Branded Self Service PortalImproving Customer Service with a Branded Self Service Portal
Improving Customer Service with a Branded Self Service Portal
dreamforce2006
 
Three Use Cases for Service & Support
Three Use Cases for Service & SupportThree Use Cases for Service & Support
Three Use Cases for Service & Support
dreamforce2006
 
Dreamforce '06 Keynote: Part 2
Dreamforce '06 Keynote: Part 2Dreamforce '06 Keynote: Part 2
Dreamforce '06 Keynote: Part 2
dreamforce2006
 
Inside the Enterprise Case Studies of Customer Apps
Inside the Enterprise Case Studies of Customer AppsInside the Enterprise Case Studies of Customer Apps
Inside the Enterprise Case Studies of Customer Apps
dreamforce2006
 
Integration Strategies in a SaaS Environment
Integration Strategies in a SaaS EnvironmentIntegration Strategies in a SaaS Environment
Integration Strategies in a SaaS Environment
dreamforce2006
 
The Mystery Is Solved Demystifying Integrations
The Mystery Is Solved Demystifying IntegrationsThe Mystery Is Solved Demystifying Integrations
The Mystery Is Solved Demystifying Integrations
dreamforce2006
 
Enhancing Sales Effectiveness with the AppExchange
Enhancing Sales Effectiveness with the AppExchangeEnhancing Sales Effectiveness with the AppExchange
Enhancing Sales Effectiveness with the AppExchange
dreamforce2006
 
How Salesforce.com Uses PRM
How Salesforce.com Uses PRMHow Salesforce.com Uses PRM
How Salesforce.com Uses PRM
dreamforce2006
 
Extending Your CRM with World-Class Service and Support
Extending Your CRM with World-Class Service and SupportExtending Your CRM with World-Class Service and Support
Extending Your CRM with World-Class Service and Support
dreamforce2006
 
System Overload: Getting Control of Your Data and Sanity
System Overload: Getting Control of Your Data and SanitySystem Overload: Getting Control of Your Data and Sanity
System Overload: Getting Control of Your Data and Sanity
dreamforce2006
 
Building an Effective Community Strategy with On-Demand and Salesforce
Building an Effective Community Strategy with On-Demand and SalesforceBuilding an Effective Community Strategy with On-Demand and Salesforce
Building an Effective Community Strategy with On-Demand and Salesforce
dreamforce2006
 
IT Success with the Winter '07 Release Platform Overview
IT Success with the Winter '07 Release Platform OverviewIT Success with the Winter '07 Release Platform Overview
IT Success with the Winter '07 Release Platform Overview
dreamforce2006
 

Viewers also liked (16)

Expert Panel on Data Management
Expert Panel on Data ManagementExpert Panel on Data Management
Expert Panel on Data Management
dreamforce2006
 
Circle Management
Circle ManagementCircle Management
Circle Management
Al Errington
 
Kohlstedt_Analysis Paper Final
Kohlstedt_Analysis Paper FinalKohlstedt_Analysis Paper Final
Kohlstedt_Analysis Paper Final
Joel Kohlstedt
 
Dreamforce '06 Keynote: Part 1
Dreamforce '06 Keynote: Part 1Dreamforce '06 Keynote: Part 1
Dreamforce '06 Keynote: Part 1
dreamforce2006
 
Delegation
DelegationDelegation
Delegation
Al Errington
 
Introducing Analytics Mash-ups
Introducing Analytics Mash-upsIntroducing Analytics Mash-ups
Introducing Analytics Mash-ups
dreamforce2006
 
Normas de etiqueta en internet
Normas de etiqueta en internetNormas de etiqueta en internet
Normas de etiqueta en internet
angie arzuza
 
Meet the Developers
Meet the DevelopersMeet the Developers
Meet the Developers
dreamforce2006
 
Governance Poster
Governance PosterGovernance Poster
Governance Poster
Al Errington
 
Aumentar
AumentarAumentar
Aumentar
vo7ortiz
 
Yonaguni by group 6
Yonaguni by group 6Yonaguni by group 6
Yonaguni by group 6
Erasmus+
 
Governance Paper
Governance PaperGovernance Paper
Governance Paper
Al Errington
 
Google Adwords Qualifed - Search Advertising
Google Adwords Qualifed - Search AdvertisingGoogle Adwords Qualifed - Search Advertising
Google Adwords Qualifed - Search Advertising
Yogeshwar Rao
 
Análisis sobre las tendencias educativas y experiencias pedagógicas
Análisis sobre  las tendencias educativas y experiencias pedagógicasAnálisis sobre  las tendencias educativas y experiencias pedagógicas
Análisis sobre las tendencias educativas y experiencias pedagógicas
David Escobar
 
Adwords notes
Adwords notesAdwords notes
Adwords notes
Sridhar chembolu
 
Internship final presentation by Ginger Lin
Internship final presentation  by Ginger LinInternship final presentation  by Ginger Lin
Internship final presentation by Ginger Lin
Ginger Lin
 
Expert Panel on Data Management
Expert Panel on Data ManagementExpert Panel on Data Management
Expert Panel on Data Management
dreamforce2006
 
Kohlstedt_Analysis Paper Final
Kohlstedt_Analysis Paper FinalKohlstedt_Analysis Paper Final
Kohlstedt_Analysis Paper Final
Joel Kohlstedt
 
Dreamforce '06 Keynote: Part 1
Dreamforce '06 Keynote: Part 1Dreamforce '06 Keynote: Part 1
Dreamforce '06 Keynote: Part 1
dreamforce2006
 
Introducing Analytics Mash-ups
Introducing Analytics Mash-upsIntroducing Analytics Mash-ups
Introducing Analytics Mash-ups
dreamforce2006
 
Normas de etiqueta en internet
Normas de etiqueta en internetNormas de etiqueta en internet
Normas de etiqueta en internet
angie arzuza
 
Yonaguni by group 6
Yonaguni by group 6Yonaguni by group 6
Yonaguni by group 6
Erasmus+
 
Google Adwords Qualifed - Search Advertising
Google Adwords Qualifed - Search AdvertisingGoogle Adwords Qualifed - Search Advertising
Google Adwords Qualifed - Search Advertising
Yogeshwar Rao
 
Análisis sobre las tendencias educativas y experiencias pedagógicas
Análisis sobre  las tendencias educativas y experiencias pedagógicasAnálisis sobre  las tendencias educativas y experiencias pedagógicas
Análisis sobre las tendencias educativas y experiencias pedagógicas
David Escobar
 
Internship final presentation by Ginger Lin
Internship final presentation  by Ginger LinInternship final presentation  by Ginger Lin
Internship final presentation by Ginger Lin
Ginger Lin
 
Ad

Similar to Business Mashups Best of the Web APIs (20)

Boxcars and Cabooses: When One More XHR Is Too Much
Boxcars and Cabooses: When One More XHR Is Too MuchBoxcars and Cabooses: When One More XHR Is Too Much
Boxcars and Cabooses: When One More XHR Is Too Much
Peter Chittum
 
Real Time Integration with Salesforce Platform Events
Real Time Integration with Salesforce Platform EventsReal Time Integration with Salesforce Platform Events
Real Time Integration with Salesforce Platform Events
Salesforce Developers
 
Using the Google SOAP API
Using the Google SOAP APIUsing the Google SOAP API
Using the Google SOAP API
Salesforce Developers
 
Next-Generation Native Apps
Next-Generation Native AppsNext-Generation Native Apps
Next-Generation Native Apps
dreamforce2006
 
Developer Tour on the Salesforce1 Platform
Developer Tour on the Salesforce1 PlatformDeveloper Tour on the Salesforce1 Platform
Developer Tour on the Salesforce1 Platform
Salesforce Deutschland
 
Developers guide to the Salesforce1 Platform
Developers guide to the Salesforce1 PlatformDevelopers guide to the Salesforce1 Platform
Developers guide to the Salesforce1 Platform
John Stevenson
 
Introduction to Data.com APIs
Introduction to Data.com APIsIntroduction to Data.com APIs
Introduction to Data.com APIs
Salesforce Developers
 
[MBF2] Plate-forme Salesforce par Peter Chittum
[MBF2] Plate-forme Salesforce par Peter Chittum[MBF2] Plate-forme Salesforce par Peter Chittum
[MBF2] Plate-forme Salesforce par Peter Chittum
BeMyApp
 
MuleSoftマイクロサービスとデプロイメントパターン
MuleSoftマイクロサービスとデプロイメントパターンMuleSoftマイクロサービスとデプロイメントパターン
MuleSoftマイクロサービスとデプロイメントパターン
Mitch Okamoto
 
Unlock SAP - Release the potential of your existing backend systems with Sale...
Unlock SAP - Release the potential of your existing backend systems with Sale...Unlock SAP - Release the potential of your existing backend systems with Sale...
Unlock SAP - Release the potential of your existing backend systems with Sale...
Salesforce Deutschland
 
Next Generation Web Services
Next Generation Web ServicesNext Generation Web Services
Next Generation Web Services
dreamforce2006
 
Salesforce platform session 2
 Salesforce platform session 2 Salesforce platform session 2
Salesforce platform session 2
Salesforce - Sweden, Denmark, Norway
 
Streaming API with Java
Streaming API with JavaStreaming API with Java
Streaming API with Java
Salesforce Developers
 
Modern Architectures: Integration Stories from the Field
Modern Architectures: Integration Stories from the FieldModern Architectures: Integration Stories from the Field
Modern Architectures: Integration Stories from the Field
Dreamforce
 
I T E008 Bezar 091907
I T E008  Bezar 091907I T E008  Bezar 091907
I T E008 Bezar 091907
Dreamforce07
 
Introduction to MuleSoft Anytime Platform
Introduction to MuleSoft Anytime PlatformIntroduction to MuleSoft Anytime Platform
Introduction to MuleSoft Anytime Platform
Salesforce Developers
 
Aan004 Wilson 091807
Aan004 Wilson 091807Aan004 Wilson 091807
Aan004 Wilson 091807
Dreamforce07
 
Agentforce Community Tour User Group Curitiba
Agentforce Community Tour User Group CuritibaAgentforce Community Tour User Group Curitiba
Agentforce Community Tour User Group Curitiba
Mauricio Alexandre Silva
 
JDF18 - Connecting the customer success platform
JDF18 - Connecting the customer success platformJDF18 - Connecting the customer success platform
JDF18 - Connecting the customer success platform
Deepu Chacko
 
Dallas user group February 20 2015
Dallas user group February 20 2015Dallas user group February 20 2015
Dallas user group February 20 2015
J Mo
 
Boxcars and Cabooses: When One More XHR Is Too Much
Boxcars and Cabooses: When One More XHR Is Too MuchBoxcars and Cabooses: When One More XHR Is Too Much
Boxcars and Cabooses: When One More XHR Is Too Much
Peter Chittum
 
Real Time Integration with Salesforce Platform Events
Real Time Integration with Salesforce Platform EventsReal Time Integration with Salesforce Platform Events
Real Time Integration with Salesforce Platform Events
Salesforce Developers
 
Next-Generation Native Apps
Next-Generation Native AppsNext-Generation Native Apps
Next-Generation Native Apps
dreamforce2006
 
Developer Tour on the Salesforce1 Platform
Developer Tour on the Salesforce1 PlatformDeveloper Tour on the Salesforce1 Platform
Developer Tour on the Salesforce1 Platform
Salesforce Deutschland
 
Developers guide to the Salesforce1 Platform
Developers guide to the Salesforce1 PlatformDevelopers guide to the Salesforce1 Platform
Developers guide to the Salesforce1 Platform
John Stevenson
 
[MBF2] Plate-forme Salesforce par Peter Chittum
[MBF2] Plate-forme Salesforce par Peter Chittum[MBF2] Plate-forme Salesforce par Peter Chittum
[MBF2] Plate-forme Salesforce par Peter Chittum
BeMyApp
 
MuleSoftマイクロサービスとデプロイメントパターン
MuleSoftマイクロサービスとデプロイメントパターンMuleSoftマイクロサービスとデプロイメントパターン
MuleSoftマイクロサービスとデプロイメントパターン
Mitch Okamoto
 
Unlock SAP - Release the potential of your existing backend systems with Sale...
Unlock SAP - Release the potential of your existing backend systems with Sale...Unlock SAP - Release the potential of your existing backend systems with Sale...
Unlock SAP - Release the potential of your existing backend systems with Sale...
Salesforce Deutschland
 
Next Generation Web Services
Next Generation Web ServicesNext Generation Web Services
Next Generation Web Services
dreamforce2006
 
Modern Architectures: Integration Stories from the Field
Modern Architectures: Integration Stories from the FieldModern Architectures: Integration Stories from the Field
Modern Architectures: Integration Stories from the Field
Dreamforce
 
I T E008 Bezar 091907
I T E008  Bezar 091907I T E008  Bezar 091907
I T E008 Bezar 091907
Dreamforce07
 
Introduction to MuleSoft Anytime Platform
Introduction to MuleSoft Anytime PlatformIntroduction to MuleSoft Anytime Platform
Introduction to MuleSoft Anytime Platform
Salesforce Developers
 
Aan004 Wilson 091807
Aan004 Wilson 091807Aan004 Wilson 091807
Aan004 Wilson 091807
Dreamforce07
 
Agentforce Community Tour User Group Curitiba
Agentforce Community Tour User Group CuritibaAgentforce Community Tour User Group Curitiba
Agentforce Community Tour User Group Curitiba
Mauricio Alexandre Silva
 
JDF18 - Connecting the customer success platform
JDF18 - Connecting the customer success platformJDF18 - Connecting the customer success platform
JDF18 - Connecting the customer success platform
Deepu Chacko
 
Dallas user group February 20 2015
Dallas user group February 20 2015Dallas user group February 20 2015
Dallas user group February 20 2015
J Mo
 
Ad

More from dreamforce2006 (15)

Trusted Reliability & Performance with the AppExchange Platform
Trusted Reliability & Performance with the AppExchange PlatformTrusted Reliability & Performance with the AppExchange Platform
Trusted Reliability & Performance with the AppExchange Platform
dreamforce2006
 
Top Ten AppExchange Apps for Professional Edition
Top Ten AppExchange Apps for Professional EditionTop Ten AppExchange Apps for Professional Edition
Top Ten AppExchange Apps for Professional Edition
dreamforce2006
 
Tools to Increase Partner Adoption and Loyalty
Tools to Increase Partner Adoption and LoyaltyTools to Increase Partner Adoption and Loyalty
Tools to Increase Partner Adoption and Loyalty
dreamforce2006
 
Territory Management Made Simple
Territory Management Made SimpleTerritory Management Made Simple
Territory Management Made Simple
dreamforce2006
 
Success with Salesforce for Capital Markets
Success with Salesforce for Capital MarketsSuccess with Salesforce for Capital Markets
Success with Salesforce for Capital Markets
dreamforce2006
 
Sales ROI Benchmarking
Sales ROI BenchmarkingSales ROI Benchmarking
Sales ROI Benchmarking
dreamforce2006
 
Packaging It Up Latest Enhancements for App Distribution
Packaging It Up Latest Enhancements for App DistributionPackaging It Up Latest Enhancements for App Distribution
Packaging It Up Latest Enhancements for App Distribution
dreamforce2006
 
Open It, Read It, Buy It Email Marketing with the AppExchange
Open It, Read It, Buy It Email Marketing with the AppExchangeOpen It, Read It, Buy It Email Marketing with the AppExchange
Open It, Read It, Buy It Email Marketing with the AppExchange
dreamforce2006
 
Meet the Product Managers
Meet the Product ManagersMeet the Product Managers
Meet the Product Managers
dreamforce2006
 
Manage What You Measure Lessons from Dashboard Pros
Manage What You Measure Lessons from Dashboard ProsManage What You Measure Lessons from Dashboard Pros
Manage What You Measure Lessons from Dashboard Pros
dreamforce2006
 
Leveraging Your Customer Service Function to Drive Sales
Leveraging Your Customer Service Function to Drive SalesLeveraging Your Customer Service Function to Drive Sales
Leveraging Your Customer Service Function to Drive Sales
dreamforce2006
 
Lead Distribution Programs to Optimize Channel Revenue Customer Panel
Lead Distribution Programs to Optimize Channel Revenue Customer PanelLead Distribution Programs to Optimize Channel Revenue Customer Panel
Lead Distribution Programs to Optimize Channel Revenue Customer Panel
dreamforce2006
 
Integrating Salesforce and QuickBooks
Integrating Salesforce and QuickBooksIntegrating Salesforce and QuickBooks
Integrating Salesforce and QuickBooks
dreamforce2006
 
Information Peer Pressure
Information Peer PressureInformation Peer Pressure
Information Peer Pressure
dreamforce2006
 
Improving Productivity with Outlook and Notes Integration
Improving Productivity with Outlook and Notes IntegrationImproving Productivity with Outlook and Notes Integration
Improving Productivity with Outlook and Notes Integration
dreamforce2006
 
Trusted Reliability & Performance with the AppExchange Platform
Trusted Reliability & Performance with the AppExchange PlatformTrusted Reliability & Performance with the AppExchange Platform
Trusted Reliability & Performance with the AppExchange Platform
dreamforce2006
 
Top Ten AppExchange Apps for Professional Edition
Top Ten AppExchange Apps for Professional EditionTop Ten AppExchange Apps for Professional Edition
Top Ten AppExchange Apps for Professional Edition
dreamforce2006
 
Tools to Increase Partner Adoption and Loyalty
Tools to Increase Partner Adoption and LoyaltyTools to Increase Partner Adoption and Loyalty
Tools to Increase Partner Adoption and Loyalty
dreamforce2006
 
Territory Management Made Simple
Territory Management Made SimpleTerritory Management Made Simple
Territory Management Made Simple
dreamforce2006
 
Success with Salesforce for Capital Markets
Success with Salesforce for Capital MarketsSuccess with Salesforce for Capital Markets
Success with Salesforce for Capital Markets
dreamforce2006
 
Sales ROI Benchmarking
Sales ROI BenchmarkingSales ROI Benchmarking
Sales ROI Benchmarking
dreamforce2006
 
Packaging It Up Latest Enhancements for App Distribution
Packaging It Up Latest Enhancements for App DistributionPackaging It Up Latest Enhancements for App Distribution
Packaging It Up Latest Enhancements for App Distribution
dreamforce2006
 
Open It, Read It, Buy It Email Marketing with the AppExchange
Open It, Read It, Buy It Email Marketing with the AppExchangeOpen It, Read It, Buy It Email Marketing with the AppExchange
Open It, Read It, Buy It Email Marketing with the AppExchange
dreamforce2006
 
Meet the Product Managers
Meet the Product ManagersMeet the Product Managers
Meet the Product Managers
dreamforce2006
 
Manage What You Measure Lessons from Dashboard Pros
Manage What You Measure Lessons from Dashboard ProsManage What You Measure Lessons from Dashboard Pros
Manage What You Measure Lessons from Dashboard Pros
dreamforce2006
 
Leveraging Your Customer Service Function to Drive Sales
Leveraging Your Customer Service Function to Drive SalesLeveraging Your Customer Service Function to Drive Sales
Leveraging Your Customer Service Function to Drive Sales
dreamforce2006
 
Lead Distribution Programs to Optimize Channel Revenue Customer Panel
Lead Distribution Programs to Optimize Channel Revenue Customer PanelLead Distribution Programs to Optimize Channel Revenue Customer Panel
Lead Distribution Programs to Optimize Channel Revenue Customer Panel
dreamforce2006
 
Integrating Salesforce and QuickBooks
Integrating Salesforce and QuickBooksIntegrating Salesforce and QuickBooks
Integrating Salesforce and QuickBooks
dreamforce2006
 
Information Peer Pressure
Information Peer PressureInformation Peer Pressure
Information Peer Pressure
dreamforce2006
 
Improving Productivity with Outlook and Notes Integration
Improving Productivity with Outlook and Notes IntegrationImproving Productivity with Outlook and Notes Integration
Improving Productivity with Outlook and Notes Integration
dreamforce2006
 

Recently uploaded (20)

At Nonabel Disability, we redefine disability support services in Greater Syd...
At Nonabel Disability, we redefine disability support services in Greater Syd...At Nonabel Disability, we redefine disability support services in Greater Syd...
At Nonabel Disability, we redefine disability support services in Greater Syd...
zarishah73a
 
upljsjsjsjsjjsjsnsnsmsmmdmdmmdmdmdmmdmo.pptx
upljsjsjsjsjjsjsnsnsmsmmdmdmmdmdmdmmdmo.pptxupljsjsjsjsjjsjsnsnsmsmmdmdmmdmdmdmmdmo.pptx
upljsjsjsjsjjsjsnsnsmsmmdmdmmdmdmdmmdmo.pptx
JayeshTaneja4
 
Commercial Bank Economic Capsule - April 2025
Commercial Bank Economic Capsule - April 2025Commercial Bank Economic Capsule - April 2025
Commercial Bank Economic Capsule - April 2025
Commercial Bank of Ceylon PLC
 
Depreciation of equipment's ____-__ .ppt
Depreciation of equipment's ____-__ .pptDepreciation of equipment's ____-__ .ppt
Depreciation of equipment's ____-__ .ppt
bluehhh07
 
Maximise Your Online Visibility - Lead Generation for Accountants.pdf
Maximise Your Online Visibility - Lead Generation for Accountants.pdfMaximise Your Online Visibility - Lead Generation for Accountants.pdf
Maximise Your Online Visibility - Lead Generation for Accountants.pdf
Accounting Leads
 
Chapter of corporate finance of capital budegting
Chapter of corporate finance of capital budegtingChapter of corporate finance of capital budegting
Chapter of corporate finance of capital budegting
vanshsharma541544
 
ABC OF ACCOUNTING INFOGRAPHIC.pdf CA SUVIDHA CHAPLOT
ABC OF ACCOUNTING INFOGRAPHIC.pdf CA SUVIDHA CHAPLOTABC OF ACCOUNTING INFOGRAPHIC.pdf CA SUVIDHA CHAPLOT
ABC OF ACCOUNTING INFOGRAPHIC.pdf CA SUVIDHA CHAPLOT
CA Suvidha Chaplot
 
EE2025 basic definitions and its importamnce.pptx
EE2025 basic definitions and its importamnce.pptxEE2025 basic definitions and its importamnce.pptx
EE2025 basic definitions and its importamnce.pptx
AnsarAbbas97
 
Lead with A11Y Webinar with DLA Piper on European Accessibility Act.pptx
Lead with A11Y Webinar with DLA Piper on European Accessibility Act.pptxLead with A11Y Webinar with DLA Piper on European Accessibility Act.pptx
Lead with A11Y Webinar with DLA Piper on European Accessibility Act.pptx
FinTech Belgium
 
Decoding What Project Financial Management Is.pdf
Decoding What Project Financial Management Is.pdfDecoding What Project Financial Management Is.pdf
Decoding What Project Financial Management Is.pdf
Enterprise Wired
 
Consolidated Accounting notes presentation 2
Consolidated Accounting notes presentation 2Consolidated Accounting notes presentation 2
Consolidated Accounting notes presentation 2
ashforddube14
 
WAND.pdfvq d ix and8dba d8nd qnd8duf es qid
WAND.pdfvq d ix and8dba d8nd qnd8duf es qidWAND.pdfvq d ix and8dba d8nd qnd8duf es qid
WAND.pdfvq d ix and8dba d8nd qnd8duf es qid
jeremysegundob
 
Introduction to Agribusiness Marketing.pdf
Introduction to Agribusiness Marketing.pdfIntroduction to Agribusiness Marketing.pdf
Introduction to Agribusiness Marketing.pdf
AdityaPrananda3
 
Hormones (mid terms) by yhbybhnybhunudr rida.pptx
Hormones (mid terms) by yhbybhnybhunudr rida.pptxHormones (mid terms) by yhbybhnybhunudr rida.pptx
Hormones (mid terms) by yhbybhnybhunudr rida.pptx
yousafmuzammil19
 
Rural Livelihood.pptx Rural Development
Rural Livelihood.pptx  Rural DevelopmentRural Livelihood.pptx  Rural Development
Rural Livelihood.pptx Rural Development
Dr. Ravindra Pastor
 
Truxton Capital: Middle Market Quarterly Review - April 2025
Truxton Capital: Middle Market Quarterly Review - April 2025Truxton Capital: Middle Market Quarterly Review - April 2025
Truxton Capital: Middle Market Quarterly Review - April 2025
truxtontrust
 
New Microsoft PowerPoint Presentation.pptx
New Microsoft PowerPoint Presentation.pptxNew Microsoft PowerPoint Presentation.pptx
New Microsoft PowerPoint Presentation.pptx
JayeshTaneja4
 
ACAL- insurance lebanese Report 2016.pdf
ACAL- insurance lebanese Report 2016.pdfACAL- insurance lebanese Report 2016.pdf
ACAL- insurance lebanese Report 2016.pdf
zkh10452
 
macrochapter9 Economic Growth II=Technology, Empirics, and Policy.pdf
macrochapter9 Economic Growth II=Technology, Empirics, and Policy.pdfmacrochapter9 Economic Growth II=Technology, Empirics, and Policy.pdf
macrochapter9 Economic Growth II=Technology, Empirics, and Policy.pdf
belayzewude1
 
ch-04-PPTaccessible financial markets chapter 4 misjkin.pptx
ch-04-PPTaccessible financial markets chapter 4 misjkin.pptxch-04-PPTaccessible financial markets chapter 4 misjkin.pptx
ch-04-PPTaccessible financial markets chapter 4 misjkin.pptx
aitzazahsan13
 
At Nonabel Disability, we redefine disability support services in Greater Syd...
At Nonabel Disability, we redefine disability support services in Greater Syd...At Nonabel Disability, we redefine disability support services in Greater Syd...
At Nonabel Disability, we redefine disability support services in Greater Syd...
zarishah73a
 
upljsjsjsjsjjsjsnsnsmsmmdmdmmdmdmdmmdmo.pptx
upljsjsjsjsjjsjsnsnsmsmmdmdmmdmdmdmmdmo.pptxupljsjsjsjsjjsjsnsnsmsmmdmdmmdmdmdmmdmo.pptx
upljsjsjsjsjjsjsnsnsmsmmdmdmmdmdmdmmdmo.pptx
JayeshTaneja4
 
Depreciation of equipment's ____-__ .ppt
Depreciation of equipment's ____-__ .pptDepreciation of equipment's ____-__ .ppt
Depreciation of equipment's ____-__ .ppt
bluehhh07
 
Maximise Your Online Visibility - Lead Generation for Accountants.pdf
Maximise Your Online Visibility - Lead Generation for Accountants.pdfMaximise Your Online Visibility - Lead Generation for Accountants.pdf
Maximise Your Online Visibility - Lead Generation for Accountants.pdf
Accounting Leads
 
Chapter of corporate finance of capital budegting
Chapter of corporate finance of capital budegtingChapter of corporate finance of capital budegting
Chapter of corporate finance of capital budegting
vanshsharma541544
 
ABC OF ACCOUNTING INFOGRAPHIC.pdf CA SUVIDHA CHAPLOT
ABC OF ACCOUNTING INFOGRAPHIC.pdf CA SUVIDHA CHAPLOTABC OF ACCOUNTING INFOGRAPHIC.pdf CA SUVIDHA CHAPLOT
ABC OF ACCOUNTING INFOGRAPHIC.pdf CA SUVIDHA CHAPLOT
CA Suvidha Chaplot
 
EE2025 basic definitions and its importamnce.pptx
EE2025 basic definitions and its importamnce.pptxEE2025 basic definitions and its importamnce.pptx
EE2025 basic definitions and its importamnce.pptx
AnsarAbbas97
 
Lead with A11Y Webinar with DLA Piper on European Accessibility Act.pptx
Lead with A11Y Webinar with DLA Piper on European Accessibility Act.pptxLead with A11Y Webinar with DLA Piper on European Accessibility Act.pptx
Lead with A11Y Webinar with DLA Piper on European Accessibility Act.pptx
FinTech Belgium
 
Decoding What Project Financial Management Is.pdf
Decoding What Project Financial Management Is.pdfDecoding What Project Financial Management Is.pdf
Decoding What Project Financial Management Is.pdf
Enterprise Wired
 
Consolidated Accounting notes presentation 2
Consolidated Accounting notes presentation 2Consolidated Accounting notes presentation 2
Consolidated Accounting notes presentation 2
ashforddube14
 
WAND.pdfvq d ix and8dba d8nd qnd8duf es qid
WAND.pdfvq d ix and8dba d8nd qnd8duf es qidWAND.pdfvq d ix and8dba d8nd qnd8duf es qid
WAND.pdfvq d ix and8dba d8nd qnd8duf es qid
jeremysegundob
 
Introduction to Agribusiness Marketing.pdf
Introduction to Agribusiness Marketing.pdfIntroduction to Agribusiness Marketing.pdf
Introduction to Agribusiness Marketing.pdf
AdityaPrananda3
 
Hormones (mid terms) by yhbybhnybhunudr rida.pptx
Hormones (mid terms) by yhbybhnybhunudr rida.pptxHormones (mid terms) by yhbybhnybhunudr rida.pptx
Hormones (mid terms) by yhbybhnybhunudr rida.pptx
yousafmuzammil19
 
Rural Livelihood.pptx Rural Development
Rural Livelihood.pptx  Rural DevelopmentRural Livelihood.pptx  Rural Development
Rural Livelihood.pptx Rural Development
Dr. Ravindra Pastor
 
Truxton Capital: Middle Market Quarterly Review - April 2025
Truxton Capital: Middle Market Quarterly Review - April 2025Truxton Capital: Middle Market Quarterly Review - April 2025
Truxton Capital: Middle Market Quarterly Review - April 2025
truxtontrust
 
New Microsoft PowerPoint Presentation.pptx
New Microsoft PowerPoint Presentation.pptxNew Microsoft PowerPoint Presentation.pptx
New Microsoft PowerPoint Presentation.pptx
JayeshTaneja4
 
ACAL- insurance lebanese Report 2016.pdf
ACAL- insurance lebanese Report 2016.pdfACAL- insurance lebanese Report 2016.pdf
ACAL- insurance lebanese Report 2016.pdf
zkh10452
 
macrochapter9 Economic Growth II=Technology, Empirics, and Policy.pdf
macrochapter9 Economic Growth II=Technology, Empirics, and Policy.pdfmacrochapter9 Economic Growth II=Technology, Empirics, and Policy.pdf
macrochapter9 Economic Growth II=Technology, Empirics, and Policy.pdf
belayzewude1
 
ch-04-PPTaccessible financial markets chapter 4 misjkin.pptx
ch-04-PPTaccessible financial markets chapter 4 misjkin.pptxch-04-PPTaccessible financial markets chapter 4 misjkin.pptx
ch-04-PPTaccessible financial markets chapter 4 misjkin.pptx
aitzazahsan13
 

Business Mashups Best of the Web APIs

  • 1. Business Mashups: Best of the Web APIs Ron Hess, salesforce.com Jon Jessup, Infopia Charlie Wood, Spanning Partners Track: New AppExchange Developer
  • 2. Safe Harbor Statement “ Safe harbor” statement under the Private Securities Litigation Reform Act of 1995: This presentation may contain forward-looking statements the achievement of which involves risks, uncertainties and assumptions. If any such risks or uncertainties materialize or if any of the assumptions proves incorrect, our results could differ materially from the results expressed or implied by the forward-looking statements we make.  All statements other than statements of historical fact could be deemed forward-looking, including any projections of subscriber growth, earnings, revenues, or other financial items and any statements regarding strategies or plans of management for future operations, statements of belief, any statements concerning new, planned, or upgraded services or technology developments and customer contracts or use of our services. The risks and uncertainties referred to above include - but are not limited to - risks associated with the integration of Sendia Corporation’s technology, operations, infrastructure and personnel with ours; unexpected costs or delays incurred in integrating Sendia with salesforce.com, which could adversely affect our operating results and rate of growth; any unknown errors or limitations in the Sendia technology; any third party intellectual property claims arising from the Sendia technology; customer and partner acceptance and deployment of the AppExchange and AppExchange Mobile platforms; interruptions or delays in our service or our Web hosting; our new business model; breach of our security measures; possible fluctuations in our operating results and rate of growth; the emerging market in which we operate; our relatively limited operating history; our ability to hire, retain and motivate our employees and manage our growth; competition; our ability to continue to release and gain customer acceptance of new and improved versions of our CRM service; unanticipated changes in our effective tax rate; fluctuations in the number of shares outstanding; the price of such shares; foreign currency exchange rates and interest rates. Further information on these and other factors that could affect our financial results is included in the reports on Forms 10-K, 10-Q and 8-K and in other filings we make with the Securities and Exchange Commission from time to time, including our Form 10-K for the fiscal year ended January 31, 2006. These documents are available on the SEC Filings section of the Investor Information section of our website at www.salesforce.com/investor . Any unreleased services or features referenced in this or other press releases or public statements are not currently available and may not be delivered on time or at all.  Customers who purchase our services should make purchase decisions based upon features that are currently available.  Salesforce.com, inc. assumes no obligation and does not intend to update these forward-looking statements, except as required by law.
  • 3. Business Mashups: Best of the Web APIs Track: New AppExchange Developer Jonathan Jessup Development Manager
  • 4. Infopia Introduction Leader in On-demand eCommerce Solutions The industry’s most complete on-demand eCommerce solution suite for online merchants: Marketplace Manager ™ INDUSTRY: eCommerce EMPLOYEES: 43 GEOGRAPHY: Global PRODUCTS USED: Oracle On-Demand, Salesforce. # USERS: 350
  • 5. Multichannel Selling – Means “Multi-Mashup” Infopia utilizes API’s from many partners to deliver a complete ‘Inventory to Cash’ solution Real-Time Inventory Listings (Price, Promotion, Product, Place) Website Marketplaces Comparison Shopping Order Mgmt Customer Mgmt Fraud Alert Online Sales Pipeline Marketplaces Customers Products Market Presence & Shopping Tools Inventory & Merchandising Fulfillment & Service Analysis & Decisions CRM Marketplaces Comparison Shopping ERP Analytics Payment & Shipping
  • 6. Transforming eCommerce Transactions into Relationships The Challenge – Taking my Business to eBay Businesses looking to take advantage of eBay marketplace Required resources to making this a viable business channel Keeping this channel in sync with their traditional direct sales efforts. The Solution –Infopia, salesforce.com, & eBay Extend the sales reach to the vast eBay online marketplace in a cost effective manner Optimize customer service by maintaining the complete 360-degree customer visibility Ecommerce Solution Marketing Service Sales Analytics Operations & Merchandising Fulfillment & Service Market Presence Analysis/ Decisions CRM Solution Online Sales Channels
  • 7. Keys to Successful API Integration Language-independent implementation (SOAP XML) Accessible over standard Internet protocols (HTTPS) Clear and unambiguous description language (WSDL or XSD) Full development and sandbox environments SDK and sample codes Developer’s Network and Support
  • 8. eBay API Integration API to create, revise and process eBay auctions SOAP XML with complete WSDL Full development and sandbox environments Expansive Developers Network and Support eBay API Calls: com.ebay.sdk.ApiCall com.ebay.soap.eBLBaseComponents.ItemType com.ebay.soap.eBLBaseComponents.AddItemRequestType com.ebay.soap.eBLBaseComponents.ReviseItemRequestType com.ebay.soap.eBLBaseComponents.GetItemTransactionsResponseType com.ebay.soap.eBLBaseComponents.AddMemberMessageRTQRequestType
  • 9. Paypal Integration API to process Paypal Payments SOAP XML with complete WSDL and SDK Full development and sandbox environments Expansive Developers Network and Support Paypal API Calls: com.paypal.sdk.services.CallerServices com.paypal.soap.api.DoAuthorizationRequestType com.paypal.soap.api.DoCaptureRequestType com.paypal.soap.api.DoDirectPaymentRequestType com.paypal.soap.api.DoExpressCheckoutPaymentRequestType
  • 10. Google Checkout Integration Google Payment Processing API XML Integration with complete XSD and SDK Full development and sandbox environments Good technical contacts and support Google Checkout API Calls: com.google.checkout.schema.x2.CheckoutShoppingCart com.google.checkout.schema.x2.NewOrderNotification com.google.checkout.schema.x2.RiskInformationNotification
  • 11. Infopia Web Services API Allows clients and partners to integrate with Infopia SOAP XML, SSL, WSDL, SDK, Code Examples, etc. Secure, client-specific access to Marketplace Manager data Create, update, retrieve, and synchronize: Inventory Orders Customer data
  • 13. Business Mashups: Best of the Web APIs Track: New AppExchange Developer Charlie Wood Principal [email_address]
  • 14. The Road to Sync: Feeds and Calendars July ’05: Spanning Salesforce RSS/Atom feeds for Salesforce and other AppExchange applications July ’06: Spanning Salesforce for iCal Web calendars for Salesforce using the iCalendar format and webcal:// protocol
  • 15. Requirement: Sync with Google Apps Customer Feedback Calendar publishing is good Two-way sync is better Google Apps becoming a viable alternative to Microsoft Exchange Technology Challenge Differences in protocols, formats, data models Transparent operation On-demand sync system Seamlessly integrates Google Applications with salesforce.com Speaks each system’s native language
  • 16. Spanning Sync for Google and AppExchange How did we address the challenges? Created a composite AppExchange application Exposed the user interface in a custom tab Hosted the sync engine on an external server Used the AppExchange SOAP API and PHP Toolkit, and the Google Calendar Data API
  • 17. User Perspective Salesforce calendar and Google Calendar stay in sync Key Requirements Simple Reliable Transparent Key Benefits Eliminates need to maintain multiple calendars Enables calendar sharing with non-SFDC users Enables integration with numerous third-party PIM applications
  • 20. Login to Google Get updated and deleted events Create/update events Delete events Developer Perspective: The Google Bits
  • 21. GData: The Google Data API The API for Google Applications Google Calendar Blogger Google Base Format Atom 1.0 plus custom namespace extensions “ Kinds” for specific data types (e.g., calendar events) Protocol Atom for reading Atom Publishing Protocol for writing OpenSearch for queries Custom authentication for login to Google accounts Custom versioning for conflict detection
  • 22. Login to Google Calendar ClientLogin (for installed apps), not AuthSub (for web apps) HTTPS POST login request Handle responses from Google: success (HTTP 200) failure (HTTP 403) invalid request CAPTCHA challenge “ Success” response includes an authentication token, required for all subsequent requests
  • 23. Get Updated and Deleted Events Using GData Queries are expressed an HTTP URIs: http://www.google.com/calendar/feeds/default/private/full?gsessionid=t1tdeGVYHL0&updated-min=2006-10-08T09:00:00-07:00&max-results=1000 Queries return an Atom feed with data in elements from two custom XML namespace extensions (“gd” and “gCal”): ... <gCal:sendEventNotifications value = &quot;true&quot; /> <gd:recurrence> DTSTART;VALUE=DATE:20060818 DTEND;VALUE=DATE:20060819 RRULE:FREQ=DAILY;INTERVAL=1;UNTIL=20060823;WKST=SU </gd:recurrence> <gd:eventStatus value = &quot;http://schemas.google.com/g/2005#event.confirmed&quot; /> <gd:transparency value = &quot;http://schemas.google.com/g/2005#event.opaque&quot; /> <gd:reminder minutes = &quot;10&quot; /> ... Updates and Deletes are returned together, with deletes denoted by their status: <gd:eventStatus value = &quot;http://schemas.google.com/g/2005#event.canceled&quot; />
  • 24. Create and Update Events Using GData Specify the event using the GData format : <?xml version=&quot;1.0&quot;?> <entry xmlns =&quot;http://www.w3.org/2005/Atom&quot; xmlns: openSearch =&quot;http://a9.com/-/spec/opensearchrss/1.0/&quot; xmlns: gd = &quot;http://schemas.google.com/g/2005&quot; xmlns: gCal = &quot;http://schemas.google.com/gCal/2005&quot; > < id>http://www.google.com/calendar/feeds/default/private/full/73st11emr9vunnde9sb2ggnsug </id> <category scheme = &quot;http://schemas.google.com/g/2005#kind&quot; term = &quot;http://schemas.google.com/g/2005#event&quot; /> <title type = &quot;text&quot; > Dreamforce Preparty </title> <content type = &quot;text&quot; > Don&apos;t stay out too late! </content> </content> <gd:transparency value = &quot;http://schemas.google.com/g/2005#event.opaque&quot; /> <gd:visibility value = &quot;http://schemas.google.com/g/2005#event.default&quot; /> <gd:eventStatus value = &quot;http://schemas.google.com/g/2005#event.confirmed&quot; /> <gd:when startTime = &quot;2006-10-08T21:00:00.000-07:00&quot; endTime = &quot;2006-10-00T00:00:00.000-07:00&quot; > <gd:reminder minutes = &quot;15&quot; /> </gd:when> </entry> To create a new event, use HTTP POST to the feed’s URI To update an event, use HTTP PUT to the event’s URI
  • 25. Delete Events Using GData To delete an event, use HTTP DELETE with the event’s URI: <?php $header [] = &quot;Authorization: GoogleLogin auth=&quot; . $this ->authToken; $header [] = &quot;X-HTTP-Method-Override: DELETE&quot; ; $ch = curl_init (); curl_setopt ( $ch , CURLOPT_HTTPHEADER, $header ); curl_setopt ( $ch , CURLOPT_URL, $theEventURI . &quot;?gsessionid=&quot; . $this ->sessionID); curl_setopt ( $ch , CURLOPT_HEADER, 1 ); curl_setopt ( $ch , CURLOPT_RETURNTRANSFER, 1 ); curl_setopt ( $ch , CURLOPT_POST, 1 ); $tmp = curl_exec ( $ch ); curl_close ( $ch ); ?>
  • 26. GData Optimistic Concurrency (Versioning) Motivation To prevent one client from overwriting another’s changes Implementation A version ID is appended to every GData entry’s URI: http://www.google.com/calendar/feeds/default/private/full/k28lgd7n9jgbi220cv4fe5to04/ 63293840053 When a PUT or DELETE is performed, the version in the request is compared to the version of the existing entry If the versions don’t match, Google responds with HTTP 409 Conflict Beta This is still a work in progress
  • 27. Lessons Learned Developing for GData feels like developing for AppExchange No software to install, no biz dev meetings to attend Develop using your language and tools of choice Google Calendar Data API is still in beta Only some data types supported (e.g., no contacts or tasks) “ Optimistic concurrency” versioning system still in development Format and protocol docs don’t yet always match behavior No scripting-level toolkits available yet, so you’ll be writing Java, C#, or raw HTTP requests AppExchange + Google mashups can be incredibly powerful and relatively simple to create
  • 28. For More Information Google Data APIs (Beta) Developer’s Guide http://code.google.com/apis/gdata/overview.html Using the Google Calendar Data API http://code.google.com/apis/gdata/calendar.html Google Account Authentication http://code.google.com/apis/accounts/Authentication.html Google Groups: Google Calendar Data API http://groups.google.com/group/google-calendar-help-dataapi Moonwatcher (My Blog) http://globelogger.com/moonwatcher
  • 29. Ron Hess Charlie Wood Principal Jonathan Jessup QUESTION & ANSWER SESSION Salesforce.com Spanning Partners Jonathan Jessup Development Manager Developer Marketing
  • 30. Session Feedback Let us know how we’re doing! Please score the session from 5 to 1 (5=excellent,1=needs improvement) on the following categories: Overall rating of the session Quality of content Strength of presentation delivery Relevance of the session to your organization Save time! Use your cell phone or mobile device to send Feedback via SMS/Text Messaging! Send a message to 26335 In the message body: Session 234, #### For example, “ Session 123, 5555 ” Session ID: 234 Session ID # Scores for 4 categories SMS Voting powered by:
  • 31. Login Sample Code (Part 1 of 3) <?php function authenticate($gcUname, $gcPword, $loginToken, $loginCaptcha) { $header[] = &quot;Content-type: application/x-www-form-urlencoded&quot;; $postFields = &quot;AccountType=HOSTED_OR_GOOGLE&Email=&quot;.urlencode($gcUname).&quot;&Passwd=&quot;; $postFields .= urlencode($gcPword).&quot;&source=Spanning-AppExSync-1&service=cl&quot;; if(strlen($loginToken) && strlen($loginCaptcha)) { $postFields .= &quot;&logintoken=&quot;.$loginToken.&quot;&logincaptcha=&quot;.$loginCaptcha; } $ch = curl_init(&quot;https://www.google.com/accounts/ClientLogin&quot;); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_HEADER, 1); // include the header in the output curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // store the output in a variable curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields); $tmp = curl_exec($ch); curl_close($ch); // parse the response and check for authentication success/failure $theResponse = $this->parse_response($tmp); switch($theResponse[&quot;code&quot;]) { case &quot;200&quot;: // success break; case &quot;403&quot;: $this->handleBadLoginResponse($theResponse[&quot;body&quot;]); break; default: $msg = &quot;Unrecognized response status code on attempted Google Calendar authentication.\n&quot;; $msg .= &quot;Status code: &quot;.$theResponse[&quot;code&quot;].&quot;\n&quot;; $msg .= &quot;Body: &quot;.$theResponse[&quot;body&quot;].&quot;\n&quot;; failWithError($msg); }
  • 32. Login Sample Code (Part 2 of 3) // extract authorization token $ret = $theResponse[&quot;body&quot;]; if(ereg(&quot;Auth=(.*)\n&quot;,$ret,$regs)) { $this->authToken = $regs[1]; // authenticaion token } else { failWithError(&quot;Authorization token not found in response from Google Calendar.\n&quot;); } // make subsequent (authenticated) request to Calendar $ch = curl_init(&quot;http://www.google.com/calendar/feeds/default/private/full&quot;); unset($header); $header[] = &quot;Authorization: GoogleLogin auth=&quot;.$this->authToken; $header[] = &quot;Content-type: application/atom+xml&quot;; curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_HEADER, 1); // include the header in the output curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // store the output in a variable curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); // DON'T follow the (expected) redirect $tmp = curl_exec($ch); curl_close($ch); // parse the response and check for authentication success/failure $theResponse = $this->parse_response($tmp); switch($theResponse[&quot;code&quot;]) { case &quot;302&quot;: // success break; default: $msg = &quot;Unrecognized response status code (not 302) on authenticated request to Google Calendar.\n&quot;; $msg .= &quot;Status code: &quot;.$theResponse[&quot;code&quot;].&quot;\n&quot;; $msg .= &quot;Body: &quot;.$theResponse[&quot;body&quot;].&quot;\n&quot;; failWithError($msg); }
  • 33. Login Sample Code (Part 3 of 3) // extract session id $ret = $theResponse[&quot;header&quot;][&quot;Location&quot;]; if(ereg(&quot;([^\?]*).*gsessionid=(.*)\n&quot;,$ret,$regs)) { $this->sessionID = $regs[2]; // authentication token $this->feedURL = $regs[1]; // feed URL } else { failWithError(&quot;Session ID not found in response from Google Calendar.&quot;); } debug(&quot;Connected to Google and authenticated.&quot;); } ?>