Fact-checked by Grok 2 weeks ago

Open Data Protocol

The Open Data Protocol (OData) is an that defines a set of best practices for building and consuming RESTful APIs, enabling the creation and consumption of queryable and interoperable APIs using standardized HTTP conventions. Developed initially by as a data access protocol built upon core web standards like HTTP, , and , OData facilitates the exposure of s via URLs for reading, querying, and modifying resources in a vendor-neutral manner. It supports a conceptual that describes structured entities, their relationships, and behaviors, making it suitable for integrating disparate systems across platforms. OData's origins trace back to 2007, when Microsoft announced it as an incubation project codenamed Astoria during the MIX conference, aiming to simplify data services over the web. Early versions (1.0 through 3.0) were released under the Microsoft Open Specification Promise to encourage adoption. In 2012, Microsoft and partners including Citrix, IBM, Progress Software, SAP, and WSO2 submitted OData to the Organization for the Advancement of Structured Information Standards (OASIS) for broader standardization. Version 4.0 was approved as an OASIS standard in March 2014, marking a significant evolution with enhanced support for JSON and improved interoperability. OData 4.01, approved as an OASIS standard in May 2020, introduced further enhancements while maintaining backward compatibility. OData v4 was ratified as an ISO/IEC international standard in 2016, specifically under ISO/IEC 20802-1 for the protocol and ISO/IEC 20802-2 for the JSON representation format. Key features of OData include its use of a metadata document to describe the data model, allowing clients to discover available services dynamically; support for standard query options such as filtering (filter), sorting (orderby), pagination (top and skip), and selecting fields ($select); and operations for creating, updating, and deleting entities via HTTP methods like POST, PATCH, and DELETE. It also accommodates advanced capabilities like batch requests for efficiency, asynchronous operations, and extensibility through functions and actions, while maintaining compatibility with REST principles to promote loose coupling between clients and servers. Adopted widely in enterprise software, OData powers APIs in platforms like Microsoft Dynamics 365, SAP, and various cloud services, with open-source libraries such as Apache Olingo (Java) and Restier (.NET) facilitating implementation.

History and Development

Origins and Early Versions

The origins of the Open Data Protocol (OData) trace back to Microsoft's internal project codenamed Astoria, announced in May 2007 at the MIX '07 conference. Astoria was designed to simplify data access and manipulation over HTTP by enabling applications to expose and consume data as RESTful services, leveraging web standards like Atom Publishing Protocol (AtomPub) and XML without requiring custom APIs. This initiative addressed the need for interoperable across corporate networks and the web, allowing clients to query and update data using standard HTTP methods. Building on Astoria, which evolved into Data Services, Microsoft formalized the protocol as OData and published Version 1.0 of the specification on July 2, 2009, under the Open Specification Promise (OSP), a commitment not to assert patent rights against implementations of the documented technologies. The OSP ensured broad adoption by providing legal assurances for developers and vendors. Version 1.0 focused on core RESTful principles, defining how services expose entity data models via URIs, support CRUD operations through HTTP verbs, and use AtomPub for feeds and XML for payloads. OData Version 2.0, published on March 12, 2010, extended Version 1.0 as a superset with enhancements for broader applicability. Key additions included support for server-side paging using top and skip query options to handle large datasets efficiently, native JSON format alongside Atom/XML for lighter-weight payloads suitable for web and mobile clients, and improved querying capabilities such as filter with logical operators and orderby for sorting. These features aimed to enhance performance and flexibility in data retrieval without custom server-side logic. Version 3.0, released on June 4, 2010, further refined the protocol while remaining backward-compatible with prior versions. Notable advancements encompassed function imports (also known as service operations), allowing services to expose custom server-side functions invocable via HTTP POST for complex operations beyond standard CRUD; enhanced batching support to group multiple requests in a single HTTP call using multipart MIME, reducing round-trips; and refinements to the JSON verbose format for richer metadata inclusion. These updates prioritized conceptual interoperability and scalability, enabling more sophisticated data services while adhering to web standards. Throughout its early proprietary development, OData's primary motivation was to facilitate seamless, standards-based across heterogeneous systems, eliminating the silos created by proprietary APIs and promoting reuse through uniform query and manipulation patterns. This foundation paved the way for broader industry collaboration.

Evolution to Standardization

In 2012, , along with Citrix, , , , and , submitted the Open Data Protocol (OData) to the Organization for the Advancement of Structured Information Standards () to promote broader adoption and ensure beyond proprietary implementations. This move transitioned OData from Microsoft's Open Specification Promise to an open standardization process, with the OASIS OData Technical Committee formally chartered in August 2012. The committee advanced OData to version 4.0, approving it as a Committee Specification 01 on August 14, 2013, followed by its ratification as an OASIS Standard on February 24, 2014, with public approval announced in March. Key enhancements in version 4.0 included a unified abstract data model supporting runtime type specifications and complex keys, expanded support for any content type with JSON as the preferred format and configurable metadata levels, instance annotations for per-instance metadata using standard vocabularies, and capabilities documents to describe service features via the Capabilities vocabulary. OData 4.01, approved as Committee Specification 01 on January 30, 2018, introduced refinements such as default namespaces for unqualified model references, versioning for handling breaking changes, support for key-less entity types, and asynchronous operations via the AsyncResult response header, alongside continue-on-error processing for batch requests. OData 4.01 was subsequently approved as an Standard on June 18, 2020. In February 2024, the OData Technical Committee approved OData 4.02 Part 1: Protocol as Committee Specification Draft 01 on February 28, focusing on enhancements to URL conventions for better resource identification and expanded service descriptions through improved metadata structures, followed by a public review starting on April 9, 2024. As of November 2025, it remains in draft form. This iteration continues the protocol's evolution toward greater precision in RESTful interactions and service discoverability.

Standardization Process

OASIS OData Technical Committee

The OASIS Open Data Protocol (OData) Technical Committee (TC) was established in 2012 to standardize the OData protocol, following a call for participation issued on June 11, 2012. Initially chaired by Michael Pizzo of , the committee received key contributions from organizations including , , and , building on prior OData versions developed under the Microsoft Open Specification Promise. The committee's primary responsibilities include defining and refining OData specifications to enable interoperable, REST-based over HTTP, approving new versions, and managing extensions such as JSON Batch for request bundling and for annotating data models. It oversees the development of core components like the protocol reference, Common Schema Definition Language (CSDL), and Augmented Backus-Naur Form (ABNF) constructions, while providing guidance for implementations across , , and environments. Key milestones under the include the approval of OData Version 4.0 as an Standard on March 16, 2014, which introduced enhancements like improved support and delta processing. Subsequent efforts have focused on maintenance, such as publishing errata for Version 4.0 in July 2016 and approving Version 4.01 as an Standard in June 2020, alongside ongoing specification of parts like Part 1: Protocol and Part 2: URL Conventions. Membership in the TC is open to OASIS organizational members, who nominate representatives to participate in meetings and voting, fostering collaboration among vendors, developers, and users. For transparency, all proceedings, including minutes and document drafts, are maintained in public archives accessible via the OASIS website.

