SlideShare a Scribd company logo
Enterprise API New Features and Roadmap
​ Jay Hurst
​ Director, Product Management
​ jhurst@salesforce.com
​ @extraidea
​ Charlie Fineman
​ Architect – Enterprise API
​ cfineman@salesforce.com
​ @SalesforceEng
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
Charlie Fineman
Architect – Enterprise API
cfineman@salesforce.com
@SalesforceEng
The Salesforce Enterprise API
​ With the variety of APIs available on the Salesforce Platform,
may times it can be challenging to find the correct API for your
task
​ Raise your hand if you:
•  Have used the SOAP, REST, or Bulk API in Salesforce
•  Have run into some limitation in these APIs that you would like to see
filled
•  Want to learn more about what features we have planned for these
APIs
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, Inserts, Updates, and Deletes 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
Summer ‘15 Features
Data Loader for Mac
​ Data Loader is a client tool to load and extract
data through the Partner API
•  SOAP API
​ Mac support one of the largest Ideas on
success.salesforce.com
•  16K points to date
•  Prior to Summer ‘15, only Windows support
Limitations are
•  No UI changes, just a mac installer and support
•  Java 1.6 is required
New Integration Tools team will be advancing the
feature over the upcoming releases
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
TreeSave REST Resource (GA Winter '15)
•  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
Winter ‘16 Features
ETag Support in REST
•  ETags allow Optimistic Concurrency Control (OCC) on your API calls
• OCC allows you to verify that you will not overwrite changes to records
• We currently support version number based ETags and time-based ETags
•  Version number based ETags are supported on the Account object, and Time-Based are supported
on all objects
•  "ETag" and "Last Modified Time" values are returned on SOBject Rows resources
•  Support for "If-Match", "If-None-Match", "If-Modified-Since", and "If-Unmodified-Since"
•  For example
• User B gets information about Account Acme, Inc.
•  Result contains an version number based ETag and a last modified date
• User A makes changes to the record, which updates the ETag and Timestamp
• When User B updates, the update fails, as the ETag and Timestamp differ
ETag Support
Retrieving records from the
sObject resource will
return a Last-Modified, and/
or an ETag
Admin can update the
dashboards used in the
Engagement Console
Using If-Modified-Since or
If-Match (for ETags), will
allow the update to go
through if the record has
been updated since the
date passed in.
Using If-Unmodified-Since
will allow the update to go
through if the record has
not been updated since
the date passed in
Create Audit Fields/Update with Inactive Owners
•  Create Audit Fields provides the ability to set the Audit Fields for records
• Last Modified By, Last Modified Date, Created By, Created Date
• Only available when creating records through the API
• Previously only available to enable through a support ticket
•  Update with Inactive Owners allows you to update records that have an
owner who has been deactivated
• By default, many records cannot be updated if the owner is inactive, because
of cascading actions and sharing implications
•  Two new profile permissions to control this behavior
• Admin can enable and disable as they need
Create Audit Fields/Update with Inactive Owner
Admins can now enable the
Create Audit Fields Feature from
the User Interface Setup
Once enabled in the user
interface, you can assign
Setting the Audit Fields
and Updating Records
with inactive owners to
user profiles and perm
sets
Once enabled in the user
interface, you can assign
Setting the Audit Fields
and Updating Records
with inactive owners to
user profiles and perm
sets
Through the API you can
set the Audit field when
creating records
Audit fields can be
retained when migrating
data
Enterprise API - Roadmap
Looking toward the horizon
Supporting the push towards mobile
•  Looking at API composition
•  Support for offline
•  Asynchrony
•  More efficient use of limited bandwidth (caching, alternate transport)
“API First”
•  Improved App Cloud support for creating and managing APIs for internal and external API developers
•  Consistent APIs and integration patterns across SFDC
•  Standardized interactive API documentation
•  Rate Throttling and Shaping rather than Limiting
•  Improve operational dashboards
Looking toward the horizon (cont.)
Bulk API Enhancements
•  API completeness (retrieve job status, cancel jobs, delete jobs)
•  Relationship Queries
•  Bulk JSON
​ Higher volume APIs for Big Data and IoT (and App Cloud too!)
•  Looking at our ingestion pipeline
•  Different data stores (e.g. BigObjects in HBase, Wave)
•  Pull vs push
Streaming API Enhancements
•  Expand coverage of SObject support in Streaming Push Topics
•  Support relationship streams and sub queries
•  Data synchronization
What did we Learn?
​ What is the Enterprise API
​ Summer '15 Features
•  Data Loader for Mac
•  Batching API
•  TreeSave API
​ Winter '16 Release
•  ETag Support
•  Create Audit Fields/Update with Inactive Owner
​ Future of Enterprise API
•  Push Towards Mobile
•  API First
•  API Enhancements
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
Appendix
Batch API and TreeSave API Requests and Responses
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
​  }]}
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" ]
​  } ]
​  } ]
​ }

