SlideShare a Scribd company logo
1 of 31
Download to read offline
Building towards a Salesforce Composite API
Jay Hurst
Director, Product Management
jhurst@salesforce.com
@extraidea
Abhinav Chadda
SMTS – Enterprise API
achadda@salesforce.com
@abhinavchadda
Safe Harbor
Safe harbor statement under the Private Securities Litigation Reform Act of 1995:
This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such uncertainties materialize
or if any of the assumptions proves incorrect, the results of salesforce.com, inc. 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 product or service availability, 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 developing and delivering new functionality for
our service, new products and services, our new business model, our past operating losses, possible fluctuations in our operating results and rate
of growth, interruptions or delays in our Web hosting, breach of our security measures, the outcome of any litigation, risks associated with
completed and any possible mergers and acquisitions, the immature market in which we operate, our relatively limited operating history, our ability
to expand, retain, and motivate our employees and manage our growth, new releases of our service and successful customer deployment, our
limited history reselling non-salesforce.com products, and utilization and selling to larger enterprise customers. Further information on potential
factors that could affect the financial results of salesforce.com, inc. is included in our annual report on Form 10-K for the most recent fiscal year
and in our quarterly report on Form 10-Q for the most recent fiscal quarter. These documents and others containing important disclosures are
available on the SEC Filings section of the Investor Information section of our Web site.
Any unreleased services or features referenced in this or other presentations, 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 the 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.
Jay Hurst
Director - Product Management, Salesforce
jhurst@salesforce.com
@extraidea
Abhinav Chadda
SMTS – Enterprise API
achadda@salesforce.com
@abhinavchadda
Building Streamlined APIs
Many customers are facing a set of challenges around building
client applications against the Salesforce REST API.
Raise your hand if you:
• Have used the REST API in Salesforce
• Have tried to build a client application using the REST API but have
faced issues with the number of round trips
• Have a need to design efficient APIs and want to reduce the number of
API round trips to the Salesforce server
What is the Enterprise API?
Salesforce1 Enterprise APIs
The Salesforce “Data” APIs
• Allow programmatic access to your salesforce data through various API technologies
• Many different APIs to suit your specific needs
Rest
APIs
Access and manipulate data with a RESTful pattern with JSON and XML
payloads
Soap
APIs
Access and manipulate data using SOAP.
Streaming
APIs
Subscribe to updates using a Bayeux / CometD HTTP Streaming API.
Bulk
APIs
Perform Bulk Queries and Inserts/Updates Asynchronously.
Comprehensive Suite of APIs and Toolkits
Web Service
Endpoint
Web Service
Endpoint
Apex
WS/REST
Outbound
Messaging
Business Logic
Sync Bulk API
Streaming
API Topic
CRUD
Data
Bayeux
Client
Applications and Middleware
Java SDK Ruby gem
PHP
Toolkit
Mobile
SDK
Mobile
SDK
3rd Party
Adapters
Apex
Callouts
What is a Composite API?
What is a Composite API?
• An API that is built by combining existing API functions
• A single request to an API can perform multiple functions
• Orchestration of the composite APIs allow developer
controlled business logic and functionality
• Responses from one API method can be directed as inputs into another method
• Multiple APIs can be used in a single call to improve performance
• Compositions are key for designing efficient API for use in
mobile development
Salesforce Composite Resources
Batching REST Resource
• Resource which accepts multiple REST calls to execute
• A single Batch REST request can execute up to 25 sub-requests
• Sub-requests contains the resource (URI) and the method to execute
• Each sub-request is an unrelated API call
• Sub-requests are executed serially, in order, and as the running user
• As each sub-request completes, the call is committed
• Has one optional parameter
• haltOnError - indicates if the batch should stop on any error that is encountered
• The response will be a JSON object of responses from the sub
requests
Traditional REST API Diagram
Batch REST API Diagram
Example Batch Request
{"batchRequests" : [
{"method" : "POST",
"url" : "v34.0/sobjects/account/",
"richInput" : {"Name" : "NewName", "Industry" : "Tech"}},
{"method" : "GET",
"url" : "v34.0/sobjects/account/describe/"},
{"method" : "GET",
"url" : "v34.0/query?q=select id, name, industry from account order by
createddate desc limit 10"
}]
}
Example Successful Batch Response
{"hasErrors" : false,
"results" : [{
"statusCode" : 201,
"result": {"id" : "001B0000003xiArIAI”, "success" : true, "errors" : [ ]}
}, {
"statusCode" : 200,
"result": {"actionOverrides" : [ ], "activateable" : false, ...,
"undeletable" : true, "updateable" : true}
},{
"statusCode" : 200,
"result": {"totalSize" : 10, "done" : true,
"records" : [{
"attributes" : {"type" : "Account”, "url" : "/services/data/v34.0/
sobjects/Account/001B0000003xiArIAI”},
...
}]
}
}]
}
Example Unsuccessful Batch Response
{"hasErrors" : true,
"results" : [{
"result" : [{"message" : "Required fields are missing: [Name]”,"errorCode" :
"REQUIRED_FIELD_MISSING",
"fields" : [ "Name" ]}],
"statusCode" : 400
},{
"result”:[{"message”:"Cannot access this resource in a batch request”,
"errorCode”: "INVALID_BATCH_REQUEST”}],
"statusCode" : 400
},{
"result" : [{
"message" : "nselect ids, name, industry from accountn^nERROR at Row:
1:Column:8nNo such column 'ids' on entity 'Account'. If you are
attempting to use a custom field, be sure to append the
'__c' after the custom field name. Please reference your WSDL or
the describe call for the appropriate names.”, "errorCode" :
"INVALID_FIELD"}],
"statusCode" : 400
}]}
Batching REST API Demo
TreeSave REST Resource
• Creates SObject trees with the same top level object type
• A recursive data structure that contains a root record, its data, and its
child records represented as other sObject trees
• The REST resource manages all of the ID creations and mapping
• Create an Account, Contact, Opportunity, and Note in a single call
• The request can contain the following:
• Up to a total of 200 records across all trees
• Up to five records of different types
• SObject trees up to five levels deep
• You can create 200 top level records, by only providing the top level
TreeSave REST Resource (cont.)
• The Developer provides the record relations via a reference ID
• ReferenceId is used to link related records and to return errors
• Only Insert is supported
• Triggers, processes, and workflow rules fire separately for each of the
object levels
• EX – All triggers fire for all the top level records, then all fire for the second
level records, then third, etc…
• All records are rolled back on any error
• Error will indicate which referenceId had the error so that the developer
can take the appropriate action
Example TreeSave Request
{"records" :[
{"attributes" : {"type" : "Account", "referenceId" : "ref1"},
"name" : "SampleAccount”, "phone" : "1234567890”, "website" :
"www.salesforce.com", "numberOfEmployees”: "100”, "type" : "Analyst”,
"industry" : "Banking",
"Contacts" : {
"records" : [
{"attributes" : {"type" : "Contact", "referenceId" : "ref2"},
"lastname" : "Smith”, "title" : "President”, "email" :
"sample@salesforce.com" },
{"attributes" : {"type" : "Contact", "referenceId" : "ref3"},
"lastname" : "Evans”, "title" : "Vice President”, "email" :
"sample@salesforce.com”}]
}},
{"attributes" : {"type" : "Account", "referenceId" : "ref4"},
"name”: "SampleAccount2”, "phone”: "1234567890”, "website" :
"www.salesforce2.com", "numberOfEmployees”: "100”, "type" : "Analyst”,
"industry" : "Banking”}]
}
Example Successful TreeSave Response
{
"hasErrors" : false,
"results" : [ {
"referenceId" : "ref1",
"id" : "001B0000003xiAwIAI"
}, {
"referenceId" : "ref4",
"id" : "001B0000003xiAxIAI"
}, {
"referenceId" : "ref2",
"id" : "003B0000003l3L5IAI"
}, {
"referenceId" : "ref3",
"id" : "003B0000003l3L6IAI"
} ]
}
Example Unsuccessful TreeSave Response
{
"hasErrors" : true,
"results" : [ {
"referenceId" : "ref4",
"errors" : [ {
"statusCode" : "REQUIRED_FIELD_MISSING",
"message" : "Required fields are missing: [Name]",
"fields" : [ "Name" ]
} ]
} ]
}
TreeSave REST API Demo
Building a Composite API on Salesforce
• There are a number of existing Composite resources
• The Batching REST resource allows for the sending of multiple REST
calls in a single round trip
• The calls are unrelated, simply reduces round trips
• The TreeSave REST resource allows creation of multiple records in a
single call
• Limited to insert and all-or-none saves
• Apex REST can be used to build custom logic
• Requires complete design by the developer
Building a Composite API on Salesforce (cont.)
• A new API which will be a combination of Batch and TreeSave
• Outputs from one API call can be Inputs into another
• You can use the developer assigned Reference Id
• Ex - @Account1.id can be used in a later query, as a reference field, in an action, etc
• Friendly URLs will assist in navigating the resource hierarchy
• Ability to crawl the resource tree easily
• Ex - /services/data/v36.0/sobjects/Account/001X00000000123/Contacts will give you a list
of all Contacts on a the designated Account
• This will allow multiple CRUD operations to collections
• This will allow a simple layer of orchestration to the REST API
Composite API Demo
What did we Learn?
What is the Enterprise API
Existing Features that begin to support composite actions
• Batching API
• TreeSave API
• Composite API
Demos of existing resources
• Showed an example of Batching API
• Showed an example of TreeSave API
• Demo of potential Composite API
Q&A
Share Your Feedback, and Win a GoPro!
3
Earn a GoPro prize entry for
each completed survey
Tap the bell to take a
survey2Enroll in a session1
Thank you

More Related Content

What's hot

Demystify Salesforce Bulk API
Demystify Salesforce Bulk APIDemystify Salesforce Bulk API
Demystify Salesforce Bulk APIDhanik Sahni
 
Integrating with salesforce using platform events
Integrating with salesforce using platform eventsIntegrating with salesforce using platform events
Integrating with salesforce using platform eventsAmit Chaudhary
 
Sample Gallery: Reference Code and Best Practices for Salesforce Developers
Sample Gallery: Reference Code and Best Practices for Salesforce DevelopersSample Gallery: Reference Code and Best Practices for Salesforce Developers
Sample Gallery: Reference Code and Best Practices for Salesforce DevelopersSalesforce Developers
 
Reactive clean architecture
Reactive clean architectureReactive clean architecture
Reactive clean architectureViktor Nyblom
 
Design Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIsDesign Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIsStormpath
 
All About Test Class in #Salesforce
All About Test Class in #SalesforceAll About Test Class in #Salesforce
All About Test Class in #SalesforceAmit Singh
 
salesforce triggers interview questions and answers
salesforce triggers interview questions and answerssalesforce triggers interview questions and answers
salesforce triggers interview questions and answersbhanuadmob
 
Lightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An IntroductionLightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An IntroductionSalesforce Developers
 
Build Reliable Asynchronous Code with Queueable Apex
Build Reliable Asynchronous Code with Queueable ApexBuild Reliable Asynchronous Code with Queueable Apex
Build Reliable Asynchronous Code with Queueable ApexSalesforce Developers
 
Overview of API Management Architectures
Overview of API Management ArchitecturesOverview of API Management Architectures
Overview of API Management ArchitecturesNordic APIs
 
Designing APIs and Microservices Using Domain-Driven Design
Designing APIs and Microservices Using Domain-Driven DesignDesigning APIs and Microservices Using Domain-Driven Design
Designing APIs and Microservices Using Domain-Driven DesignLaunchAny
 
Introduction to External Objects and the OData Connector
Introduction to External Objects and the OData ConnectorIntroduction to External Objects and the OData Connector
Introduction to External Objects and the OData ConnectorSalesforce Developers
 
Understanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple StepsUnderstanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple StepsTessa Mero
 
ORDS - Oracle REST Data Services
ORDS - Oracle REST Data ServicesORDS - Oracle REST Data Services
ORDS - Oracle REST Data ServicesJustin Michael Raj
 
Apex Enterprise Patterns: Building Strong Foundations
Apex Enterprise Patterns: Building Strong FoundationsApex Enterprise Patterns: Building Strong Foundations
Apex Enterprise Patterns: Building Strong FoundationsSalesforce Developers
 
Java EE vs Spring Framework
Java  EE vs Spring Framework Java  EE vs Spring Framework
Java EE vs Spring Framework Rohit Kelapure
 
Dive Deep into Apex: Advanced Apex!
Dive Deep into Apex: Advanced Apex! Dive Deep into Apex: Advanced Apex!
Dive Deep into Apex: Advanced Apex! Salesforce Developers
 

What's hot (20)

Demystify Salesforce Bulk API
Demystify Salesforce Bulk APIDemystify Salesforce Bulk API
Demystify Salesforce Bulk API
 
Integrating with salesforce using platform events
Integrating with salesforce using platform eventsIntegrating with salesforce using platform events
Integrating with salesforce using platform events
 
Sample Gallery: Reference Code and Best Practices for Salesforce Developers
Sample Gallery: Reference Code and Best Practices for Salesforce DevelopersSample Gallery: Reference Code and Best Practices for Salesforce Developers
Sample Gallery: Reference Code and Best Practices for Salesforce Developers
 
Reactive clean architecture
Reactive clean architectureReactive clean architecture
Reactive clean architecture
 
Introduction to React JS
Introduction to React JSIntroduction to React JS
Introduction to React JS
 
Design Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIsDesign Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIs
 
All About Test Class in #Salesforce
All About Test Class in #SalesforceAll About Test Class in #Salesforce
All About Test Class in #Salesforce
 
salesforce triggers interview questions and answers
salesforce triggers interview questions and answerssalesforce triggers interview questions and answers
salesforce triggers interview questions and answers
 
Rest API
Rest APIRest API
Rest API
 
Lightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An IntroductionLightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An Introduction
 
Build Reliable Asynchronous Code with Queueable Apex
Build Reliable Asynchronous Code with Queueable ApexBuild Reliable Asynchronous Code with Queueable Apex
Build Reliable Asynchronous Code with Queueable Apex
 
Overview of API Management Architectures
Overview of API Management ArchitecturesOverview of API Management Architectures
Overview of API Management Architectures
 
Designing APIs and Microservices Using Domain-Driven Design
Designing APIs and Microservices Using Domain-Driven DesignDesigning APIs and Microservices Using Domain-Driven Design
Designing APIs and Microservices Using Domain-Driven Design
 
Introduction to External Objects and the OData Connector
Introduction to External Objects and the OData ConnectorIntroduction to External Objects and the OData Connector
Introduction to External Objects and the OData Connector
 
Understanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple StepsUnderstanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple Steps
 
An Introduction To REST API
An Introduction To REST APIAn Introduction To REST API
An Introduction To REST API
 
ORDS - Oracle REST Data Services
ORDS - Oracle REST Data ServicesORDS - Oracle REST Data Services
ORDS - Oracle REST Data Services
 
Apex Enterprise Patterns: Building Strong Foundations
Apex Enterprise Patterns: Building Strong FoundationsApex Enterprise Patterns: Building Strong Foundations
Apex Enterprise Patterns: Building Strong Foundations
 
Java EE vs Spring Framework
Java  EE vs Spring Framework Java  EE vs Spring Framework
Java EE vs Spring Framework
 
Dive Deep into Apex: Advanced Apex!
Dive Deep into Apex: Advanced Apex! Dive Deep into Apex: Advanced Apex!
Dive Deep into Apex: Advanced Apex!
 

Viewers also liked

New Powerful API Enhancements for Summer '15
New Powerful API Enhancements for Summer '15 New Powerful API Enhancements for Summer '15
New Powerful API Enhancements for Summer '15 Salesforce Developers
 
Solving Complex Data Load Challenges
Solving Complex Data Load ChallengesSolving Complex Data Load Challenges
Solving Complex Data Load ChallengesSunand P
 
Salesforce1 Platform for programmers
Salesforce1 Platform for programmersSalesforce1 Platform for programmers
Salesforce1 Platform for programmersSalesforce Developers
 
2016 ISBG - Salesforce App Cloud and Domino - same same, but different
2016 ISBG - Salesforce App Cloud and Domino - same same, but different2016 ISBG - Salesforce App Cloud and Domino - same same, but different
2016 ISBG - Salesforce App Cloud and Domino - same same, but differentRené Winkelmeyer
 
2016 ISBG - Enterprise integration done right with Salesforce Lightning, IBM ...
2016 ISBG - Enterprise integration done right with Salesforce Lightning, IBM ...2016 ISBG - Enterprise integration done right with Salesforce Lightning, IBM ...
2016 ISBG - Enterprise integration done right with Salesforce Lightning, IBM ...René Winkelmeyer
 
Integrating with salesforce
Integrating with salesforceIntegrating with salesforce
Integrating with salesforceMark Adcock
 
Integrating The Cloud - How to integrate Salesforce
Integrating The Cloud  - How to integrate SalesforceIntegrating The Cloud  - How to integrate Salesforce
Integrating The Cloud - How to integrate SalesforceRoy Gilad
 
Salesforce API Series: Release Management with the Metadata API webinar
Salesforce API Series: Release Management with the Metadata API webinarSalesforce API Series: Release Management with the Metadata API webinar
Salesforce API Series: Release Management with the Metadata API webinarSalesforce Developers
 
Consulta a la fuerza de ventas - Pronósticos de demanda
Consulta a la fuerza de ventas - Pronósticos de demandaConsulta a la fuerza de ventas - Pronósticos de demanda
Consulta a la fuerza de ventas - Pronósticos de demandaIngenio Empresa
 
Salesforce API Series: Integrating Applications with Force.com Webinar
Salesforce API Series: Integrating Applications with Force.com WebinarSalesforce API Series: Integrating Applications with Force.com Webinar
Salesforce API Series: Integrating Applications with Force.com WebinarSalesforce Developers
 
Introducing the Salesforce platform
Introducing the Salesforce platformIntroducing the Salesforce platform
Introducing the Salesforce platformJohn Stevenson
 
Jurado de opinión ejecutiva - Pronóstico de demanda
Jurado de opinión ejecutiva - Pronóstico de demandaJurado de opinión ejecutiva - Pronóstico de demanda
Jurado de opinión ejecutiva - Pronóstico de demandaIngenio Empresa
 
Métodos para pronosticar las ventas y desarrollar el potencial de mercado
Métodos para pronosticar las ventas y desarrollar el potencial de mercadoMétodos para pronosticar las ventas y desarrollar el potencial de mercado
Métodos para pronosticar las ventas y desarrollar el potencial de mercadoAlfonzo Campos
 

Viewers also liked (17)

New Powerful API Enhancements for Summer '15
New Powerful API Enhancements for Summer '15 New Powerful API Enhancements for Summer '15
New Powerful API Enhancements for Summer '15
 
Solving Complex Data Load Challenges
Solving Complex Data Load ChallengesSolving Complex Data Load Challenges
Solving Complex Data Load Challenges
 
Salesforce REST API
Salesforce  REST API Salesforce  REST API
Salesforce REST API
 
Sales forecasting
Sales forecastingSales forecasting
Sales forecasting
 
Salesforce1 Platform for programmers
Salesforce1 Platform for programmersSalesforce1 Platform for programmers
Salesforce1 Platform for programmers
 
2016 ISBG - Salesforce App Cloud and Domino - same same, but different
2016 ISBG - Salesforce App Cloud and Domino - same same, but different2016 ISBG - Salesforce App Cloud and Domino - same same, but different
2016 ISBG - Salesforce App Cloud and Domino - same same, but different
 
2016 ISBG - Enterprise integration done right with Salesforce Lightning, IBM ...
2016 ISBG - Enterprise integration done right with Salesforce Lightning, IBM ...2016 ISBG - Enterprise integration done right with Salesforce Lightning, IBM ...
2016 ISBG - Enterprise integration done right with Salesforce Lightning, IBM ...
 
Integrating with salesforce
Integrating with salesforceIntegrating with salesforce
Integrating with salesforce
 
Integrating The Cloud - How to integrate Salesforce
Integrating The Cloud  - How to integrate SalesforceIntegrating The Cloud  - How to integrate Salesforce
Integrating The Cloud - How to integrate Salesforce
 
Salesforce API Series: Release Management with the Metadata API webinar
Salesforce API Series: Release Management with the Metadata API webinarSalesforce API Series: Release Management with the Metadata API webinar
Salesforce API Series: Release Management with the Metadata API webinar
 
Consulta a la fuerza de ventas - Pronósticos de demanda
Consulta a la fuerza de ventas - Pronósticos de demandaConsulta a la fuerza de ventas - Pronósticos de demanda
Consulta a la fuerza de ventas - Pronósticos de demanda
 
Salesforce API Series: Integrating Applications with Force.com Webinar
Salesforce API Series: Integrating Applications with Force.com WebinarSalesforce API Series: Integrating Applications with Force.com Webinar
Salesforce API Series: Integrating Applications with Force.com Webinar
 
Introducing the Salesforce platform
Introducing the Salesforce platformIntroducing the Salesforce platform
Introducing the Salesforce platform
 
Jurado de opinión ejecutiva - Pronóstico de demanda
Jurado de opinión ejecutiva - Pronóstico de demandaJurado de opinión ejecutiva - Pronóstico de demanda
Jurado de opinión ejecutiva - Pronóstico de demanda
 
Métodos para pronosticar las ventas y desarrollar el potencial de mercado
Métodos para pronosticar las ventas y desarrollar el potencial de mercadoMétodos para pronosticar las ventas y desarrollar el potencial de mercado
Métodos para pronosticar las ventas y desarrollar el potencial de mercado
 
Pronostico de venta
Pronostico de ventaPronostico de venta
Pronostico de venta
 
Estructrtura de la fuerza de ventas.
Estructrtura de la fuerza de ventas.Estructrtura de la fuerza de ventas.
Estructrtura de la fuerza de ventas.
 

Similar to Building towards a Composite API Framework in Salesforce

Boxcars and Cabooses: When one more XHR is too much - Peter Chittum - Codemot...
Boxcars and Cabooses: When one more XHR is too much - Peter Chittum - Codemot...Boxcars and Cabooses: When one more XHR is too much - Peter Chittum - Codemot...
Boxcars and Cabooses: When one more XHR is too much - Peter Chittum - Codemot...Codemotion
 
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 MuchPeter Chittum
 
Data.com APIs in Action ? Bringing Data to Life in Salesforce
Data.com APIs in Action ? Bringing Data to Life in SalesforceData.com APIs in Action ? Bringing Data to Life in Salesforce
Data.com APIs in Action ? Bringing Data to Life in SalesforceSalesforce Developers
 
February 2020 Salesforce API Review
February 2020 Salesforce API ReviewFebruary 2020 Salesforce API Review
February 2020 Salesforce API ReviewLydon Bergin
 
All Aboard the Boxcar! Going Beyond the Basics of REST
All Aboard the Boxcar! Going Beyond the Basics of RESTAll Aboard the Boxcar! Going Beyond the Basics of REST
All Aboard the Boxcar! Going Beyond the Basics of RESTPat Patterson
 
Salesforce Campus Tour - Developer Intro
Salesforce Campus Tour - Developer IntroSalesforce Campus Tour - Developer Intro
Salesforce Campus Tour - Developer IntroJames Ward
 
How We Built AppExchange and our Communities on the App Cloud (Platform)
How We Built AppExchange and our Communities on the App Cloud (Platform)How We Built AppExchange and our Communities on the App Cloud (Platform)
How We Built AppExchange and our Communities on the App Cloud (Platform)Dreamforce
 
[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 ChittumBeMyApp
 
Lightning web components episode 2- work with salesforce data
Lightning web components   episode 2- work with salesforce dataLightning web components   episode 2- work with salesforce data
Lightning web components episode 2- work with salesforce dataSalesforce Developers
 
Intro to AppExchange - Building Composite Apps
Intro to AppExchange - Building Composite AppsIntro to AppExchange - Building Composite Apps
Intro to AppExchange - Building Composite Appsdreamforce2006
 
Our API Evolution: From Metadata to Tooling API for Building Incredible Apps
Our API Evolution: From Metadata to Tooling API for Building Incredible AppsOur API Evolution: From Metadata to Tooling API for Building Incredible Apps
Our API Evolution: From Metadata to Tooling API for Building Incredible AppsDreamforce
 
Design Patterns Every ISV Needs to Know (October 15, 2014)
Design Patterns Every ISV Needs to Know (October 15, 2014)Design Patterns Every ISV Needs to Know (October 15, 2014)
Design Patterns Every ISV Needs to Know (October 15, 2014)Salesforce Partners
 
Mbf2 salesforce webinar 2
Mbf2 salesforce webinar 2Mbf2 salesforce webinar 2
Mbf2 salesforce webinar 2BeMyApp
 
OData: A Standard API for Data Access
OData: A Standard API for Data AccessOData: A Standard API for Data Access
OData: A Standard API for Data AccessPat Patterson
 
Salesforce Campus Tour - Developer Advanced
Salesforce Campus Tour - Developer AdvancedSalesforce Campus Tour - Developer Advanced
Salesforce Campus Tour - Developer AdvancedJames Ward
 
Enterprise API New Features and Roadmap
Enterprise API New Features and RoadmapEnterprise API New Features and Roadmap
Enterprise API New Features and RoadmapSalesforce Developers
 
Hca advanced developer workshop
Hca advanced developer workshopHca advanced developer workshop
Hca advanced developer workshopDavid Scruggs
 

Similar to Building towards a Composite API Framework in Salesforce (20)

Boxcars and Cabooses: When one more XHR is too much - Peter Chittum - Codemot...
Boxcars and Cabooses: When one more XHR is too much - Peter Chittum - Codemot...Boxcars and Cabooses: When one more XHR is too much - Peter Chittum - Codemot...
Boxcars and Cabooses: When one more XHR is too much - Peter Chittum - Codemot...
 
Introduction to Data.com APIs
Introduction to Data.com APIsIntroduction to Data.com APIs
Introduction to Data.com APIs
 
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
 
Data.com APIs in Action ? Bringing Data to Life in Salesforce
Data.com APIs in Action ? Bringing Data to Life in SalesforceData.com APIs in Action ? Bringing Data to Life in Salesforce
Data.com APIs in Action ? Bringing Data to Life in Salesforce
 
Using the Google SOAP API
Using the Google SOAP APIUsing the Google SOAP API
Using the Google SOAP API
 
February 2020 Salesforce API Review
February 2020 Salesforce API ReviewFebruary 2020 Salesforce API Review
February 2020 Salesforce API Review
 
All Aboard the Boxcar! Going Beyond the Basics of REST
All Aboard the Boxcar! Going Beyond the Basics of RESTAll Aboard the Boxcar! Going Beyond the Basics of REST
All Aboard the Boxcar! Going Beyond the Basics of REST
 
Salesforce Campus Tour - Developer Intro
Salesforce Campus Tour - Developer IntroSalesforce Campus Tour - Developer Intro
Salesforce Campus Tour - Developer Intro
 
How We Built AppExchange and our Communities on the App Cloud (Platform)
How We Built AppExchange and our Communities on the App Cloud (Platform)How We Built AppExchange and our Communities on the App Cloud (Platform)
How We Built AppExchange and our Communities on the App Cloud (Platform)
 
[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
 
Lightning web components episode 2- work with salesforce data
Lightning web components   episode 2- work with salesforce dataLightning web components   episode 2- work with salesforce data
Lightning web components episode 2- work with salesforce data
 
Intro to AppExchange - Building Composite Apps
Intro to AppExchange - Building Composite AppsIntro to AppExchange - Building Composite Apps
Intro to AppExchange - Building Composite Apps
 
Introduction to Apex for Developers
Introduction to Apex for DevelopersIntroduction to Apex for Developers
Introduction to Apex for Developers
 
Our API Evolution: From Metadata to Tooling API for Building Incredible Apps
Our API Evolution: From Metadata to Tooling API for Building Incredible AppsOur API Evolution: From Metadata to Tooling API for Building Incredible Apps
Our API Evolution: From Metadata to Tooling API for Building Incredible Apps
 
Design Patterns Every ISV Needs to Know (October 15, 2014)
Design Patterns Every ISV Needs to Know (October 15, 2014)Design Patterns Every ISV Needs to Know (October 15, 2014)
Design Patterns Every ISV Needs to Know (October 15, 2014)
 
Mbf2 salesforce webinar 2
Mbf2 salesforce webinar 2Mbf2 salesforce webinar 2
Mbf2 salesforce webinar 2
 
OData: A Standard API for Data Access
OData: A Standard API for Data AccessOData: A Standard API for Data Access
OData: A Standard API for Data Access
 
Salesforce Campus Tour - Developer Advanced
Salesforce Campus Tour - Developer AdvancedSalesforce Campus Tour - Developer Advanced
Salesforce Campus Tour - Developer Advanced
 
Enterprise API New Features and Roadmap
Enterprise API New Features and RoadmapEnterprise API New Features and Roadmap
Enterprise API New Features and Roadmap
 
Hca advanced developer workshop
Hca advanced developer workshopHca advanced developer workshop
Hca advanced developer workshop
 

More from Salesforce Developers

Maximizing Salesforce Lightning Experience and Lightning Component Performance
Maximizing Salesforce Lightning Experience and Lightning Component PerformanceMaximizing Salesforce Lightning Experience and Lightning Component Performance
Maximizing Salesforce Lightning Experience and Lightning Component PerformanceSalesforce Developers
 
Local development with Open Source Base Components
Local development with Open Source Base ComponentsLocal development with Open Source Base Components
Local development with Open Source Base ComponentsSalesforce Developers
 
TrailheaDX India : Developer Highlights
TrailheaDX India : Developer HighlightsTrailheaDX India : Developer Highlights
TrailheaDX India : Developer HighlightsSalesforce Developers
 
Why developers shouldn’t miss TrailheaDX India
Why developers shouldn’t miss TrailheaDX IndiaWhy developers shouldn’t miss TrailheaDX India
Why developers shouldn’t miss TrailheaDX IndiaSalesforce Developers
 
CodeLive: Build Lightning Web Components faster with Local Development
CodeLive: Build Lightning Web Components faster with Local DevelopmentCodeLive: Build Lightning Web Components faster with Local Development
CodeLive: Build Lightning Web Components faster with Local DevelopmentSalesforce Developers
 
CodeLive: Converting Aura Components to Lightning Web Components
CodeLive: Converting Aura Components to Lightning Web ComponentsCodeLive: Converting Aura Components to Lightning Web Components
CodeLive: Converting Aura Components to Lightning Web ComponentsSalesforce Developers
 
Enterprise-grade UI with open source Lightning Web Components
Enterprise-grade UI with open source Lightning Web ComponentsEnterprise-grade UI with open source Lightning Web Components
Enterprise-grade UI with open source Lightning Web ComponentsSalesforce Developers
 
TrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer HighlightsTrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer HighlightsSalesforce Developers
 
Lightning web components - Episode 4 : Security and Testing
Lightning web components  - Episode 4 : Security and TestingLightning web components  - Episode 4 : Security and Testing
Lightning web components - Episode 4 : Security and TestingSalesforce Developers
 
LWC Episode 3- Component Communication and Aura Interoperability
LWC Episode 3- Component Communication and Aura InteroperabilityLWC Episode 3- Component Communication and Aura Interoperability
LWC Episode 3- Component Communication and Aura InteroperabilitySalesforce Developers
 
Migrating CPQ to Advanced Calculator and JSQCP
Migrating CPQ to Advanced Calculator and JSQCPMigrating CPQ to Advanced Calculator and JSQCP
Migrating CPQ to Advanced Calculator and JSQCPSalesforce Developers
 
Scale with Large Data Volumes and Big Objects in Salesforce
Scale with Large Data Volumes and Big Objects in SalesforceScale with Large Data Volumes and Big Objects in Salesforce
Scale with Large Data Volumes and Big Objects in SalesforceSalesforce Developers
 
Replicate Salesforce Data in Real Time with Change Data Capture
Replicate Salesforce Data in Real Time with Change Data CaptureReplicate Salesforce Data in Real Time with Change Data Capture
Replicate Salesforce Data in Real Time with Change Data CaptureSalesforce Developers
 
Modern Development with Salesforce DX
Modern Development with Salesforce DXModern Development with Salesforce DX
Modern Development with Salesforce DXSalesforce Developers
 
Integrate CMS Content Into Lightning Communities with CMS Connect
Integrate CMS Content Into Lightning Communities with CMS ConnectIntegrate CMS Content Into Lightning Communities with CMS Connect
Integrate CMS Content Into Lightning Communities with CMS ConnectSalesforce Developers
 
Modern App Dev: Modular Development Strategies
Modern App Dev: Modular Development StrategiesModern App Dev: Modular Development Strategies
Modern App Dev: Modular Development StrategiesSalesforce Developers
 

More from Salesforce Developers (20)

Maximizing Salesforce Lightning Experience and Lightning Component Performance
Maximizing Salesforce Lightning Experience and Lightning Component PerformanceMaximizing Salesforce Lightning Experience and Lightning Component Performance
Maximizing Salesforce Lightning Experience and Lightning Component Performance
 
Local development with Open Source Base Components
Local development with Open Source Base ComponentsLocal development with Open Source Base Components
Local development with Open Source Base Components
 
TrailheaDX India : Developer Highlights
TrailheaDX India : Developer HighlightsTrailheaDX India : Developer Highlights
TrailheaDX India : Developer Highlights
 
Why developers shouldn’t miss TrailheaDX India
Why developers shouldn’t miss TrailheaDX IndiaWhy developers shouldn’t miss TrailheaDX India
Why developers shouldn’t miss TrailheaDX India
 
CodeLive: Build Lightning Web Components faster with Local Development
CodeLive: Build Lightning Web Components faster with Local DevelopmentCodeLive: Build Lightning Web Components faster with Local Development
CodeLive: Build Lightning Web Components faster with Local Development
 
CodeLive: Converting Aura Components to Lightning Web Components
CodeLive: Converting Aura Components to Lightning Web ComponentsCodeLive: Converting Aura Components to Lightning Web Components
CodeLive: Converting Aura Components to Lightning Web Components
 
Enterprise-grade UI with open source Lightning Web Components
Enterprise-grade UI with open source Lightning Web ComponentsEnterprise-grade UI with open source Lightning Web Components
Enterprise-grade UI with open source Lightning Web Components
 
TrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer HighlightsTrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer Highlights
 
Live coding with LWC
Live coding with LWCLive coding with LWC
Live coding with LWC
 
Lightning web components - Episode 4 : Security and Testing
Lightning web components  - Episode 4 : Security and TestingLightning web components  - Episode 4 : Security and Testing
Lightning web components - Episode 4 : Security and Testing
 
LWC Episode 3- Component Communication and Aura Interoperability
LWC Episode 3- Component Communication and Aura InteroperabilityLWC Episode 3- Component Communication and Aura Interoperability
LWC Episode 3- Component Communication and Aura Interoperability
 
Migrating CPQ to Advanced Calculator and JSQCP
Migrating CPQ to Advanced Calculator and JSQCPMigrating CPQ to Advanced Calculator and JSQCP
Migrating CPQ to Advanced Calculator and JSQCP
 
Scale with Large Data Volumes and Big Objects in Salesforce
Scale with Large Data Volumes and Big Objects in SalesforceScale with Large Data Volumes and Big Objects in Salesforce
Scale with Large Data Volumes and Big Objects in Salesforce
 
Replicate Salesforce Data in Real Time with Change Data Capture
Replicate Salesforce Data in Real Time with Change Data CaptureReplicate Salesforce Data in Real Time with Change Data Capture
Replicate Salesforce Data in Real Time with Change Data Capture
 
Modern Development with Salesforce DX
Modern Development with Salesforce DXModern Development with Salesforce DX
Modern Development with Salesforce DX
 
Get Into Lightning Flow Development
Get Into Lightning Flow DevelopmentGet Into Lightning Flow Development
Get Into Lightning Flow Development
 
Integrate CMS Content Into Lightning Communities with CMS Connect
Integrate CMS Content Into Lightning Communities with CMS ConnectIntegrate CMS Content Into Lightning Communities with CMS Connect
Integrate CMS Content Into Lightning Communities with CMS Connect
 
Introduction to MuleSoft
Introduction to MuleSoftIntroduction to MuleSoft
Introduction to MuleSoft
 
Modern App Dev: Modular Development Strategies
Modern App Dev: Modular Development StrategiesModern App Dev: Modular Development Strategies
Modern App Dev: Modular Development Strategies
 
Dreamforce Developer Recap
Dreamforce Developer RecapDreamforce Developer Recap
Dreamforce Developer Recap
 

Recently uploaded

APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 

Recently uploaded (20)

APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 

Building towards a Composite API Framework in Salesforce

  • 1. Building towards a Salesforce Composite API Jay Hurst Director, Product Management jhurst@salesforce.com @extraidea Abhinav Chadda SMTS – Enterprise API achadda@salesforce.com @abhinavchadda
  • 2. Safe Harbor Safe harbor statement under the Private Securities Litigation Reform Act of 1995: This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such uncertainties materialize or if any of the assumptions proves incorrect, the results of salesforce.com, inc. 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 product or service availability, 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 developing and delivering new functionality for our service, new products and services, our new business model, our past operating losses, possible fluctuations in our operating results and rate of growth, interruptions or delays in our Web hosting, breach of our security measures, the outcome of any litigation, risks associated with completed and any possible mergers and acquisitions, the immature market in which we operate, our relatively limited operating history, our ability to expand, retain, and motivate our employees and manage our growth, new releases of our service and successful customer deployment, our limited history reselling non-salesforce.com products, and utilization and selling to larger enterprise customers. Further information on potential factors that could affect the financial results of salesforce.com, inc. is included in our annual report on Form 10-K for the most recent fiscal year and in our quarterly report on Form 10-Q for the most recent fiscal quarter. These documents and others containing important disclosures are available on the SEC Filings section of the Investor Information section of our Web site. Any unreleased services or features referenced in this or other presentations, 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 the 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.
  • 3. Jay Hurst Director - Product Management, Salesforce jhurst@salesforce.com @extraidea
  • 4. Abhinav Chadda SMTS – Enterprise API achadda@salesforce.com @abhinavchadda
  • 5. Building Streamlined APIs Many customers are facing a set of challenges around building client applications against the Salesforce REST API. Raise your hand if you: • Have used the REST API in Salesforce • Have tried to build a client application using the REST API but have faced issues with the number of round trips • Have a need to design efficient APIs and want to reduce the number of API round trips to the Salesforce server
  • 6. What is the Enterprise API?
  • 7. Salesforce1 Enterprise APIs The Salesforce “Data” APIs • Allow programmatic access to your salesforce data through various API technologies • Many different APIs to suit your specific needs Rest APIs Access and manipulate data with a RESTful pattern with JSON and XML payloads Soap APIs Access and manipulate data using SOAP. Streaming APIs Subscribe to updates using a Bayeux / CometD HTTP Streaming API. Bulk APIs Perform Bulk Queries and Inserts/Updates Asynchronously.
  • 8. Comprehensive Suite of APIs and Toolkits Web Service Endpoint Web Service Endpoint Apex WS/REST Outbound Messaging Business Logic Sync Bulk API Streaming API Topic CRUD Data Bayeux Client Applications and Middleware Java SDK Ruby gem PHP Toolkit Mobile SDK Mobile SDK 3rd Party Adapters Apex Callouts
  • 9. What is a Composite API?
  • 10. What is a Composite API? • An API that is built by combining existing API functions • A single request to an API can perform multiple functions • Orchestration of the composite APIs allow developer controlled business logic and functionality • Responses from one API method can be directed as inputs into another method • Multiple APIs can be used in a single call to improve performance • Compositions are key for designing efficient API for use in mobile development
  • 12. Batching REST Resource • Resource which accepts multiple REST calls to execute • A single Batch REST request can execute up to 25 sub-requests • Sub-requests contains the resource (URI) and the method to execute • Each sub-request is an unrelated API call • Sub-requests are executed serially, in order, and as the running user • As each sub-request completes, the call is committed • Has one optional parameter • haltOnError - indicates if the batch should stop on any error that is encountered • The response will be a JSON object of responses from the sub requests
  • 14. Batch REST API Diagram
  • 15. Example Batch Request {"batchRequests" : [ {"method" : "POST", "url" : "v34.0/sobjects/account/", "richInput" : {"Name" : "NewName", "Industry" : "Tech"}}, {"method" : "GET", "url" : "v34.0/sobjects/account/describe/"}, {"method" : "GET", "url" : "v34.0/query?q=select id, name, industry from account order by createddate desc limit 10" }] }
  • 16. Example Successful Batch Response {"hasErrors" : false, "results" : [{ "statusCode" : 201, "result": {"id" : "001B0000003xiArIAI”, "success" : true, "errors" : [ ]} }, { "statusCode" : 200, "result": {"actionOverrides" : [ ], "activateable" : false, ..., "undeletable" : true, "updateable" : true} },{ "statusCode" : 200, "result": {"totalSize" : 10, "done" : true, "records" : [{ "attributes" : {"type" : "Account”, "url" : "/services/data/v34.0/ sobjects/Account/001B0000003xiArIAI”}, ... }] } }] }
  • 17. Example Unsuccessful Batch Response {"hasErrors" : true, "results" : [{ "result" : [{"message" : "Required fields are missing: [Name]”,"errorCode" : "REQUIRED_FIELD_MISSING", "fields" : [ "Name" ]}], "statusCode" : 400 },{ "result”:[{"message”:"Cannot access this resource in a batch request”, "errorCode”: "INVALID_BATCH_REQUEST”}], "statusCode" : 400 },{ "result" : [{ "message" : "nselect ids, name, industry from accountn^nERROR at Row: 1:Column:8nNo such column 'ids' on entity 'Account'. If you are attempting to use a custom field, be sure to append the '__c' after the custom field name. Please reference your WSDL or the describe call for the appropriate names.”, "errorCode" : "INVALID_FIELD"}], "statusCode" : 400 }]}
  • 19. TreeSave REST Resource • Creates SObject trees with the same top level object type • A recursive data structure that contains a root record, its data, and its child records represented as other sObject trees • The REST resource manages all of the ID creations and mapping • Create an Account, Contact, Opportunity, and Note in a single call • The request can contain the following: • Up to a total of 200 records across all trees • Up to five records of different types • SObject trees up to five levels deep • You can create 200 top level records, by only providing the top level
  • 20. TreeSave REST Resource (cont.) • The Developer provides the record relations via a reference ID • ReferenceId is used to link related records and to return errors • Only Insert is supported • Triggers, processes, and workflow rules fire separately for each of the object levels • EX – All triggers fire for all the top level records, then all fire for the second level records, then third, etc… • All records are rolled back on any error • Error will indicate which referenceId had the error so that the developer can take the appropriate action
  • 21. Example TreeSave Request {"records" :[ {"attributes" : {"type" : "Account", "referenceId" : "ref1"}, "name" : "SampleAccount”, "phone" : "1234567890”, "website" : "www.salesforce.com", "numberOfEmployees”: "100”, "type" : "Analyst”, "industry" : "Banking", "Contacts" : { "records" : [ {"attributes" : {"type" : "Contact", "referenceId" : "ref2"}, "lastname" : "Smith”, "title" : "President”, "email" : "sample@salesforce.com" }, {"attributes" : {"type" : "Contact", "referenceId" : "ref3"}, "lastname" : "Evans”, "title" : "Vice President”, "email" : "sample@salesforce.com”}] }}, {"attributes" : {"type" : "Account", "referenceId" : "ref4"}, "name”: "SampleAccount2”, "phone”: "1234567890”, "website" : "www.salesforce2.com", "numberOfEmployees”: "100”, "type" : "Analyst”, "industry" : "Banking”}] }
  • 22. Example Successful TreeSave Response { "hasErrors" : false, "results" : [ { "referenceId" : "ref1", "id" : "001B0000003xiAwIAI" }, { "referenceId" : "ref4", "id" : "001B0000003xiAxIAI" }, { "referenceId" : "ref2", "id" : "003B0000003l3L5IAI" }, { "referenceId" : "ref3", "id" : "003B0000003l3L6IAI" } ] }
  • 23. Example Unsuccessful TreeSave Response { "hasErrors" : true, "results" : [ { "referenceId" : "ref4", "errors" : [ { "statusCode" : "REQUIRED_FIELD_MISSING", "message" : "Required fields are missing: [Name]", "fields" : [ "Name" ] } ] } ] }
  • 25. Building a Composite API on Salesforce • There are a number of existing Composite resources • The Batching REST resource allows for the sending of multiple REST calls in a single round trip • The calls are unrelated, simply reduces round trips • The TreeSave REST resource allows creation of multiple records in a single call • Limited to insert and all-or-none saves • Apex REST can be used to build custom logic • Requires complete design by the developer
  • 26. Building a Composite API on Salesforce (cont.) • A new API which will be a combination of Batch and TreeSave • Outputs from one API call can be Inputs into another • You can use the developer assigned Reference Id • Ex - @Account1.id can be used in a later query, as a reference field, in an action, etc • Friendly URLs will assist in navigating the resource hierarchy • Ability to crawl the resource tree easily • Ex - /services/data/v36.0/sobjects/Account/001X00000000123/Contacts will give you a list of all Contacts on a the designated Account • This will allow multiple CRUD operations to collections • This will allow a simple layer of orchestration to the REST API
  • 28. What did we Learn? What is the Enterprise API Existing Features that begin to support composite actions • Batching API • TreeSave API • Composite API Demos of existing resources • Showed an example of Batching API • Showed an example of TreeSave API • Demo of potential Composite API
  • 29. Q&A
  • 30. Share Your Feedback, and Win a GoPro! 3 Earn a GoPro prize entry for each completed survey Tap the bell to take a survey2Enroll in a session1