ISO/IEC International Standard

In 2015, following the ratification of OData Version 4.0 as an OASIS Standard, the OASIS Open Data Protocol (OData) Technical Committee submitted the specifications to ISO/IEC JTC 1/SC 32 for adoption under the Publicly Available Specification (PAS) transposition process. This submission led to the approval and publication of the core elements as international standards in December 2016. Specifically, the OData 4.0 core protocol, defining the semantics and facilities for REST-based data services, was adopted as ISO/IEC 20802-1:2016 (Information technology — Open Data Protocol (OData) v4.0 — Part 1: Core). Complementing this, the OData JSON Format Version 4.0, which specifies representations for requests and responses using JavaScript Object Notation (JSON), was standardized as ISO/IEC 20802-2:2016 (Information technology — Open Data Protocol (OData) v4.0 — Part 2: OData JSON Format). These ISO/IEC standards build on the foundational specifications, including references to conventions and the Common Schema Definition Language (CSDL) for entity , ensuring a cohesive . The standardization , managed by ISO/IEC JTC 1/SC 32 ( and interchange), confirms the maturity and of OData for global use. As of 2025, ISO/IEC 20802-1:2016 and ISO/IEC 20802-2:2016 remain current following . The adoption as ISO/IEC standards enhances OData's credibility in enterprise and institutional environments by providing a globally recognized benchmark for exchange. It promotes consistency in implementations across borders, reducing fragmentation in RESTful API development and . Furthermore, it supports in sectors like and , where standardized protocols facilitate secure and interoperable , accelerating adoption in initiatives. Subsequent updates, such as OData Version 4.01 (approved as an Standard in 2020) and Version 4.02 (published in 2024), introduce incremental enhancements like improved delta responses and temporal extensions while maintaining with the ISO/IEC 20802 series. These evolutions are developed by the OData TC and aligned for potential future incorporation into ISO processes to keep the international standards relevant.

Core Architecture

Data Model and Resources

The Entity Data Model (EDM) forms the foundational abstract model in OData, providing a for describing the structure and relationships of data exposed by services. It defines types and resources independently of any physical storage, enabling interoperability across diverse data sources. At its core, the EDM includes three primary type categories: EntityTypes, ComplexTypes, and PrimitiveTypes. EntityTypes are nominal structured types that represent addressable resources, such as customers or products, and must include a key composed of one or more primitive properties to uniquely identify instances within a collection. ComplexTypes are keyless structured types used to compose related properties, like an address consisting of street, city, and fields, and can be nested within EntityTypes or other ComplexTypes. PrimitiveTypes supply the atomic building blocks, including scalars such as Edm.String, Edm.Int32, Edm.Boolean, and temporal types like Edm.DateTimeOffset. Resources in the EDM are the addressable elements that services expose, organized within an EntityContainer that serves as the root for the model's instances. EntitySets represent collections of entities conforming to a specific EntityType, providing entry points for querying and manipulating sets of related data, such as a set of orders. Singletons offer direct access to a unique entity instance without requiring a key predicate, useful for representing singular resources like a primary supplier. Relationships between entities are modeled via Navigation Properties, which are defined on EntityTypes as properties pointing to related EntityTypes or collections thereof, supporting cardinalities such as , one-to-many, or many-to-many. These properties enable clients to traverse associations declaratively, with optional referential constraints for integrity. Key concepts in the EDM extend beyond types and resources to include structural and operational elements. Structural properties encompass the attributes of EntityTypes and ComplexTypes, including keys—a required subset of primitive properties that ensure entity uniqueness—and regular properties that can hold primitive values, complex structures, or collections. Open types allow dynamic properties beyond the declared schema for flexibility in evolving data models. Procedurally, actions define side-effect-capable operations, such as updating inventory, which are bound to specific resources or unbound for general use, and invoked via POST requests. In contrast, functions represent side-effect-free, composable operations, like calculating the highest-rated products, invocable via GET and integrable into larger queries. The has evolved significantly across OData versions, transitioning from the simpler abstractions in —which relied on Atom feeds for representation, used explicit and association sets for relationships, and lacked native support for actions and functions—to a more extensible and annotation-driven model in version 4.0 and later. This evolution introduced abstract base types, type definitions, entity references, and vocabularies for semantic extensions, enhancing expressiveness while maintaining through versioning rules. In v4.01 and beyond, refinements like optional keys for singletons and improved decimal handling further refined the model for broader applicability.

RESTful Service Design

The Open Data Protocol (OData) is designed as a REST-based protocol that leverages standard HTTP methods to enable (CRUD) operations on data resources. Specifically, it employs GET requests for retrieving data, POST for creating new entities, PUT and PATCH for updating existing ones, and DELETE for removing resources, all while adhering to REST principles such as and uniform resource addressing via URIs. This approach allows OData services to integrate seamlessly with web architectures, providing a standardized way to expose and consume data over HTTP without requiring custom APIs. At the core of an OData service's design is the service root , which serves as the primary for clients to discover the available resources and operations. A GET request to the service root returns a service document in or format, listing entity sets, singletons, functions, and actions that the service supports, thereby facilitating navigation and introspection. Complementing this, the metadata endpoint—accessible via appending "/metadata" to the service root —provides a comprehensive of the service's , including entity types, relationships, and annotations, typically in an EDMX ( Data Model XML) format or its equivalent. These endpoints ensure that clients can dynamically understand the service's structure and capabilities without prior knowledge. To optimize network efficiency, OData supports batch requests, which bundle multiple independent operations into a single HTTP POST request to the service root , using the content type. Each operation within the batch is encapsulated in its own part, allowing for processing or individual error handling while maintaining transaction-like boundaries through optional change sets. This feature is particularly useful for scenarios involving high-latency connections, as it reduces the number of round trips compared to sequential individual requests. OData services advertise their supported features through the Capabilities , integrated as annotations within the $metadata document, rather than a standalone . This allows services to declare conformance to optional elements, such as support for filtering, expansions, or specific query options, by annotating the entity container or relevant schema elements—for instance, using terms like FilterRestrictions or ExpandRestrictions to indicate limitations. By default, services are assumed to support core capabilities unless explicitly restricted, promoting while enabling precise capability discovery.