More Related Content

What's hot (20)

PPTX
Exploring the Salesforce REST API
Salesforce Developers
 
PPTX
Intro to Salesforce for Nonprofits
Marc Baizman
 
PDF
Keycloak Single Sign-On
Ravi Yasas
 
PPTX
Document your rest api using swagger - Devoxx 2015
johannes_fiala
 
PDF
Spring security oauth2
axykim00
 
PPTX
Platform Events by Tim Taylor
Christine Smith
 
PDF
apidays Paris 2022 - API design best practices, Ryan Clifford & Ros Bennis, F...
apidays
 
PPTX
Deep dive into Salesforce Connected App
Dhanik Sahni
 
PDF
Introduction to Apex Triggers
Salesforce Developers
 
PPTX
Top 10 Design & Security Tips to Elevate Your SCADA System
Inductive Automation
 
PPTX
GitHub Presentation
BrianSchilder
 
PDF
JSON, JSON Schema, and OpenAPI
Octavian Nadolu
 
PPTX
Introduction to github slideshare
Rakesh Sukumar
 
PPTX
REST API in Salesforce
Vivek Deepak
 
PDF
Secure Spring Boot Microservices with Keycloak
Red Hat Developers
 
PPTX
OAuth2 + API Security
Amila Paranawithana
 
PPTX
Salesforce asynchronous apex
Badan Singh Pundeer
 
PPTX
How to Use Salesforce Platform Events to Help With Salesforce Limits
Roy Gilad
 
PDF
DevOps Powerpoint Presentation Slides
SlideTeam
 
Exploring the Salesforce REST API
Salesforce Developers
 
Intro to Salesforce for Nonprofits
Marc Baizman
 
Keycloak Single Sign-On
Ravi Yasas
 
Document your rest api using swagger - Devoxx 2015
johannes_fiala
 
Spring security oauth2
axykim00
 
Platform Events by Tim Taylor
Christine Smith
 
apidays Paris 2022 - API design best practices, Ryan Clifford & Ros Bennis, F...
apidays
 
Deep dive into Salesforce Connected App
Dhanik Sahni
 
Introduction to Apex Triggers
Salesforce Developers
 
Top 10 Design & Security Tips to Elevate Your SCADA System
Inductive Automation
 
GitHub Presentation
BrianSchilder
 
JSON, JSON Schema, and OpenAPI
Octavian Nadolu
 
Introduction to github slideshare
Rakesh Sukumar
 
REST API in Salesforce
Vivek Deepak
 
Secure Spring Boot Microservices with Keycloak
Red Hat Developers
 
OAuth2 + API Security
Amila Paranawithana
 
Salesforce asynchronous apex
Badan Singh Pundeer
 
How to Use Salesforce Platform Events to Help With Salesforce Limits
Roy Gilad
 
DevOps Powerpoint Presentation Slides
SlideTeam
 

Viewers also liked (20)

PPTX
Open Core Commerce with Virtually Unlimited Flexibility - Magento Enterprise
Immo Böhm
 
PPS
VirusScan Enterprise v8.8
Geronimo Martin Alonso
 
PPTX
UDS Enterprise Technical features
UDS Enterprise
 
PPT
A look at our API roadmap
David Haskiya
 
PDF
Accelerating the Open Banking API Journey
Sheriff Shitu
 
PDF
Concept of flexible open api server with node.js
주용 오
 
PPTX
Rest API with Swagger and NodeJS
Luigi Saetta
 
PDF
Proliferating OpenAPI at Google
Open API Initiative (OAI)
 
PDF
Mozilla And Open Web
Brian King
 
