Namespace: Org.OData.Capabilities.V1
Terms describing capabilities of a service
There are some capabilities which are strongly recommended for services to support even
though they are optional. Support for $top and $skip is a good example as
supporting these query options helps with performance of a service and are essential. Such
capabilities are assumed to be default capabilities of an OData service even in
the case that a capabilities annotation doesn’t exist. Capabilities annotations are
mainly expected to be used to explicitly specify that a service doesn’t support such
capabilities. Capabilities annotations can as well be used to declaratively
specify the support of such capabilities.
On the other hand, there are some capabilities that a service may choose to support or
not support and in varying degrees. $filter and $orderby are such good examples.
This vocabulary aims to define terms to specify support or no support for such
capabilities.
A service is assumed to support by default the following capabilities even though an
annotation doesn’t exist:
- Countability ($count)
- Client pageability ($top, $skip)
- Expandability ($expand)
- Indexability by key
- Batch support ($batch)
- Navigability of navigation properties
A service is expected to support the following capabilities. If not supported, the
service is expected to call out the restrictions using annotations:
- Filterability ($filter)
- Sortability ($orderby)
- Queryability of top level entity sets
- Query functions
A client cannot assume that a service supports certain capabilities. A client can try, but
it needs to be prepared to handle an error in case the following capabilities are not
supported:
- Insertability
- Updatability
- Deletability
Member |
Value |
Description |
Minimal |
0 |
Minimal conformance level |
Intermediate |
1 |
Intermediate conformance level |
Advanced |
2 |
Advanced conformance level |
Flag Member |
Value |
Description |
Snapshot |
1 |
All data returned for a request, including multiple requests within a batch or results retrieved across multiple pages, will be consistent as of a single point in time |
A non-empty collection lists the full set of supported protocols. A empty collection means 'only HTTP is supported'
Property |
Type |
Description |
Id |
String |
Protocol Identifier |
UrlTemplate |
String |
URL Template including parameters. Parameters are enclosed in curly braces {} as defined in RFC6570 |
DocumentationUrl |
URL |
Human readable description of the meaning of the URL Template parameters |
Property |
Type |
Description |
Supported |
Boolean |
This entity set supports the odata.track-changes preference |
FilterableProperties |
[PropertyPath] |
Change tracking supports filters on these properties |
ExpandableProperties |
[NavigationPropertyPath] |
Change tracking supports these properties expanded |
Member |
Value |
Description |
Recursive |
0 |
Navigation properties can be recursively navigated |
Single |
1 |
Navigation properties can be navigated to a single level |
None |
2 |
Navigation properties are not navigable |
Type: String
Allowed Value |
Description |
SingleValue |
Property can be used in a single eq clause |
MultiValue |
Property can be used in a single in clause |
SingleRange |
Property can be used in at most one ge and/or one le clause, separated by and |
SearchExpression |
String property can be used as first operand in startswith, endswith, and contains clauses |
Property |
Type |
Description |
Sortable |
Boolean |
$orderby is supported |
AscendingOnlyProperties |
[PropertyPath] |
These properties can only be used for sorting in Ascending order |
DescendingOnlyProperties |
[PropertyPath] |
These properties can only be used for sorting in Descending order |
NonSortableProperties |
[PropertyPath] |
These structural or navigation properties cannot be used in $orderby expressions |
Property |
Type |
Description |
Expandable |
Boolean |
$expand is supported |
NonExpandableProperties |
[NavigationPropertyPath] |
These properties cannot be used in $expand expressions |
MaxLevels |
Int32 |
The maximum number of levels that can be expanded in a $expand expression. A value of -1 indicates there is no restriction. |
Flag Member |
Value |
Description |
none |
0 |
Single search term |
AND |
1 |
Multiple search terms separated by AND |
OR |
2 |
Multiple search terms separated by OR |
NOT |
4 |
Search terms preceded by NOT |
phrase |
8 |
Search phrases enclosed in double quotes |
group |
16 |
Precedence grouping of search expressions with parentheses |
Property |
Type |
Description |
Insertable |
Boolean |
Entities can be inserted |
NonInsertableNavigationProperties |
[NavigationPropertyPath] |
These navigation properties do not allow deep inserts |
MaxLevels |
Int32 |
The maximum number of navigation properties that can be traversed when addressing the collection to insert into. A value of -1 indicates there is no restriction. |
Property |
Type |
Description |
Supported |
Boolean |
Service supports deep inserts |
ContentIDSupported |
Boolean |
Service supports accepting and returning nested entities annotated with the contentID instance annotation. |
Property |
Type |
Description |
Updatable |
Boolean |
Entities can be updated |
NonUpdatableNavigationProperties |
[NavigationPropertyPath] |
These navigation properties do not allow rebinding |
MaxLevels |
Int32 |
The maximum number of navigation properties that can be traversed when addressing the collection or entity to update. A value of -1 indicates there is no restriction. |
Property |
Type |
Description |
Deletable |
Boolean |
Entities can be deleted |
NonDeletableNavigationProperties |
[NavigationPropertyPath] |
These navigation properties do not allow DeleteLink requests |
MaxLevels |
Int32 |
The maximum number of navigation properties that can be traversed when addressing the collection to delete from or the entity to delete. A value of -1 indicates there is no restriction. |