Protocol Operations

Resource Identification

In the Open Data Protocol (OData), resources are identified and addressed using Uniform Resource Identifiers (URIs) that conform to a structured set of conventions, enabling clients to discover and access data exposed by an OData service. The service root URL serves as the entry point, typically ending with a forward slash (e.g., http://host/service/), and a GET request to this URL returns a service document in either XML ( format) or , depending on the client's Accept header. This service document enumerates the top-level resources available, including EntitySets (collections of entities, such as Products), Singletons (individual entities without keys, such as BestProduct), Functions (queryable operations like MostExpensiveProduct), and Actions (invocable operations like ReturnProduct). By providing hyperlinks to these resources, the service document facilitates hypermedia-driven exploration, allowing clients to navigate the service without prior knowledge of its structure. The document, accessible via the special segment $metadata appended to the service root (e.g., http://host/service/$metadata), offers a comprehensive description of the service's and operations. Returned in XML format by default, it represents the Entity Data Model (EDM) using the Conceptual Schema Definition Language (CSDL), detailing entity types, complex types, enums, navigation properties, functions, actions, and annotations. This document enables client-side validation, type checking, and , ensuring by defining the against which all resources are interpreted. For instance, it specifies key properties for entities and the structure of EntitySets, allowing clients to construct valid URIs dynamically. Canonical URL patterns in OData follow a hierarchical resource path starting from the service root, identifying entities through their containing or followed by a predicate in parentheses (e.g., /Products(1) for a specific product identified by value 1). For related resources, properties are appended after the entity path (e.g., /Products(1)/Supplier to access the supplier linked to that product via a property). Keys can be simple (single value) or compound (multiple values separated by commas, e.g., /Orders(101,'2014-12-01')), and the full includes the service root to ensure persistence and bookmarkability of references. These patterns support addressing , , and collection-valued directly (e.g., /Products(1)/[Price](/page/Price) for a ). Dynamic resources, such as computed (derived s not stored in the database) and stream properties (media or ), are addressed using specific segments appended to the base resource path. Computed properties follow the same access pattern as structural ones (e.g., /Products(1)/Description for a computed textual description), while streams use the $value segment to retrieve raw (e.g., /Products(1)/Image/$value for data, with appropriate Content-Type headers). These conventions allow uniform treatment of dynamic elements within the RESTful addressing scheme, without requiring separate endpoints.

Querying and Filtering

The Open Data Protocol (OData) enables clients to query and filter data resources through standardized system query options appended to resource URLs, allowing retrieval and manipulation of data without custom server-side code. These options apply to collections of entities, entity sets, or single entities, facilitating efficient data access over HTTP. By standardizing query syntax, OData ensures across services while minimizing the need for . The $filter system query option restricts results to a subset of resources that satisfy a , using comparison operators such as eq (equals), ne (not equals), gt (greater than), and logical operators like and, or, and not. It also supports built-in functions for string manipulation, such as contains(property, 'value') for substring matching, startswith, and endswith, as well as arithmetic and date functions. For example, a query like Products?$filter=contains(Name, 'Milk') and Price gt 1.00 retrieves products whose name includes "Milk" and cost more than $1.00. This option evaluates the expression for each resource in the addressed collection, enabling precise, declarative filtering directly in the URL. The $select option specifies a projection of properties to include in the response, reducing data transfer and improving performance by excluding unnecessary fields. Clients list comma-separated property paths, such as Products?$select=Name,[Price](/page/Price),[Category](/page/Category)/Name, which returns only the Name, Price, and nested Category Name for each product. This projection applies to the top-level entity and any expanded navigation properties, ensuring focused responses without altering the underlying . Sorting is handled by the $orderby option, which orders results based on one or more properties in ascending (asc) or descending (desc) direction, with multiple properties separated by commas. For instance, Orders?$orderby=OrderDate desc,Amount asc sorts orders first by date (newest first) and then by amount (smallest to largest). This allows clients to request ordered data streams without server-specific logic, supporting dynamic result presentation. Paging is achieved using $top and $skip, which control the number of entries returned and into the collection, respectively. The $top=n limits the response to the first n items after any filtering or , while $skip=m omits the first m items. A common pattern is Products?$top=10&$skip=20, which retrieves items 21 through 30. These options are essential for handling large datasets, enabling client-side without full collection downloads. Services may include a @odata.nextLink in responses to facilitate subsequent pages. To include related entities without additional requests, the $expand option navigates to associated resources via navigation properties. Specified as a comma-separated list, such as Orders?$expand=Customer,Items, it embeds the related and Items collections inline within each order response. Nested expansions like $expand=Customer/Address are supported, allowing multi-level inclusion while respecting any applied filters or selects. This reduces round-trips and latency for graph-based queries. Full-text search across properties is provided by the $search option, which applies a free-text query expression to searchable terms in the addressed collection. Using simple terms or phrases with operators like and, or, and not, such as Products?$search='red OR blue', it matches resources based on service-defined full-text capabilities, often leveraging underlying indexes. The option supports quoted phrases for exact matches and parentheses for grouping, enabling natural language-like queries without property-specific filters.

Data Modification

OData supports modifying data through standard HTTP methods applied to resource URLs. To create a new entity, clients send a POST request to the containing EntitySet with the entity representation in the request body, using the appropriate Content-Type (e.g., application/json). If successful, the server responds with 201 Created and the location of the new entity in the Location header. For example, POST /Products with a JSON body creates a new product. Updating an existing uses for partial updates or PUT for full replacement, targeted at the 's canonical (e.g., PATCH /Products(1)). The request body contains the changed properties, and the response is typically 204 No Content for successful updates. updates allow specifying only modified fields, promoting efficient partial modifications. To delete an , a DELETE request is sent to its canonical (e.g., DELETE /Products(1)), resulting in a 204 No Content response if successful. These operations adhere to the defined in the , ensuring type-safe modifications and handling of relationships through navigation properties. For executing multiple operations efficiently, the $batch groups requests into a single HTTP using a multipart/mixed body format, supporting of independent operations or sequential execution within changesets for atomicity. Each batch part encapsulates a full OData request (e.g., GET with query options or for creation), allowing dependencies via Content-ID headers for conditional actions like updates based on prior reads. For example, a batch might combine a filtered GET and a related creation, processed in one to minimize overhead. This is particularly useful for complex workflows involving querying and modifications.

Data Representation and Formats

JSON and Atom Payloads

The Open Data Protocol (OData) supports multiple formats for request and response payloads, with serving as the preferred lightweight option in version 4.0 and later. The format extends standard by incorporating @odata annotations to embed essential directly within the payload, such as context URLs, entity types, and tags, without requiring separate metadata documents. This approach enables efficient of entities, collections, and operations while maintaining RESTful principles. Key annotations include @odata.context, which provides a URL referencing the metadata document and the specific resource type (e.g., http://host/service/$metadata#Customers/$entity); @odata.type, which specifies the entity's type name (e.g., #Model.VipCustomer); and @odata.etag, which conveys an entity tag for optimistic concurrency (e.g., W/"MjAxMy0wNS0yN1QxMTo1OFo="). These annotations appear as name-value pairs prefixed with @odata., allowing clients to interpret the and relationships without additional requests. For instance, a simple entity response in might appear as follows:
json
{
  "@odata.context": "http://[host](/page/Host)/[service](/page/Service)/$metadata#Customers/$[entity](/page/Entity)",
  "[ID](/page/ID)": "ALFKI",
  "CompanyName": "Alfreds Futterkiste"
}
Collections include [a value](/page/A_value) array of entities, optionally with @odata.count for the total item . Deep inserts, which allow creating an entity along with related nested entities in a single request, use bindings like @odata.bind to reference existing related resources. An example deep insert payload for a with items is:
json
{
  "Customer": {
    "[ID](/page/ID)": "ANEWONE"
  },
  "Items": [
    {
      "[email protected]": "Products(28)"
    }
  ]
}
In contrast, the Atom format, introduced in OData version 2.0 and considered legacy in favor of JSON for newer implementations, uses XML-based Atom syndication feeds (per RFC 4287) and Atom Publishing Protocol (per RFC 5023) to represent resources. Atom payloads structure collections as feeds containing multiple entry elements, where each entry encapsulates an entity with its properties, metadata, and navigation links. Properties are grouped within <m:properties> elements, using XML attributes for types and null indicators (e.g., m:null="true"), while relationships are denoted via <link> elements with rel attributes specifying the navigation property. This format supports content negotiation but is less efficient for modern web applications due to its verbosity. A sample Atom entry payload for a category entity, including properties and a link to related products, is:
xml
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry xml:base="https://services.odata.org/OData/OData.svc/" 
       xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" 
       xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" 
       xmlns="https://www.w3.org/2005/Atom">
  <id>https://services.odata.org/OData/OData.svc/Categories(0)</id>
  <title type="text">Food</title>
  <updated>2010-03-10T10:43:51Z</updated>
  <author><name /></author>
  <link rel="edit" title="Category" href="Categories(0)" />
  <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Products" 
        type="application/atom+xml;type=feed" title="Products" href="Categories(0)/Products" />
  <category term="ODataDemo.Category" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
  <content type="application/xml">
    <m:properties>
      <d:ID m:type="Edm.Int32">0</d:ID>
      <d:Name>Food</d:Name>
    </m:properties>
  </content>
</entry>
in OData allows clients to specify preferred formats via the Accept HTTP header, such as application/json;odata.metadata=minimal for lightweight or application/atom+xml;type=entry for Atom entries. Services respond with the requested format if supported, falling back as needed, ensuring across diverse clients.

Metadata Documents

Metadata documents in the Open Data Protocol (OData) provide a formal description of the service's data model, enabling clients to understand the structure, types, and relationships of available resources without prior knowledge. These documents are primarily expressed using the Common Schema Definition Language (CSDL), which supports both XML and, as of version 4.01, JSON representations of the Entity Data Model (EDM). The XML representation defines the abstract schema for entity types, complex types, and other constructs. The CSDL organizes the within an <edmx:Edmx> , which contains one or more <edmx:Schema> elements. Each includes definitions such as <EntityType>, which specifies the template for entities including their properties, keys, and navigation properties. Properties are declared as <Property> elements with a name, type (e.g., Edm.String or Edm.Int32), and optional facets like nullability. Keys ensure entity uniqueness via a <Key> element referencing property names through <PropertyRef>. Navigation properties, defined in <NavigationProperty> elements, represent relationships to other entities, specifying the target type and multiplicity (e.g., one-to-many). The <EntityContainer> element then exposes these types as resources, such as <EntitySet> for collections of entities or <Singleton> for instances. The JSON representation for CSDL, introduced in OData v4.01, mirrors the XML structure using objects compliant with RFC 8259. The document is a single object starting with $Version (e.g., "4.01"), followed by objects keyed by . types are objects with $Kind: "EntityType", including $Key as an array of property paths, properties as objects with $Type, and navigation properties similarly. This format provides a lightweight alternative for , requested via application/json for $metadata. Annotations extend the CSDL schema by applying vocabulary terms to model elements, allowing for additional semantics without altering the core structure. These are expressed via <Annotation> elements in XML (referencing terms from predefined or custom vocabularies) or equivalent inline objects in JSON. For UI hints, terms from the Org.OData.UI.V1 vocabulary, such as UI.DisplayName or UI.Placeholder, provide guidance for client interfaces. Validation rules leverage the Org.OData.Validation.V1 vocabulary, enabling constraints like Validation.MaxLength or Validation.Pattern on properties. Custom extensions are supported through user-defined vocabularies, where terms can be applied to any model element for domain-specific metadata. A representative excerpt from a CSDL metadata document illustrates these elements, showing an <EntitySet> declaration within an <EntityContainer> and a <ComplexType> with :
xml
<edmx:Edmx Version="4.01">
  <edmx:Schema Namespace="Example">
    <ComplexType Name="Address">
      <Property Name="Street" Type="Edm.String"/>
      <Property Name="City" Type="Edm.String"/>
    </ComplexType>
    <ComplexType Name="USAddress" BaseType="Example.Address">
      <Property Name="State" Type="Edm.String"/>
      <Property Name="ZipCode" Type="Edm.String"/>
    </ComplexType>
    <EntityType Name="Customer">
      <Key><PropertyRef Name="ID"/></Key>
      <Property Name="ID" Type="Edm.Int32"/>
      <Property Name="Name" Type="Edm.String"/>
      <NavigationProperty Name="Address" Type="Example.USAddress"/>
    </EntityType>
    <EntityContainer Name="Container">
      <EntitySet Name="Customers" EntityType="Example.Customer"/>
    </EntityContainer>
  </edmx:Schema>
</edmx:Edmx>
This example declares an Address complex type, derives USAddress from it via the BaseType attribute (inheriting properties while adding new ones), defines a Customer entity type with a key, property, and navigation to the complex type, and exposes the entity set in the container. Versioning in metadata documents is indicated by the Version attribute on the <edmx:Edmx> element (in XML) or $Version property (in JSON), specifying the supported OData protocol version (e.g., "4.01"). Additionally, annotations from the Org.OData.Capabilities.V1 vocabulary describe service capabilities, such as supported query options or change tracking features, allowing clients to adapt their interactions accordingly.

Implementations and Ecosystem

Server and Client Tools

The Open Data Protocol (OData) supports a diverse ecosystem of server and client tools, enabling developers to implement and consume OData services across various programming languages and platforms. These tools range from proprietary frameworks provided by to open-source libraries maintained by and community projects, facilitating the creation of RESTful that adhere to OData standards. Microsoft offers several integrated tools for .NET-based OData implementations. OData is a framework for building OData V4 APIs on the .NET platform, allowing developers to expose data models as queryable endpoints with support for features like filtering, sorting, and pagination directly within or applications. The latest version, OData .NET 8 (released August 2024), targets modern .NET platforms and drops support for .NET Framework, enhancing performance for applications. Simple.OData.Client provides a LINQ-enabled C# client for querying and interacting with OData V4 services, supporting .NET 4.5 and .NET Standard 1.1, and simplifying operations such as entity retrieval and updates through fluent calls. The OData Connector for Power BI enables seamless integration of OData feeds into Power BI for data visualization and , allowing users to connect to remote OData services via and authenticate using standard protocols like . Open-source options provide flexible alternatives for and environments. Apache Olingo is a comprehensive library implementing OData V4 for both producers (servers) and consumers (clients), offering modular components for handling , queries, and data processing in enterprise applications. JayData serves as a unified client library supporting OData among other data sources, enabling CRUD operations and query composition in browser-based or applications through a database-agnostic abstraction layer (though no longer actively maintained as of 2023). OData4J, a framework, implements earlier OData versions (V1-V3) for building producers and consumers, though it has been largely superseded by Olingo for modern V4 compliance. In other ecosystems, SAP Gateway for ABAP facilitates the creation and exposure of OData services within SAP systems, integrating with the ABAP platform to generate services from data models and support Fiori applications through the SAP Gateway Foundation framework. For Node.js, the odata-v4-server library allows developers to build OData V4 endpoints using Express.js, mapping requests to controller functions and handling protocol-level details like query parsing without requiring manual implementation. Python developers can use odata-py, an open-source client library implementing OData V4, built on top of requests and supporting JSON payloads for querying services in data-intensive scripts. Development tooling enhances OData workflow efficiency. Postman collections, such as the official OData tutorial set, provide pre-built HTTP requests for testing service roots, , entity sets, and advanced queries like filtering, allowing developers to validate endpoints interactively. OData to OpenAPI converters, including the OASIS TC's JavaScript-based tool, transform OData CSDL (XML or ) from versions 2.0 to 4.01 into OpenAPI 3.0.x or 3.1.0 specifications, aiding API documentation and integration with tools like Swagger UI.

Notable Applications and Adoption

OData has achieved notable within the , powering data access in () and () applications through Dynamics 365, where it exposes entities for querying and manipulation. In , OData enables RESTful queries on site collections, lists, and documents, supporting advanced filtering and for collaborative data retrieval. services, including the API, leverage OData for standardized access to cloud resources like user data and files, facilitating seamless across environments. Enterprise adoption extends to major vendors beyond . employs OData extensively in S/4HANA, offering over 850 OData , as documented in the SAP API Business Hub, for business operations such as sales, finance, and supply chain data exposure. integrates OData into its data management tools, including Cloud Pak for Data and the Data Server Gateway, allowing RESTful querying of databases like DB2 for analytics and integration scenarios. Governments have adopted OData for open data initiatives to promote transparency and public access. For example, the Open Data Portal supports OData for querying public datasets on government services and resources as of 2025. In specific industries, OData supports diverse applications. platforms benefit from its querying capabilities for product catalogs, as seen in Dynamics 365 Commerce Scale Unit, where OData handle customer and data for operations, and in for scalable commerce integrations. In healthcare, OData facilitates data exchange in open portals, enabling standardized access to epidemiological and administrative records. For , OData enables REST-based access to sensor networks, supporting querying of environmental and device data in embedded systems. Overall adoption reflects growing reliance on OData for interoperable APIs, with thousands of endpoints in enterprise systems like and widespread implementation in cloud services, underscoring its role in scalable data ecosystems.

Extensions and Future Directions

Temporal and Other Extensions

The OData Temporal Extension, approved as a Committee Specification by in 2022, introduces support for time-dependent data by defining semantics and representations for temporal objects that evolve over time. It distinguishes between application time, which tracks the validity period of data in the real world, and , which records when changes occur in the system. Temporal data is represented as time slices within entity sets, enabling services to expose snapshots that hide temporal aspects or full timelines that reveal them explicitly. Key to this extension are valid-from and valid-to properties, typically named "From" and "To," which bound each time slice using closed-open interval semantics by default, though closed-closed intervals are optionally supported. Temporal query functions allow clients to interact with this data efficiently; for instance, the $at function retrieves a snapshot of an entity at a specific point in time, while $from, $to, and $toInclusive filter time slices within a specified range. Operations like update, upsert, and delete are adapted to apply over temporal periods, ensuring changes propagate correctly across timelines. Annotations from the Org.OData.Temporal.V1 vocabulary, such as ApplicationTimeSupport and Timeline, declare these capabilities on entity sets. The JSON Batch Extension, introduced in OData Version 4.01 and standardized by in 2020, provides a JSON-based representation for batch requests and responses, enabling efficient grouping of multiple operations into a single HTTP request. Unlike the multipart/mixed format of OData v4.0, this extension uses a single object containing a requests array, where each request specifies a method (e.g., GET, , ), url, optional headers, and body. Responses follow a parallel responses array, maintaining order and including status codes, headers, and bodies as needed. This format supports atomicity groups for all-or-nothing processing, dependencies between requests via dependsOn, and referencing of entities or ETags from prior operations (e.g., using @id or &#36;1/Orders). It also accommodates asynchronous processing with the respond-async preference and partial results via nextLink. The Extension, part of OData Version 4.0 and maintained by the OData Technical Committee, allows services to define and apply custom terms for adding domain-specific without altering the core . consist of a term from a named vocabulary, a (e.g., an type or ), and a value, enabling extensions like permissions (e.g., read/write restrictions) or guidance (e.g., descriptions for client rendering). Vocabularies are grouped under namespaces, with standard ones including [Org](/page/Org).OData.Core.V1 for basic terms like Permissions and Description, [Org](/page/Org).OData.Capabilities.V1 for service constraints such as InsertRestrictions and FilterRestrictions, [Org](/page/Org).OData.Authorization.V1 for security schemes, and [Org](/page/Org).OData.Validation.V1 for rules like patterns and ranges. This extensibility promotes interoperability by allowing vendors to annotate services with specialized terms while adhering to OData's data model. Other ratified extensions include measures for aggregations, defined in the OData Extension for Data Aggregation Version 4.0, which enable grouping and computation on datasets without modifying the base protocol. Measures are aggregatable properties or expressions, annotated via AggregatableProperties in the ApplySupported term from the Aggregation vocabulary, and applied using the aggregate transformation in the $apply query option (e.g., aggregate(Amount with sum as Total)). Supported functions encompass standard ones like sum, min, max, average, and countdistinct, as well as custom namespace-qualified methods, with results appearing as dynamic properties aliased for clarity. Annotations such as AvailableOnAggregates specify applicable functions and required properties for aggregated entities. Delta Queries, enhanced in OData Version 4.01 for change tracking, allow clients to retrieve only modifications to a result set since a prior request, improving efficiency. Services advertise support via the Capabilities.ChangeTracking term, and clients initiate tracking with the track-changes preference, prompting the return of a link—an opaque encoding the defining query and starting point. Subsequent GET requests to this link yield a response containing added, changed, or deleted entities, without appending additional query options. tokens, embedded as $deltatoken in , are service-specific and opaque, ensuring incremental updates. v4.01 enhancements include case-insensitive query options, consistent links across paged results, optional /$[count](/page/Count) for change counts, and the callback preference for asynchronous notifications.

Emerging Developments

In 2024, the Open Data Protocol (OData) Technical Committee approved version 4.02 as a Committee Specification Draft, introducing enhancements to the protocol's core semantics and facilities, including refined support for asynchronous requests and to improve streaming capabilities for large datasets. These updates build on existing features like the $batch query option, enabling more efficient handling of concurrent operations without blocking, which addresses performance bottlenecks in high-throughput environments. A notable research initiative emerged in 2025 with the ODataX proposal, outlined in a that analyzes barriers to OData's broader , such as its complex query syntax and limited with frontend frameworks. ODataX proposes a progressive evolution of the protocol, featuring simplified query syntax (e.g., filter=price>100 instead of $filter=Price gt 100) and GraphQL-inspired elements like named query aliases for reusable patterns, while maintaining with OData v4. Performance improvements include query cost estimation to prevent resource-intensive operations—limiting queries exceeding 500 cost units—and enhanced caching mechanisms that reduce backend load by approximately 40% in read-heavy scenarios, as demonstrated on datasets like the TPC-H with 1 million records. Integration trends are shifting toward hybrid models combining OData with contemporary protocols to support modern API ecosystems. For instance, ODataX envisions translation layers for to enable flexible, client-driven querying alongside OData's structured filtering, facilitating seamless adoption in web and mobile applications. Similarly, explorations of OData alongside aim to leverage the latter's binary efficiency for server-to-server communications in , though direct implementations remain experimental as of 2025. In AI and contexts, OData's query capabilities are increasingly used for accessing structured data in pipelines, with proposals like ODataX extending support for efficient retrieval from vector databases to enable similarity searches in embedding-based models. Ongoing challenges in OData's evolution center on security and scalability, particularly for applications. The ODataX framework recommends integrating 2.0 and JWT tokens with query cost estimation to mitigate denial-of-service risks from complex filters, ensuring token-based aligns with zero-trust principles. Scalability efforts focus on optimizing for distributed systems, where caching and threshold-based query limits help manage petabyte-scale datasets without overwhelming servers. Looking ahead, future directions emphasize expanding ecosystem support through open-source tools and standards alignment, potentially incorporating AI-driven query optimization to further enhance adoption in cloud-native and environments.

References

  1. [1]
    OData - the Best Way to REST
    OData (Open Data Protocol) is an ISO/IEC approved, OASIS standard that defines a set of best practices for building and consuming RESTful APIs.Basic TutorialUnderstand OData in 6 steps
  2. [2]
    OData documentation - Microsoft Learn
    OData (Open Data Protocol) is an ISO/IEC approved, OASIS standard that defines a set of best practices for building and consuming REST APIs.
  3. [3]
    OData v4.0 - OASIS Open
    Voting history: Voting History for OASIS Standard, February 2014. Voting History for Approved Errata 01, September 2014. Voting History for Approved Errata 02 ...
  4. [4]
    Why Microsoft's Open Data Protocol matters - ZDNET
    May 13, 2012 · OData started back in 2007 at the second Microsoft Mix conference. The announcement was an incubation project codenamed Astoria. The purpose of ...
  5. [5]
    What Is OData? Open Data Protocol Explained - NinjaOne
    Feb 26, 2024 · OData, or Open Data Protocol, is an open standard that defines a set of best practices for building and consuming RESTful APIs.
  6. [6]
  7. [7]
    Documentation · OData - the Best Way to REST
    OData has been standardized by OASIS and approved as an ISO/IEC International Standard. The OASIS OData Technical Committee has published the latest OData ...Missing: history | Show results with:history
  8. [8]
    Open Data Protocol (OData) - Finance & Operations | Dynamics 365
    Nov 1, 2024 · OData is a standard protocol for creating and consuming data. The purpose of OData is to provide a protocol that is based on Representational State Transfer ( ...
  9. [9]
    OASIS Open Data Protocol (OData) TC
    OData V4.01 and OData JSON Format V4.01 Committee Specifications 01 are published; 30 January 2018. ISO/IEC JTC 1 Approves OASIS OData Standard for Open ...
  10. [10]
    Astoria: Microsoft's RESTful Data Services - InfoQ
    May 4, 2007 · Microsoft has announced the Project Astoria at MIX '07. Astoria offers a RESTful approach to expose data as data services on the web.
  11. [11]
    Welcome! - OData - Microsoft Developer Blogs
    The goal of the Astoria project is to enable applications to expose data as a data service that can be consumed by web clients within corporate networks and ...Missing: origins | Show results with:origins
  12. [12]
    Project Codename "Astoria" - OData - Microsoft Developer Blogs
    The Astoria team (part of the “Data Programmability” (DP) team within the SQL Server organization at Microsoft) is responsible for analyzing how current and ...
  13. [13]
    [MS-ODATA]: Open Data Protocol (OData) - Microsoft Learn
    Oct 29, 2020 · Published Version. Expand table. Date. Protocol Revision. Revision Class. Downloads. 3/13/2019. 21.0. Major. PDF | DOCX | Diff · Click here to ...Missing: V1 | Show results with:V1
  14. [14]
    [MS-DEVCENTLP]: Open Specification Promise | Microsoft Learn
    Published: September 12, 2006 | Revised: February 24, 2023 Microsoft irrevocably promises not to assert any Microsoft.
  15. [15]
    Overview (OData Version 2.0) · OData - the Best Way to REST
    The Open Data Protocol (OData) enables the creation of HTTP-based data services, which allow resources identified using Uniform Resource Identifiers (URIs)
  16. [16]
    Batch Processing (OData Version 3.0) · OData - the Best Way to REST
    Batching in OData 3.0 allows grouping multiple operations into a single HTTP request, using a multipart MIME message, with query operations and ChangeSets.
  17. [17]
    Breaking Down 'Data Silos' – The Open Data Protocol (OData)
    Nov 17, 2009 · Driven by the goal to enable simple data sharing across disparate data sources, today, at PDC, we are announcing the Open Data Protocol (OData).
  18. [18]
    OData submitted to OASIS for standardization
    May 24, 2012 · I'm happy to announce that Citrix, IBM, Microsoft, Progress Software, SAP and WSO2 are jointly submitting a proposal for the standardization of OData to OASIS.
  19. [19]
    OASIS Launches Initiative to Standardize REST-based Open Data ...
    Aug 27, 2012 · 27 August 2012 – The OASIS international consortium has launched a new initiative that will standardize OData, a REST-based protocol that ...
  20. [20]
    OData Version 4.0 Part 1: Protocol - OASIS Open
    OData Version 4.0 Part 1: Protocol. 14 August 2013. OASIS Committee Specification 01. http://docs.oasis-open.org/odata/odata/v4.0/cs01/ ...
  21. [21]
    OASIS Approves OData 4.0 Standards for an Open, Programmable ...
    Mar 17, 2014 · OData 4.0 and the OData JSON Format 4.0 are now official OASIS Standards, a status that signifies the highest level of ratification. OData ...
  22. [22]
    What's New in OData Version 4.0
    ### Key Changes in OData Version 4.0
  23. [23]
    OData Version 4.01. Part 1: Protocol - OASIS Open
    Edited by Michael Pizzo, Ralf Handl, and Martin Zurmuehl. 30 January 2018. OASIS Committee Specification 01. http://docs.oasis-open.org/odata/odata/v4.01/cs01/ ...
  24. [24]
    What's New in OData Version 4.01 - Index of /
    Sep 26, 2019 · OASIS Committee Note. What's New in OData Version 4.01. Committee Note 04. 26 September 2019. This version:.
  25. [25]
    OASIS OData Technical Committee Call for Participation
    OASIS announced today the Call for Participation for the new OASIS OData Technical Committee tasked with the responsibility of producing the OData Standard.Missing: formation November
  26. [26]
    OASIS Open Data Protocol (OData) Technical Committee | Charter
    The purpose of the Open Data Protocol (OData) Technical Committee (TC) is to define an open data protocol for sharing data and exposing data models ...Missing: formation November
  27. [27]
    OData V4.0 Approved as a New OASIS Standard
    Mar 17, 2014 · OData V4.0 has officially been approved as a new OASIS standard. OData V4 is the result of a year and a half of hard work from the OASIS Technical Committee.Missing: history | Show results with:history
  28. [28]
    New Version of REST-based Open Data Protocol (OData) Approved ...
    Jun 17, 2020 · 18 June 2020 – The OASIS open standards consortium announced that its members have approved Open Data Protocol (OData) Version 4.01 as an OASIS ...
  29. [29]
    ISO/IEC JTC 1 Approves OASIS OData Standard for Open Data ...
    Feb 21, 2017 · OData 4.0 and OData JSON 4.0 were ratified as OASIS Standards in February 2014 and subsequently submitted by OASIS to the ISO/IEC JTC 1 ...
  30. [30]
    ISO/IEC 20802-1:2016 - Information technology — Open data ...
    2–5 day deliveryISO/IEC 20802-1:2016 defines the core semantics and facilities of the Open Data Protocol (OData). This enables the creation of REST-based data services.
  31. [31]
    OData Version 4.01 - OASIS Open
    OData enables the creation and consumption of REST-based data services which allow resources, identified using Uniform Resource Locators (URLs) and defined ...Missing: incorporation | Show results with:incorporation
  32. [32]
    OData Version 4.02. Part 1: Protocol
    Feb 28, 2024 · The OData-URL specification defines a set of rules for constructing URLs to identify the data and metadata exposed by an OData service as well ...
  33. [33]
  34. [34]
    OData Version 4.0 Part 3: Common Schema Definition Language ...
    The key consists of one or more references to structural properties of the entity type. An entity type can define two types of properties. A structural ...
  35. [35]
    What's New in OData Version 4.0 - OASIS Open
    Aug 15, 2013 · OData 4.0 includes improved protocol versioning, model versioning, new function extensibility, new header fields, new response status codes, ...
  36. [36]
  37. [37]
  38. [38]
  39. [39]
  40. [40]
  41. [41]
    OASIS OData TC - Vocabularies
    Capabilities annotations are mainly expected to be used to explicitly specify that a service doesn't support such capabilities. Capabilities annotations can as ...
  42. [42]
    OData Version 4.0 Part 1: Protocol - OASIS Open
    The Open Data Protocol (OData) enables the creation of REST-based data services, which allow resources, identified using Uniform Resource Locators (URLs)
  43. [43]
    OData Version 4.0 Part 2: URL Conventions - OASIS Open
    Each instance consists of one non-nullable, single-valued navigation property per joined entity set. Each such navigation property is named identical to the ...<|separator|>
  44. [44]
    OData Version 4.01. Part 2: URL Conventions - Index of /
    The $filter and $orderby query options can be specified using properties of the entities in the selected entity sets, prepended with the entity set as the ...
  45. [45]
    OData JSON Format Version 4.0 - OASIS Open
    This document extends the core specification by defining representations for OData requests and responses using a JSON format.
  46. [46]
    Atom Format (OData Version 2.0) · OData - the Best Way to REST
    OData supports two formats for representing the resources (Collections, Entries, Links, etc) it exposes: the XML-based Atom format and the JSON format.2. Atom Representations · 2.3. Representing... · 2.4. Representing Entries<|control11|><|separator|>
  47. [47]
    OData Common Schema Definition Language (CSDL) XML ...
    Metadata annotations are applied in CSDL documents describing or referencing an entity model. Instance annotations can be used to define additional ...
  48. [48]
    Libraries · OData - the Best Way to REST
    ASP.NET Web API OData is a framework that makes it easy to build OData services that reach a broad range of clients, including browsers and mobile devices. ASP.
  49. [49]
    OData overview - Microsoft Learn
    Dec 9, 2022 · OData (Open Data Protocol) is an ISO/IEC approved, OASIS standard that defines a set of best practices for building and consuming REST APIs.
  50. [50]
  51. [51]
  52. [52]
    Documentation OData 4.0 Java Library - Apache Olingo
    Apache Olingo provides libraries which enable developers to implement OData producers and OData consumers. The available OData Java library implements OData ...
  53. [53]
    jaystack/jaydata: Notice: this library isn't maintained anymore - GitHub
    Apr 11, 2023 · JayData is a unified data access library for JavaScript to CRUD data from different sources like WebSQL/SQLite, IndexedDB, MongoDb, OData, HTML5 localStorage.
  54. [54]
    odata4j - An OData framework for Java
    What is odata4j? odata4j is a Java framework that implements the OData protocol for both consumers (client-side) and producers (server-side). Getting started ...Missing: legacy | Show results with:legacy
  55. [55]
    SAP Gateway and OData | SAP Help Portal
    The SAP Gateway is used to set up and activate the OData services. The OData services are a mandatory component for running SAP Fiori apps: they retrieve the ...
  56. [56]
    jaystack/odata-v4-server - GitHub
    With JayStack OData v4 Server you can build your own data endpoints without the hassle of implementing any protocol-level code. This framework binds OData ...
  57. [57]
    OData/odatapy-client: OData Python client - GitHub
    Sep 21, 2024 · ODataPy is an open-source Python library that implements the Open Data Protocol (OData). It supports the OData protocol version 4.0.
  58. [58]
    python-odata - PyPI
    A simple library for read/write access to OData services. Supports OData version 4.0; Requires JSON format support from the service; Should work on both Python ...
  59. [59]
    Learning OData on Postman · OData - the Best Way to REST
    We create a collection of OData HTTP requests using Postman - an efficient way to test, develop, and document APIs.
  60. [60]
  61. [61]
    Convert OData CSDL JSON or XML to OpenAPI 3.0.x or 3.1.0
    This script converts an OData Version 2.0, 3.0, 4.0, or 4.01 CSDL XML or CSDL JSON ( $metadata ) document into an OpenAPI 3.0.x or OpenAPI 3.1.0 JSON document.
  62. [62]
    Use OData query operations in SharePoint REST requests
    Sep 26, 2023 · The SharePoint REST service supports a wide range of OData query string operators that enable you to select, filter, and order the data you request.
  63. [63]
    Ecosystem · OData - the Best Way to REST
    It is based on SAP CDS (Core Data Services) and provides a developer-friendly way of publishing OData services from Java or node.js applications. SAP Gateway.Producers · Consumers · Odata Sdk - Sample Code
  64. [64]
    ODATA V2 API | SAP S/4HANA
    Provides an intelligent and integrated ERP system that runs on our in-memory database, SAP HANA. Mark as Favorite. Subscribe.
  65. [65]
  66. [66]
    IBM Data Server Gateway for OData · OData - the Best Way to REST
    IBM Data Server Gateway for OData enables you to quickly create OData RESTful services to query and update data in IBM DB2 LUW.
  67. [67]
    Columbia Government Open Data Portal - OData
    Colombia Government open data portal running on OGDI DataLab and Windows Azure. © 2015-2023 OData – The Protocol for REST APIs.<|separator|>
  68. [68]
  69. [69]
    Commerce Scale Unit customer and consumer APIs | Dynamics 365
    Nov 8, 2023 · Commerce Scale Unit business data and operations are available to any connected device through the OData Web API, across both employee (point of ...
  70. [70]
    Rest-based sensor networks with OData | Request PDF
    In this paper we introduce and evaluate an embedded OData implementation. We evaluate the OData protocol in terms of performance and energy consumption, ...
  71. [71]
    OData Extension for Temporal Data Version 4.0 - OASIS Open
    This specification defines how to represent and interact with time-dependent data using the Open Data Protocol (OData).Missing: 2020 | Show results with:2020
  72. [72]
    OData JSON Format Version 4.01 - Index of / - OASIS Open
    This document extends the core specification by defining representations for OData requests and responses using a JSON format.
  73. [73]
    OData Vocabularies Version 4.0 - Index of /
    Jun 19, 2024 · This prose specification describes a set of OData vocabularies maintained by the OASIS OData Technical Committee.Introduction · Core Vocabulary · Capabilities Vocabulary · Aggregation Vocabulary
  74. [74]
    OData Extension for Data Aggregation Version 4.0 - OASIS Open
    This specification adds basic grouping and aggregation functionality (eg sum, min, and max) to the Open Data Protocol (OData) without changing any of the base ...
  75. [75]
    OData Version 4.01. Part 1: Protocol - Index of / - OASIS Open
    The [OData‑URL] specification defines a set of rules for constructing URLs to identify the data and metadata exposed by an OData service as well as a set of ...
  76. [76]
    [PDF] OData Version 4.02. Part 1: Protocol - Index of /
    Feb 28, 2024 · The Open Data Protocol (OData) enables the creation of REST-based data services, which allow resources, identified using Uniform Resource ...
  77. [77]
    odata-v4.02-csd01-public-review-metadata - OASIS Open
    Timeline Summary: Committee Specification Draft 01 with 30-day public review approved 28 February 2024: https://github.com/oasis-tcs/odata-specs/blob ...
  78. [78]
    ODataX: A Progressive Evolution of the Open Data Protocol - arXiv
    This paper analyzes the key barriers preventing wider OData adoption and introduces ODataX, an evolved version of the protocol designed to ...Missing: proposal | Show results with:proposal