computing
Computing is any goal-oriented activity requiring, benefiting from, or creating computing machinery. It includes the study and experimentation of algorithmic processes, and development of both hardware and software. Computing has scientific, ...
, Open Data Protocol (OData) is an open protocol that allows the creation and consumption of queryable and interoperable
REST
Rest or REST may refer to:
Relief from activity
* Sleep
** Bed rest
* Kneeling
* Lying (position)
* Sitting
* Squatting position
Structural support
* Structural support
** Rest (cue sports)
** Armrest
** Headrest
** Footrest
Arts and enter ...
Microsoft
Microsoft Corporation is an American multinational technology corporation producing computer software, consumer electronics, personal computers, and related services headquartered at the Microsoft Redmond campus located in Redmond, Washin ...
initiated OData in 2007. Versions 1.0, 2.0, and 3.0 are released under the
Microsoft Open Specification Promise The Microsoft Open Specification Promise (or OSP) is a promise by Microsoft, published in September 2006, to not assert its patents, in certain conditions, against implementations of a certain list of specifications.
The OSP is not a licence, but ...
. Version 4.0 was standardized at OASIS, with a release in March 2014. In April 2015 OASIS submitted OData v4 and OData JSON Format v4 to ISO/IEC JTC 1 for approval as an international standard. In December 2016, ISO/IEC published OData 4.0 Core as ISO/IEC 20802-1:2016 and the OData JSON Format as ISO/IEC 20802-2:2016.
The protocol enables the creation and consumption of REST APIs, which allow Web clients to publish and edit resources, identified using URLs and defined in a
data model
A data model is an abstract model that organizes elements of data and standardizes how they relate to one another and to the properties of real-world entities. For instance, a data model may specify that the data element representing a car be c ...
, using simple HTTP messages. OData shares some similarities with
JDBC
Java Database Connectivity (JDBC) is an application programming interface (API) for the programming language Java, which defines how a client may access a database. It is a Java-based data access technology used for Java database connectivity. I ...
After initial development by Microsoft, OData became a standardized protocol of the OASIS OData Technical Committee (TC).
OASIS OData Technical Committee
"The OASIS OData TC works to simplify the querying and sharing of data across disparate applications and multiple stakeholders for re-use in the enterprise, Cloud, and mobile devices. A REST-based protocol, OData builds on
HTTP
The Hypertext Transfer Protocol (HTTP) is an application layer protocol in the Internet protocol suite model for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide We ...
,
AtomPub
The name Atom applies to a pair of related Web standards. The Atom Syndication Format is an XML language used for web feeds, while the Atom Publishing Protocol (AtomPub or APP) is a simple HTTP-based protocol for creating and updating web re ...
, and JSON using URIs to address and access data feed resources. It enables information to be accessed from a variety of sources including (but not limited to) relational databases, file systems, content management systems, and traditional Web sites. OData provides a way to break down data silos and increase the shared value of data by creating an ecosystem in which data consumers can interoperate with data producers in a way that is far more powerful than currently possible, enabling more applications to make sense of a broader set of data. Every producer and consumer of data that participates in this ecosystem increases its overall value."
TC participants include
CA Technologies
CA Technologies, formerly known as CA, Inc. and Computer Associates International, Inc., is an American multinational corporation headquartered in New York City. It is primarily known for its business-to-business (B2B) software with a product po ...
Microsoft
Microsoft Corporation is an American multinational technology corporation producing computer software, consumer electronics, personal computers, and related services headquartered at the Microsoft Redmond campus located in Redmond, Washin ...
,
Progress Software
Progress Software Corporation (Progress) is an American public company that offers software for creating and deploying business applications. Headquartered in Burlington, Massachusetts with offices in 16 countries, the company posted revenues ...
SAP SE
Sap is a fluid transported in xylem cells (vessel elements or tracheids) or phloem sieve tube elements of a plant. These cells transport water and nutrients throughout the plant.
Sap is distinct from latex, resin, or cell sap; it is a sepa ...
OData is a protocol for the creation and consumption of RESTful APIs. Thus, as common practices of REST, OData builds on HTTP, AtomPub, and JSON using URIs to address and access data feed resources.
Resource identification
OData uses URIs to identify resources. For every OData service whose service root is abbreviated as ''http://host/service/'', the following fixed resources can be found:
The service document
The service document lists entity sets, functions, and singletons that can be retrieved. Clients can use the service document to navigate the model in a hypermedia-driven fashion.
The service document is available at ''http://host/service/''.
The metadata document
The metadata document describes the types, sets, functions and actions understood by the OData service. Clients can use the metadata document to understand how to query and interact with entities in the service.
The metadata document is available at ''http://host/service/$metadata''.
Dynamic resources
The URIs for the dynamic resources may be computed from the hypermedia information in the service document and metadata document.
Resource operation
OData uses the HTTP verbs to indicate the operations on the resources.
* GET: Get the resource (a collection of entities, a single entity, a structural property, a navigation property, a stream, etc.).
* POST: Create a new resource.
* PUT: Update an existing resource by replacing it with a complete instance.
* PATCH: Update an existing resource by replacing part of its properties with a partial instance.
* DELETE: Remove the resource.
Querying
URLs requested from an OData endpoint may include query options. The OData protocol specifies various 'system query options' endpoints should accept, these can be used to filter, order, map or paginate data.
Query options can be appended to a URL after a ? character and are separated by & characters; each option consists of a $-sign prefixed name and its value, separated by a = sign, for example: OData/Products?$top=2&$orderby=Name. A number of logical operators and functions are defined for use when filtering data, for example: OData/Products?$filter=Price lt 10.00 and startswith(Name,'M') requests products with a price smaller than 10 and a name starting with the letter 'M'.
Resource representation
OData uses different formats for representing data and the data model. In OData protocol version 4.0, JSON format is the standard for representing data, with the
Atom
Every atom is composed of a nucleus and one or more electrons bound to the nucleus. The nucleus is made of one or more protons and a number of neutrons. Only the most common variety of hydrogen has no neutrons.
Every solid, liquid, gas, ...
format still being in committee specification stage. For representing the data model, the Common Schema Definition Language (CSDL) is used, which defines an XML representation of the entity data model exposed by OData services.
A sample OData JSON data payload
A collection of products:
A sample OData Atom data payload
A collection of products:
http://services.odata.org/v4/odata/odata.svc/ProductsProducts2015-05-19T03:38:50Zhttp://services.odata.org/V4/OData/OData.svc/Products(0)2015-05-19T03:38:50Z0BreadWhole grain bread1992-01-01T00:00:00Z42.5http://services.odata.org/V4/OData/OData.svc/Products(1)2015-05-19T03:38:50Z1MilkLow fat milk1995-10-01T00:00:00Z33.5
...
A sample OData metadata document
Ecosystem
The ecosystem of OData consists of the client/server libraries that implement the protocol, and applications that are based on the protocol.
Libraries
There are a number of OData libraries available to access/produce OData APIs:
.NET
* Server and client: Microsoft's OData .NET libraries
* Client: Simple.OData.Client
Java
* Server and client: Apache Olingo
* Server side: Jello-Framework
* Client: odata-client
JavaScript
* Client: Apache Olingo (featured by OASIS)
* Client: data.js
* Client: JayData for higher level of abstraction (LINQ-like syntax, support for OData geo features, IndexedDB, WebSQL, integration for DevExtreme, Kendo UI, Angular.js, Knockout.js and Sencha).
* Client:
OpenUI5
OpenUI5 is a JavaScript application framework designed to build cross-platform, responsive, enterprise-ready applications. It is an open-source project maintained by SAP SE available under the Apache 2.0 license and open to contributions.
OpenUI ...
library maintained by
SAP
Sap is a fluid transported in xylem cells (vessel elements or tracheids) or phloem sieve tube elements of a plant. These cells transport water and nutrients throughout the plant.
Sap is distinct from latex, resin, or cell sap; it is a separ ...
* Client (Node.js): JayData for node
* Client: Breeze
* Client: OData4 and Invantive Bridge Online
* Client: odata-fluent-query: a JavaScript OData query language parser
* Server: node-odata
Other languages implemented include:
* AJAX: ASP.NET Ajax Library for getting to OData.
* C++: odatacpp_client is a client-side-only implementation of the OData protocol.
* Windward Studios supports OData in their Reporting & Document Generation Solutions.
* Reporting tool List & Label has a specialized data provider for OData.
* Blackberry (C++): OData-BB10 Open Data Protocol (OData) library for
BlackBerry 10
BlackBerry 10 is a discontinued proprietary mobile operating system for the BlackBerry line of smartphones, both developed by BlackBerry Limited (formerly Research In Motion). BlackBerry 10 is based on QNX, a Unix-like operating system that was ...
(BB10) Cascades apps
Applications
Applications include:
* Progress DataDirect Hybrid Data Pipeline can expose any cloud, big data or relational data sources as OData end points
* Socrata exposes an OData
API
An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how ...
API
An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how ...
SAP NetWeaver
SAP NetWeaver is a software stack for many of SAP SE's applications. The SAP NetWeaver Application Server, sometimes referred to as WebAS, is the runtime environment for the SAP applications and all of the mySAP Business Suite runs on SAP WebAS: ...
Gateway provides OData access to SAP Business Suite and SAP Business Warehouse.
* IBM WebSphere eXtreme Scale REST data service can be accessed by any HTTP client using OData.IBM developerWorks eXtreme Scale REST data service (OData)
*
Microsoft SharePoint
SharePoint is a web-based collaborative platform that integrates natively with Microsoft Office. Launched in 2001, SharePoint is primarily sold as a document management and storage system, but the product is highly configurable and its usage v ...
2010 and up can expose its data as OData endpoint
*
Office 365
Microsoft 365 is a product family of productivity software, collaboration and cloud-based services owned by Microsoft. It encompasses online services such as Outlook.com, OneDrive, Microsoft Teams, programs formerly marketed under the name ...
exposes OData V4.0 APIs.
*
Salesforce
Salesforce, Inc. is an American cloud-based software company headquartered in San Francisco, California. It provides customer relationship management (CRM) software and applications focused on sales, customer service, marketing automation, a ...
Connect consumes OData APIs.
* Skyvia Connect exposes cloud and database data via OData
*
Tableau
Tableau (French for 'little table' literally, also used to mean 'picture'; tableaux or, rarely, tableaus) may refer to:
Arts
* ''Tableau'', a series of four paintings by Piet Mondrian titled '' Tableau I'' through to ''Tableau IV''
* ''Tableau vi ...
can connect to OData APIs.
* TIBCO Spotfire can connect to OData APIs.
* Mulesoft helps integrate with OData APIs.
* SuccessFactors uses Odata APIs
* Ceridian HCM's Dayforce uses Odata
*
Redfish
Redfish is a common name for several species of fish. It is most commonly applied to certain deep-sea rockfish in the genus ''Sebastes'', red drum from the genus '' Sciaenops'' or the reef dwelling snappers in the genus '' Lutjanus''. It is also a ...
W3C
The World Wide Web Consortium (W3C) is the main international standards organization for the World Wide Web. Founded in 1994 and led by Tim Berners-Lee, the consortium is made up of member organizations that maintain full-time staff working to ...
*
GraphQL
GraphQL is an open-source data query and manipulation language for APIs, and a runtime for fulfilling queries with existing data. GraphQL was developed internally by Facebook (now Meta) in 2012 before being publicly released in 2015. On 7 No ...