PDF
Zipping through the OpenAPI with Capital One
Open API Initiative (OAI)
 
PPTX
API Workshop: Deep dive into REST APIs
Tom Johnson
 
PPTX
Swagger & OpenAPI Spec #openapi
Muhammad Siddiqi
 
PPTX
Build APIs in Node.js and Swagger 2.0 with Apigee-127
Apigee | Google Cloud
 
PDF
OpenAPI Spec at Google (Open API Initiative Meetup on 2016-09-15)
Open API Initiative (OAI)
 
PDF
Developing Faster with Swagger
Tony Tam
 
PDF
Swagger / Quick Start Guide
Andrii Gakhov
 
PPTX
API Design first with Swagger
Tony Tam
 
PDF
Create and Manage APIs with API Connect, Swagger and Bluemix
Dev_Events
 
PDF
Treat Your API Like a Product
Elie Chevignard
 
PDF
Open Bank Project workshop at API Days, Open BankIng and Fintech, London 2015
TESOBE
 
Open Core Commerce with Virtually Unlimited Flexibility - Magento Enterprise
Immo Böhm
 
VirusScan Enterprise v8.8
Geronimo Martin Alonso
 
UDS Enterprise Technical features
UDS Enterprise
 
A look at our API roadmap
David Haskiya
 
Accelerating the Open Banking API Journey
Sheriff Shitu
 
Concept of flexible open api server with node.js
주용 오
 
Rest API with Swagger and NodeJS
Luigi Saetta
 
Proliferating OpenAPI at Google
Open API Initiative (OAI)
 
Mozilla And Open Web
Brian King
 
Zipping through the OpenAPI with Capital One
Open API Initiative (OAI)
 
API Workshop: Deep dive into REST APIs
Tom Johnson
 
Swagger & OpenAPI Spec #openapi
Muhammad Siddiqi
 
Build APIs in Node.js and Swagger 2.0 with Apigee-127
Apigee | Google Cloud
 
OpenAPI Spec at Google (Open API Initiative Meetup on 2016-09-15)
Open API Initiative (OAI)
 
Developing Faster with Swagger
Tony Tam
 
Swagger / Quick Start Guide
Andrii Gakhov
 
API Design first with Swagger
Tony Tam
 
Create and Manage APIs with API Connect, Swagger and Bluemix
Dev_Events
 
Treat Your API Like a Product
Elie Chevignard
 
Open Bank Project workshop at API Days, Open BankIng and Fintech, London 2015
TESOBE
 
Ad

Similar to Enterprise API New Features and Roadmap (20)

PDF
Building towards a Composite API Framework in Salesforce
Salesforce Developers
 
PPTX
New Powerful API Enhancements for Summer '15
Salesforce Developers
 
PDF
Our API Evolution: From Metadata to Tooling API for Building Incredible Apps
Dreamforce
 
PPTX
Integrating with salesforce
Mark Adcock
 
PPTX
February 2020 Salesforce API Review
Lydon Bergin
 
PPTX
All Aboard the Boxcar! Going Beyond the Basics of REST
Pat Patterson
 
PDF
Designing Custom REST and SOAP Interfaces on Force.com
Salesforce Developers
 
PPTX
OData: A Standard API for Data Access
Pat Patterson
 
PPTX
The Power of Salesforce APIs World Tour Edition
Peter Chittum
 
PPTX
Replicating One Billion Records with Minimal API Usage
Salesforce Developers
 
PDF
Boxcars and Cabooses: When one more XHR is too much - Peter Chittum - Codemot...
Codemotion
 
PDF
Introduction to Data.com APIs
Salesforce Developers
 
PPT
Designing custom REST and SOAP interfaces on Force.com
Steven Herod
 
PDF
Data.com - Introduction to APIs #Dreamforce14
Ali Sadat
 
PDF
Boxcars and Cabooses: When One More XHR Is Too Much
Peter Chittum
 
PPTX
[MBF2] Plate-forme Salesforce par Peter Chittum
BeMyApp
 
PDF
Data.com APIs in Action ? Bringing Data to Life in Salesforce
Salesforce Developers
 
PPTX
Navi Mumbai Salesforce DUG meetup on integration
Rakesh Gupta
 
PDF
Control your world using the Salesforce1 Platform (IoT)
InternetCreations
 
