SlideShare a Scribd company logo
OData 
A Standard API for Data Access 
Pat Patterson 
Developer Evangelist Architect, salesforce.com 
@metadaddy
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 andcustomer 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.
Pat Patterson 
Developer Evangelist Architect 
@metadaddy
RESTful APIs are GREAT! 
$ curl -H 'X-PrettyPrint:1'  
-H 'Authorization: Bearer ACCESS_TOKEN'  
https://na1.salesforce.com/services/data/v31.0/sobjects/A 
ccount/001E0000002Jv2eIAC 
{ 
"Id" : "001E0000002Jv2eIAC”, 
"Name" : "Edge Communications", 
"AccountNumber" : "CD451796", 
… 
}
BUT… 
• REST is a style, not a standard 
• RESTful, RESTlike, RESTish 
• URL parameters? 
– e.g. retrieve only a subset of properties 
• Retrieve a set of records via a query? 
•Metadata 
– WADL? 
– RAML? 
– Swagger?
Enter… OData 
www.odata.org 
“OData is a standardized protocol for creating and 
consuming data APIs. 
OData builds on core protocols like HTTP and commonly 
accepted methodologies like REST. 
The result is a uniform way to expose 
full-featured data APIs.”
OData 
•Proposed by Microsoft 
– 2009 
•Standardized by OASIS 
– 2014
OData 
•URIs for resource identity 
http://services.odata.org/V4/OData/OData.svc 
/Products 
?$filter=Rating+eq+3&$select=Rating,+Name
OData 
•HTTP transport 
–GET, POST, PUT/PATCH/MERGE, DELETE 
GET /V4/OData/OData.svc/Products(1) HTTP/1.1 
Host: services.odata.org 
HTTP/1.1 200 OK 
...
OData 
•Atom XML/JSON representation
OData Examples 
Service Document (JSON) 
$ curl 'http://services.odata.org/V4/OData/OData.svc/' 
{ 
"@odata.context": "http://services.odata.org/V4/OData/OData.svc/$metadata", 
"value": [ 
{ 
"kind": "EntitySet", 
"name": "Products", 
"url": "Products" 
}, 
{ 
"kind": "EntitySet", 
"name": "ProductDetails", 
"url": "ProductDetails" 
}, 
...
OData Examples 
Service Document (XML) 
$ curl 'http://services.odata.org/V4/OData/OData.svc/?$format=xml' 
<?xml version="1.0" encoding="utf-8"?> 
<service xmlns="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" 
xmlns:m="http://docs.oasis-open.org/odata/ns/metadata" 
xml:base="http://services.odata.org/V4/OData/OData.svc/" 
m:context="http://services.odata.org/V4/OData/OData.svc/$metadata"> 
<workspace> 
<atom:title type="text">Default</atom:title> 
<collection href="Products"> 
<atom:title type="text">Products</atom:title> 
</collection> 
<collection href="ProductDetails"> 
<atom:title type="text">ProductDetails</atom:title> 
</collection> 
...
OData Examples 
Metadata (XML Only ) 
$ curl 'http://services.odata.org/V4/OData/OData.svc/$metadata' 
<?xml version="1.0" encoding="utf-8"?> 
<edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0"> 
<edmx:DataServices> 
<Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" 
Namespace="ODataDemo"> 
<EntityType Name="Product"> 
<Key> 
<PropertyRef Name="ID"/> 
</Key> 
<Property Name="ID" Type="Edm.Int32" Nullable="false"/> 
<Property Name="Name" Type="Edm.String"/> 
...
OData Examples 
Query 
$ curl 
'http://services.odata.org/V4/OData/OData.svc/Products?$filter=Rating+eq+3&$select=Rating,+ 
Name' 
{ 
"@odata.context": 
"http://services.odata.org/V4/OData/OData.svc/$metadata#Products(Rating,Name)", 
"value": [ 
{ 
"Name": "Milk", 
"Rating": 3 
}, 
{ 
"Name": "Vint soda", 
"Rating": 3 
}, 
...
OData Examples 
Get Individual Entity 
$ curl 'http://services.odata.org/V4/OData/OData.svc/Products(1)' 
{ 
"@odata.context": 
"http://services.odata.org/V4/OData/OData.svc/$metadata#Products/$entity", 
"ID": 1, 
"Name": "Milk", 
"Description": "Low fat milk", 
"ReleaseDate": "1995-10-01T00:00:00Z", 
"DiscontinuedDate": null, 
"Rating": 3, 
"Price": 3.5 
}
OData Examples 
Update Entity 
$ curl -w "Status: %{http_code}n”  
-H 'Content-Type: application/json'  
-X PATCH  
-d '{"@odata.type":"ODataDemo.Product","Price":"2.99"}'  
'http://services.odata.org/V4/OData/OData.svc/Products(1)’ 
Status: 204
Odata Adoption 
•Microsoft 
•SAP 
•Salesforce 
•IBM 
•RedHat
OData Libraries 
www.odata.org/libraries 
• Java 
• .Net 
• JavaScript 
• Objective-C 
• Python 
• Ruby 
• Node.js 
• PHP 
• C++
OData-Supporting Products 
•Microsoft SQL Server 
•Windows Azure Active Directory 
•SAP NetWeaver 
• IBM WebSphere 
•JBoss Teiid 
•Salesforce1 Platform Connect
Salesforce1 Platform Connect Demo
OData Summary 
•Standardizes data-centric web services 
•Exposes Data and Metadata 
•JSON or XML (Atom/AtomPub) representation over HTTP 
•Wide industry support
OData: A Standard API for Data Access

More Related Content

What's hot (20)

PPTX
Calling SOAP and REST API's from PL/SQL
venkata20k
 
PDF
Clean architectures with fast api pycones
Alvaro Del Castillo
 
PPTX
OData - The Universal REST API
Nishanth Kadiyala
 
PDF
Swagger With REST APIs.pptx.pdf
Knoldus Inc.
 
PPTX
Rest API
Rohana K Amarakoon
 
PDF
API for Beginners
Gustavo De Vita
 
PDF
Reporting with Oracle Application Express (APEX)
Dimitri Gielis
 
PPTX
Oracle REST Data Services Best Practices/ Overview
Kris Rice
 
PPT
abap list viewer (alv)
Kranthi Kumar
 
PDF
Introduction to API
rajnishjha29
 
PPTX
Understanding REST APIs in 5 Simple Steps
Tessa Mero
 
PPTX
SAP Adobe forms
Jugul Crasta
 
PPTX
SPARQL introduction and training (130+ slides with exercices)
Thomas Francart
 
PDF
Beginner's Guide: Programming with ABAP on HANA
Ashish Saxena
 
PDF
What is API - Understanding API Simplified
Jubin Aghara
 
PPTX
CDS Views.pptx
Suman817957
 
PPT
Module pool programming
Subhojit- Opekkhay
 
PPTX
API Design- Best Practices
Prakash Bhandari
 
PPTX
Introduction to REST - API
Chetan Gadodia
 
PDF
Introduction to Kibana
Vineet .
 
Calling SOAP and REST API's from PL/SQL
venkata20k
 
Clean architectures with fast api pycones
Alvaro Del Castillo
 
OData - The Universal REST API
Nishanth Kadiyala
 
Swagger With REST APIs.pptx.pdf
Knoldus Inc.
 
API for Beginners
Gustavo De Vita
 
Reporting with Oracle Application Express (APEX)
Dimitri Gielis
 
Oracle REST Data Services Best Practices/ Overview
Kris Rice
 
abap list viewer (alv)
Kranthi Kumar
 
Introduction to API
rajnishjha29
 
Understanding REST APIs in 5 Simple Steps
Tessa Mero
 
SAP Adobe forms
Jugul Crasta
 
SPARQL introduction and training (130+ slides with exercices)
Thomas Francart
 
Beginner's Guide: Programming with ABAP on HANA
Ashish Saxena
 
What is API - Understanding API Simplified
Jubin Aghara
 
CDS Views.pptx
Suman817957
 
Module pool programming
Subhojit- Opekkhay
 
API Design- Best Practices
Prakash Bhandari
 
Introduction to REST - API
Chetan Gadodia
 
Introduction to Kibana
Vineet .
 

Viewers also liked (20)

PDF
OData, Open Data Protocol. A brief introduction
Eugenio Lentini
 
PPTX
OData Introduction and Impact on API Design (Webcast)
Apigee | Google Cloud
 
PPTX
Practical OData
Vagif Abilov
 
PDF
NetWeaver Gateway- Introduction to OData
SAP PartnerEdge program for Application Development
 
PDF
Odata introduction-slides
MasterCode.vn
 
PDF
A Look at OData
Woodruff Solutions LLC
 
PPTX
JAX-RS 2.0 and OData
Anil Allewar
 
PPT
Building RESTful Applications with OData
Todd Anglin
 
PPTX
OData and the future of business objects universes
Sumit Sarkar
 
PDF
NetWeaver Gateway- Service Builder
SAP PartnerEdge program for Application Development
 
PPT
Bottom-Line Web Services
Mohammed Makhlouf
 
PPT
Mendeley Demo @ FCI Assiut
Mohammed Makhlouf
 
PPTX
RESTFul Web API Services @ DotNetToscana
Matteo Baglini
 
PPTX
OData Hackathon Challenge
Sumit Sarkar
 
PPTX
Building RESTfull Data Services with WebAPI
Gert Drapers
 
DOCX
Moni jaiswal resume
Jaiswal Moni
 
PPTX
OData and SharePoint
Sanjay Patel
 
PPTX
Consuming Data From Many Platforms: The Benefits of OData - St. Louis Day of ...
Eric D. Boyd
 
PPTX
Setting Your Data Free With OData
Bruce Johnson
 
PPTX
OData
Robert MacLean
 
OData, Open Data Protocol. A brief introduction
Eugenio Lentini
 
OData Introduction and Impact on API Design (Webcast)
Apigee | Google Cloud
 
Practical OData
Vagif Abilov
 
NetWeaver Gateway- Introduction to OData
SAP PartnerEdge program for Application Development
 
Odata introduction-slides
MasterCode.vn
 
A Look at OData
Woodruff Solutions LLC
 
JAX-RS 2.0 and OData
Anil Allewar
 
Building RESTful Applications with OData
Todd Anglin
 
OData and the future of business objects universes
Sumit Sarkar
 
NetWeaver Gateway- Service Builder
SAP PartnerEdge program for Application Development
 
Bottom-Line Web Services
Mohammed Makhlouf
 
Mendeley Demo @ FCI Assiut
Mohammed Makhlouf
 
RESTFul Web API Services @ DotNetToscana
Matteo Baglini
 
OData Hackathon Challenge
Sumit Sarkar
 
Building RESTfull Data Services with WebAPI
Gert Drapers
 
Moni jaiswal resume
Jaiswal Moni
 
OData and SharePoint
Sanjay Patel
 
Consuming Data From Many Platforms: The Benefits of OData - St. Louis Day of ...
Eric D. Boyd
 
Setting Your Data Free With OData
Bruce Johnson
 
Ad

Similar to OData: A Standard API for Data Access (20)

PDF
Enterprise API New Features and Roadmap
Salesforce Developers
 
PDF
Our API Evolution: From Metadata to Tooling API for Building Incredible Apps
Dreamforce
 
PDF
Introduction to Data.com APIs
Salesforce Developers
 
PPTX
Replicating One Billion Records with Minimal API Usage
Salesforce Developers
 
PDF
Designing Custom REST and SOAP Interfaces on Force.com
Salesforce Developers
 
PPTX
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
Pat Patterson
 
PPTX
Exploring the Salesforce REST API
Salesforce Developers
 
PPT
Salesforce Integration
Joshua Hoskins
 
PDF
Data.com - Introduction to APIs #Dreamforce14
Ali Sadat
 
PDF
Introduction to External Objects and the OData Connector
Salesforce Developers
 
PPT
Designing custom REST and SOAP interfaces on Force.com
Steven Herod
 
PPTX
Integrating with salesforce
Mark Adcock
 
PPT
Intro to AppExchange - Building Composite Apps
dreamforce2006
 
PDF
Data.com APIs in Action ? Bringing Data to Life in Salesforce
Salesforce Developers
 
PDF
Building towards a Composite API Framework in Salesforce
Salesforce Developers
 
PDF
Winter 21 Developer Highlights for Salesforce
Peter Chittum
 
PPTX
Enterprise IoT: Data in Context
Pat Patterson
 
PDF
ここまでできる!Salesforce Connect 最新機能 (Winter'17) のご紹介
Salesforce Developers Japan
 
POTX
Using the Google SOAP API
Salesforce Developers
 
PDF
Creating Business Agility and Connectivity using Open Technologies
Appnovation Technologies
 
Enterprise API New Features and Roadmap
Salesforce Developers
 
Our API Evolution: From Metadata to Tooling API for Building Incredible Apps
Dreamforce
 
Introduction to Data.com APIs
Salesforce Developers
 
Replicating One Billion Records with Minimal API Usage
Salesforce Developers
 
Designing Custom REST and SOAP Interfaces on Force.com
Salesforce Developers
 
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
Pat Patterson
 
Exploring the Salesforce REST API
Salesforce Developers
 
Salesforce Integration
Joshua Hoskins
 
Data.com - Introduction to APIs #Dreamforce14
Ali Sadat
 
Introduction to External Objects and the OData Connector
Salesforce Developers
 
Designing custom REST and SOAP interfaces on Force.com
Steven Herod
 
Integrating with salesforce
Mark Adcock
 
Intro to AppExchange - Building Composite Apps
dreamforce2006
 
Data.com APIs in Action ? Bringing Data to Life in Salesforce
Salesforce Developers
 
Building towards a Composite API Framework in Salesforce
Salesforce Developers
 
Winter 21 Developer Highlights for Salesforce
Peter Chittum
 
Enterprise IoT: Data in Context
Pat Patterson
 
ここまでできる!Salesforce Connect 最新機能 (Winter'17) のご紹介
Salesforce Developers Japan
 
Using the Google SOAP API
Salesforce Developers
 
Creating Business Agility and Connectivity using Open Technologies
Appnovation Technologies
 
Ad

More from Pat Patterson (20)

PPTX
DevOps from the Provider Perspective
Pat Patterson
 
PPTX
How Imprivata Combines External Data Sources for Business Insights
Pat Patterson
 
PPTX
Data Integration with Apache Kafka: What, Why, How
Pat Patterson
 
PPTX
Project Ouroboros: Using StreamSets Data Collector to Help Manage the StreamS...
Pat Patterson
 
PPTX
Dealing with Drift: Building an Enterprise Data Lake
Pat Patterson
 
PPTX
Integrating with Einstein Analytics
Pat Patterson
 
PPTX
Efficient Schemas in Motion with Kafka and Schema Registry
Pat Patterson
 
PPTX
Dealing With Drift - Building an Enterprise Data Lake
Pat Patterson
 
PPTX
Building Data Pipelines with Spark and StreamSets
Pat Patterson
 
PPTX
Adaptive Data Cleansing with StreamSets and Cassandra
Pat Patterson
 
PDF
Building Custom Big Data Integrations
Pat Patterson
 
PPTX
Ingest and Stream Processing - What will you choose?
Pat Patterson
 
PPTX
Open Source Big Data Ingestion - Without the Heartburn!
Pat Patterson
 
PPTX
Ingest and Stream Processing - What will you choose?
Pat Patterson
 
PPTX
All Aboard the Boxcar! Going Beyond the Basics of REST
Pat Patterson
 
PPTX
Provisioning IDaaS - Using SCIM to Enable Cloud Identity
Pat Patterson
 
PPTX
API-Driven Relationships: Building The Trans-Internet Express of the Future
Pat Patterson
 
PPTX
Using Salesforce to Manage Your Developer Community
Pat Patterson
 
PPTX
Identity in the Cloud
Pat Patterson
 
PPTX
OpenID Connect: An Overview
Pat Patterson
 
DevOps from the Provider Perspective
Pat Patterson
 
How Imprivata Combines External Data Sources for Business Insights
Pat Patterson
 
Data Integration with Apache Kafka: What, Why, How
Pat Patterson
 
Project Ouroboros: Using StreamSets Data Collector to Help Manage the StreamS...
Pat Patterson
 
Dealing with Drift: Building an Enterprise Data Lake
Pat Patterson
 
Integrating with Einstein Analytics
Pat Patterson
 
Efficient Schemas in Motion with Kafka and Schema Registry
Pat Patterson
 
Dealing With Drift - Building an Enterprise Data Lake
Pat Patterson
 
Building Data Pipelines with Spark and StreamSets
Pat Patterson
 
Adaptive Data Cleansing with StreamSets and Cassandra
Pat Patterson
 
Building Custom Big Data Integrations
Pat Patterson
 
Ingest and Stream Processing - What will you choose?
Pat Patterson
 
Open Source Big Data Ingestion - Without the Heartburn!
Pat Patterson
 
Ingest and Stream Processing - What will you choose?
Pat Patterson
 
All Aboard the Boxcar! Going Beyond the Basics of REST
Pat Patterson
 
Provisioning IDaaS - Using SCIM to Enable Cloud Identity
Pat Patterson
 
API-Driven Relationships: Building The Trans-Internet Express of the Future
Pat Patterson
 
Using Salesforce to Manage Your Developer Community
Pat Patterson
 
Identity in the Cloud
Pat Patterson
 
OpenID Connect: An Overview
Pat Patterson
 

Recently uploaded (20)

PDF
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pdf
Varsha Nayak
 
PPTX
Agentic Automation Journey Session 1/5: Context Grounding and Autopilot for E...
klpathrudu
 
PDF
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
PDF
Mobile CMMS Solutions Empowering the Frontline Workforce
CryotosCMMSSoftware
 
PPTX
Java Native Memory Leaks: The Hidden Villain Behind JVM Performance Issues
Tier1 app
 
PDF
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
PPTX
MiniTool Power Data Recovery Full Crack Latest 2025
muhammadgurbazkhan
 
PDF
Salesforce CRM Services.VALiNTRY360
VALiNTRY360
 
PDF
Executive Business Intelligence Dashboards
vandeslie24
 
PDF
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
PPTX
Equipment Management Software BIS Safety UK.pptx
BIS Safety Software
 
PPTX
Revolutionizing Code Modernization with AI
KrzysztofKkol1
 
PPTX
3uTools Full Crack Free Version Download [Latest] 2025
muhammadgurbazkhan
 
PPTX
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pptx
Varsha Nayak
 
PPTX
A Complete Guide to Salesforce SMS Integrations Build Scalable Messaging With...
360 SMS APP
 
PDF
Streamline Contractor Lifecycle- TECH EHS Solution
TECH EHS Solution
 
PPTX
Tally software_Introduction_Presentation
AditiBansal54083
 
DOCX
Import Data Form Excel to Tally Services
Tally xperts
 
PPTX
Tally_Basic_Operations_Presentation.pptx
AditiBansal54083
 
PDF
vMix Pro 28.0.0.42 Download vMix Registration key Bundle
kulindacore
 
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pdf
Varsha Nayak
 
Agentic Automation Journey Session 1/5: Context Grounding and Autopilot for E...
klpathrudu
 
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
Mobile CMMS Solutions Empowering the Frontline Workforce
CryotosCMMSSoftware
 
Java Native Memory Leaks: The Hidden Villain Behind JVM Performance Issues
Tier1 app
 
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
MiniTool Power Data Recovery Full Crack Latest 2025
muhammadgurbazkhan
 
Salesforce CRM Services.VALiNTRY360
VALiNTRY360
 
Executive Business Intelligence Dashboards
vandeslie24
 
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
Equipment Management Software BIS Safety UK.pptx
BIS Safety Software
 
Revolutionizing Code Modernization with AI
KrzysztofKkol1
 
3uTools Full Crack Free Version Download [Latest] 2025
muhammadgurbazkhan
 
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pptx
Varsha Nayak
 
A Complete Guide to Salesforce SMS Integrations Build Scalable Messaging With...
360 SMS APP
 
Streamline Contractor Lifecycle- TECH EHS Solution
TECH EHS Solution
 
Tally software_Introduction_Presentation
AditiBansal54083
 
Import Data Form Excel to Tally Services
Tally xperts
 
Tally_Basic_Operations_Presentation.pptx
AditiBansal54083
 
vMix Pro 28.0.0.42 Download vMix Registration key Bundle
kulindacore
 

OData: A Standard API for Data Access

  • 1. OData A Standard API for Data Access Pat Patterson Developer Evangelist Architect, salesforce.com @metadaddy
  • 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 andcustomer 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. Pat Patterson Developer Evangelist Architect @metadaddy
  • 4. RESTful APIs are GREAT! $ curl -H 'X-PrettyPrint:1' -H 'Authorization: Bearer ACCESS_TOKEN' https://na1.salesforce.com/services/data/v31.0/sobjects/A ccount/001E0000002Jv2eIAC { "Id" : "001E0000002Jv2eIAC”, "Name" : "Edge Communications", "AccountNumber" : "CD451796", … }
  • 5. BUT… • REST is a style, not a standard • RESTful, RESTlike, RESTish • URL parameters? – e.g. retrieve only a subset of properties • Retrieve a set of records via a query? •Metadata – WADL? – RAML? – Swagger?
  • 6. Enter… OData www.odata.org “OData is a standardized protocol for creating and consuming data APIs. OData builds on core protocols like HTTP and commonly accepted methodologies like REST. The result is a uniform way to expose full-featured data APIs.”
  • 7. OData •Proposed by Microsoft – 2009 •Standardized by OASIS – 2014
  • 8. OData •URIs for resource identity http://services.odata.org/V4/OData/OData.svc /Products ?$filter=Rating+eq+3&$select=Rating,+Name
  • 9. OData •HTTP transport –GET, POST, PUT/PATCH/MERGE, DELETE GET /V4/OData/OData.svc/Products(1) HTTP/1.1 Host: services.odata.org HTTP/1.1 200 OK ...
  • 10. OData •Atom XML/JSON representation
  • 11. OData Examples Service Document (JSON) $ curl 'http://services.odata.org/V4/OData/OData.svc/' { "@odata.context": "http://services.odata.org/V4/OData/OData.svc/$metadata", "value": [ { "kind": "EntitySet", "name": "Products", "url": "Products" }, { "kind": "EntitySet", "name": "ProductDetails", "url": "ProductDetails" }, ...
  • 12. OData Examples Service Document (XML) $ curl 'http://services.odata.org/V4/OData/OData.svc/?$format=xml' <?xml version="1.0" encoding="utf-8"?> <service xmlns="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:m="http://docs.oasis-open.org/odata/ns/metadata" xml:base="http://services.odata.org/V4/OData/OData.svc/" m:context="http://services.odata.org/V4/OData/OData.svc/$metadata"> <workspace> <atom:title type="text">Default</atom:title> <collection href="Products"> <atom:title type="text">Products</atom:title> </collection> <collection href="ProductDetails"> <atom:title type="text">ProductDetails</atom:title> </collection> ...
  • 13. OData Examples Metadata (XML Only ) $ curl 'http://services.odata.org/V4/OData/OData.svc/$metadata' <?xml version="1.0" encoding="utf-8"?> <edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0"> <edmx:DataServices> <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="ODataDemo"> <EntityType Name="Product"> <Key> <PropertyRef Name="ID"/> </Key> <Property Name="ID" Type="Edm.Int32" Nullable="false"/> <Property Name="Name" Type="Edm.String"/> ...
  • 14. OData Examples Query $ curl 'http://services.odata.org/V4/OData/OData.svc/Products?$filter=Rating+eq+3&$select=Rating,+ Name' { "@odata.context": "http://services.odata.org/V4/OData/OData.svc/$metadata#Products(Rating,Name)", "value": [ { "Name": "Milk", "Rating": 3 }, { "Name": "Vint soda", "Rating": 3 }, ...
  • 15. OData Examples Get Individual Entity $ curl 'http://services.odata.org/V4/OData/OData.svc/Products(1)' { "@odata.context": "http://services.odata.org/V4/OData/OData.svc/$metadata#Products/$entity", "ID": 1, "Name": "Milk", "Description": "Low fat milk", "ReleaseDate": "1995-10-01T00:00:00Z", "DiscontinuedDate": null, "Rating": 3, "Price": 3.5 }
  • 16. OData Examples Update Entity $ curl -w "Status: %{http_code}n” -H 'Content-Type: application/json' -X PATCH -d '{"@odata.type":"ODataDemo.Product","Price":"2.99"}' 'http://services.odata.org/V4/OData/OData.svc/Products(1)’ Status: 204
  • 17. Odata Adoption •Microsoft •SAP •Salesforce •IBM •RedHat
  • 18. OData Libraries www.odata.org/libraries • Java • .Net • JavaScript • Objective-C • Python • Ruby • Node.js • PHP • C++
  • 19. OData-Supporting Products •Microsoft SQL Server •Windows Azure Active Directory •SAP NetWeaver • IBM WebSphere •JBoss Teiid •Salesforce1 Platform Connect
  • 21. OData Summary •Standardizes data-centric web services •Exposes Data and Metadata •JSON or XML (Atom/AtomPub) representation over HTTP •Wide industry support

Editor's Notes

  • #3: Key Takeaway: We are a publicly traded company. Please make your buying decisions only on the products commercially available from Salesforce.com. Talk Track: Before I begin, just a quick note that when considering future developments, whether by us or with any other solution provider, you should always base your purchasing decisions on what is currently available.
  • #8: Proposed by MSFT 2009 V1, 2, 3 (April 2012) – MSFT (Open Specification Promise) V4 – March 2014
  • #9: Service Root URL + Resource Path + Query Options
  • #21: Currently supporting OData V2.0 Plan to skip V3.0 and support V4.0 in Summer ‘15 release.