PPTX
Best api features of 2016
Peter Chittum
 
Building towards a Composite API Framework in Salesforce
Salesforce Developers
 
New Powerful API Enhancements for Summer '15
Salesforce Developers
 
Our API Evolution: From Metadata to Tooling API for Building Incredible Apps
Dreamforce
 
Integrating with salesforce
Mark Adcock
 
February 2020 Salesforce API Review
Lydon Bergin
 
All Aboard the Boxcar! Going Beyond the Basics of REST
Pat Patterson
 
Designing Custom REST and SOAP Interfaces on Force.com
Salesforce Developers
 
OData: A Standard API for Data Access
Pat Patterson
 
The Power of Salesforce APIs World Tour Edition
Peter Chittum
 
Replicating One Billion Records with Minimal API Usage
Salesforce Developers
 
Boxcars and Cabooses: When one more XHR is too much - Peter Chittum - Codemot...
Codemotion
 
Introduction to Data.com APIs
Salesforce Developers
 
Designing custom REST and SOAP interfaces on Force.com
Steven Herod
 
Data.com - Introduction to APIs #Dreamforce14
Ali Sadat
 
Boxcars and Cabooses: When One More XHR Is Too Much
Peter Chittum
 
[MBF2] Plate-forme Salesforce par Peter Chittum
BeMyApp
 
Data.com APIs in Action ? Bringing Data to Life in Salesforce
Salesforce Developers
 
Navi Mumbai Salesforce DUG meetup on integration
Rakesh Gupta
 
Control your world using the Salesforce1 Platform (IoT)
InternetCreations
 
Best api features of 2016
Peter Chittum
 
Ad

More from Salesforce Developers (20)

PDF
Sample Gallery: Reference Code and Best Practices for Salesforce Developers
Salesforce Developers
 
PDF
Maximizing Salesforce Lightning Experience and Lightning Component Performance
Salesforce Developers
 
PDF
Local development with Open Source Base Components
Salesforce Developers
 
PPTX
TrailheaDX India : Developer Highlights
Salesforce Developers
 
PDF
Why developers shouldn’t miss TrailheaDX India
Salesforce Developers
 
PPTX
CodeLive: Build Lightning Web Components faster with Local Development
Salesforce Developers
 
PPTX
CodeLive: Converting Aura Components to Lightning Web Components
Salesforce Developers
 
PPTX
Enterprise-grade UI with open source Lightning Web Components
Salesforce Developers
 
PPTX
TrailheaDX and Summer '19: Developer Highlights
Salesforce Developers
 
PDF
Live coding with LWC
Salesforce Developers
 
PDF
Lightning web components - Episode 4 : Security and Testing
Salesforce Developers
 
PDF
LWC Episode 3- Component Communication and Aura Interoperability
Salesforce Developers
 
PDF
Lightning web components episode 2- work with salesforce data
Salesforce Developers
 
PDF
Lightning web components - Episode 1 - An Introduction
Salesforce Developers
 
PDF
Migrating CPQ to Advanced Calculator and JSQCP
Salesforce Developers
 
PDF
Scale with Large Data Volumes and Big Objects in Salesforce
Salesforce Developers
 
PDF
Replicate Salesforce Data in Real Time with Change Data Capture
Salesforce Developers
 
PDF
Modern Development with Salesforce DX
Salesforce Developers
 
PDF
Get Into Lightning Flow Development
Salesforce Developers
 
PDF
Integrate CMS Content Into Lightning Communities with CMS Connect
Salesforce Developers
 
Sample Gallery: Reference Code and Best Practices for Salesforce Developers
Salesforce Developers
 
Maximizing Salesforce Lightning Experience and Lightning Component Performance
Salesforce Developers
 
Local development with Open Source Base Components
Salesforce Developers
 
TrailheaDX India : Developer Highlights
Salesforce Developers
 
Why developers shouldn’t miss TrailheaDX India
Salesforce Developers
 
CodeLive: Build Lightning Web Components faster with Local Development
Salesforce Developers
 
CodeLive: Converting Aura Components to Lightning Web Components
Salesforce Developers
 
Enterprise-grade UI with open source Lightning Web Components
Salesforce Developers
 
TrailheaDX and Summer '19: Developer Highlights
Salesforce Developers
 
Live coding with LWC
Salesforce Developers
 
Lightning web components - Episode 4 : Security and Testing
Salesforce Developers
 
LWC Episode 3- Component Communication and Aura Interoperability
Salesforce Developers
 
Lightning web components episode 2- work with salesforce data
Salesforce Developers
 
Lightning web components - Episode 1 - An Introduction
Salesforce Developers
 
Migrating CPQ to Advanced Calculator and JSQCP
Salesforce Developers
 
Scale with Large Data Volumes and Big Objects in Salesforce
Salesforce Developers
 
Replicate Salesforce Data in Real Time with Change Data Capture
Salesforce Developers
 
Modern Development with Salesforce DX
Salesforce Developers
 
Get Into Lightning Flow Development
Salesforce Developers
 
Integrate CMS Content Into Lightning Communities with CMS Connect
Salesforce Developers
 

Recently uploaded (20)

PPT
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PDF
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
PDF
UiPath DevConnect 2025: Agentic Automation Community User Group Meeting
DianaGray10
 
PDF
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
PDF
“Voice Interfaces on a Budget: Building Real-time Speech Recognition on Low-c...
Edge AI and Vision Alliance
 
PDF
Staying Human in a Machine- Accelerated World
Catalin Jora
 
PDF
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
PDF
Transcript: Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
PDF
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PDF
SIZING YOUR AIR CONDITIONER---A PRACTICAL GUIDE.pdf
Muhammad Rizwan Akram
 
PPTX
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
PDF
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PDF
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
UiPath DevConnect 2025: Agentic Automation Community User Group Meeting
DianaGray10
 
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
“Voice Interfaces on a Budget: Building Real-time Speech Recognition on Low-c...
Edge AI and Vision Alliance
 
Staying Human in a Machine- Accelerated World
Catalin Jora
 
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
Transcript: Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
SIZING YOUR AIR CONDITIONER---A PRACTICAL GUIDE.pdf
Muhammad Rizwan Akram
 
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 

Enterprise API New Features and Roadmap

  • 1. Enterprise API New Features and Roadmap ​ Jay Hurst ​ Director, Product Management ​ [email protected] ​ @extraidea ​ Charlie Fineman ​ Architect – Enterprise API ​ cfi[email protected] ​ @SalesforceEng
  • 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 [email protected] @extraidea
  • 4. Charlie Fineman Architect – Enterprise API cfi[email protected] @SalesforceEng
  • 5. The Salesforce Enterprise API ​ With the variety of APIs available on the Salesforce Platform, may times it can be challenging to find the correct API for your task ​ Raise your hand if you: •  Have used the SOAP, REST, or Bulk API in Salesforce •  Have run into some limitation in these APIs that you would like to see filled •  Want to learn more about what features we have planned for these APIs
  • 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, Inserts, Updates, and Deletes 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
  • 10. Data Loader for Mac ​ Data Loader is a client tool to load and extract data through the Partner API •  SOAP API ​ Mac support one of the largest Ideas on success.salesforce.com •  16K points to date •  Prior to Summer ‘15, only Windows support Limitations are •  No UI changes, just a mac installer and support •  Java 1.6 is required New Integration Tools team will be advancing the feature over the upcoming releases
  • 11. 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
  • 13. Batch REST API Diagram
  • 14. TreeSave REST Resource (GA Winter '15) •  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
  • 15. 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
  • 17. ETag Support in REST •  ETags allow Optimistic Concurrency Control (OCC) on your API calls • OCC allows you to verify that you will not overwrite changes to records • We currently support version number based ETags and time-based ETags •  Version number based ETags are supported on the Account object, and Time-Based are supported on all objects •  "ETag" and "Last Modified Time" values are returned on SOBject Rows resources •  Support for "If-Match", "If-None-Match", "If-Modified-Since", and "If-Unmodified-Since" •  For example • User B gets information about Account Acme, Inc. •  Result contains an version number based ETag and a last modified date • User A makes changes to the record, which updates the ETag and Timestamp • When User B updates, the update fails, as the ETag and Timestamp differ
  • 18. ETag Support Retrieving records from the sObject resource will return a Last-Modified, and/ or an ETag Admin can update the dashboards used in the Engagement Console Using If-Modified-Since or If-Match (for ETags), will allow the update to go through if the record has been updated since the date passed in. Using If-Unmodified-Since will allow the update to go through if the record has not been updated since the date passed in
  • 19. Create Audit Fields/Update with Inactive Owners •  Create Audit Fields provides the ability to set the Audit Fields for records • Last Modified By, Last Modified Date, Created By, Created Date • Only available when creating records through the API • Previously only available to enable through a support ticket •  Update with Inactive Owners allows you to update records that have an owner who has been deactivated • By default, many records cannot be updated if the owner is inactive, because of cascading actions and sharing implications •  Two new profile permissions to control this behavior • Admin can enable and disable as they need
  • 20. Create Audit Fields/Update with Inactive Owner Admins can now enable the Create Audit Fields Feature from the User Interface Setup Once enabled in the user interface, you can assign Setting the Audit Fields and Updating Records with inactive owners to user profiles and perm sets Once enabled in the user interface, you can assign Setting the Audit Fields and Updating Records with inactive owners to user profiles and perm sets Through the API you can set the Audit field when creating records Audit fields can be retained when migrating data
  • 21. Enterprise API - Roadmap
  • 22. Looking toward the horizon Supporting the push towards mobile •  Looking at API composition •  Support for offline •  Asynchrony •  More efficient use of limited bandwidth (caching, alternate transport) “API First” •  Improved App Cloud support for creating and managing APIs for internal and external API developers •  Consistent APIs and integration patterns across SFDC •  Standardized interactive API documentation •  Rate Throttling and Shaping rather than Limiting •  Improve operational dashboards
  • 23. Looking toward the horizon (cont.) Bulk API Enhancements •  API completeness (retrieve job status, cancel jobs, delete jobs) •  Relationship Queries •  Bulk JSON ​ Higher volume APIs for Big Data and IoT (and App Cloud too!) •  Looking at our ingestion pipeline •  Different data stores (e.g. BigObjects in HBase, Wave) •  Pull vs push Streaming API Enhancements •  Expand coverage of SObject support in Streaming Push Topics •  Support relationship streams and sub queries •  Data synchronization
  • 24. What did we Learn? ​ What is the Enterprise API ​ Summer '15 Features •  Data Loader for Mac •  Batching API •  TreeSave API ​ Winter '16 Release •  ETag Support •  Create Audit Fields/Update with Inactive Owner ​ Future of Enterprise API •  Push Towards Mobile •  API First •  API Enhancements
  • 25. Q&A
  • 26. 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
  • 28. Appendix Batch API and TreeSave API Requests and Responses
  • 29. 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" ​  }] ​ }
  • 30. 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”}, ​  ... ​  }] ​  } ​  }] ​ }
  • 31. 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 ​  }]}
  • 32. 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" : ​  "[email protected]" }, ​  {"attributes" : {"type" : "Contact", "referenceId" : "ref3"}, ​  "lastname" : "Evans”, "title" : "Vice President”, "email" : ​  "[email protected]”}] ​  }}, ​  {"attributes" : {"type" : "Account", "referenceId" : "ref4"}, ​  "name”: "SampleAccount2”, "phone”: "1234567890”, "website" : ​  "www.salesforce2.com", "numberOfEmployees”: "100”, "type" : "Analyst”, ​  "industry" : "Banking”}] ​ }
  • 33. Example Successful TreeSave Response ​ { ​  "hasErrors" : false, ​  "results" : [ { ​  "referenceId" : "ref1", ​  "id" : "001B0000003xiAwIAI" ​  }, { ​  "referenceId" : "ref4", ​  "id" : "001B0000003xiAxIAI" ​  }, { ​  "referenceId" : "ref2", ​  "id" : "003B0000003l3L5IAI" ​  }, { ​  "referenceId" : "ref3", ​  "id" : "003B0000003l3L6IAI" ​  } ] ​ }
  • 34. Example Unsuccessful TreeSave Response ​ { ​  "hasErrors" : true, ​  "results" : [ { ​  "referenceId" : "ref4", ​  "errors" : [ { ​  "statusCode" : "REQUIRED_FIELD_MISSING", ​  "message" : "Required fields are missing: [Name]", ​  "fields" : [ "Name" ] ​  } ] ​  } ] ​ }