Table of Contents

$select query option

Description

$select is an OData system query option.

The $select system query option allows clients to request a specific set of properties for each entity or complex type.

For a great introduction to $select, read the OData $filter tutorial.

$expand

The $select query option is often used in conjunction with the $expand system query option, to define the extent of the resource graph to return ($expand) and then specify a subset of properties for each resource in the graph ($select). Expanded navigation properties MUST be returned, even if they are not specified as a selectItem.

Default attributes

When there is no $select clause or '$select=*', only the default attributes are returned.

The attributes, which are returned by default are:

  • System attributes like Name, Description, PartNumber, etc.
  • References like ProductType, ProductGroup, etc (in OData terminology - Navigation properties)

The following attributes are not returned by default:

  • The 'Id' attribute
  • Custom (user-defined) attributes
  • Child lists (OData terminology: Collection navigation properties)
  • Calculated attributes

Example:

GET ~/General_Products_ProductTypes?$top=2

The result is:

{
    "@odata.context": "https://example-server.com/example-db/api/domain/odata/$metadata#General_Products_ProductTypes",
    "value": [
        {
            "@odata.id": "General_Products_ProductTypes(c696c660-9aa4-4fe5-a396-126af4101792)",
            "IsDefault": false,
            "IsFixedAsset": false,
            "IsServiceActivityService": false,
            "IsServiced": true,
            "IsShipped": true,
            "IsStocked": true,
            "LotAutoCreation": true,
            "Code": "001",
            "Name": {
                "BG": "sdds"
            }
        },
        {
            "@odata.id": "General_Products_ProductTypes(880b0c31-a9ef-4a3c-a0e7-13d39aa57464)",
            "IsDefault": false,
            "IsFixedAsset": false,
            "IsServiceActivityService": false,
            "IsServiced": false,
            "IsShipped": false,
            "IsStocked": false,
            "LotAutoCreation": false,
            "Code": "test sch",
            "Name": {
                "BG": "test sch"
            }
        }
    ]
}
Note

Non default properties must be explicitly specified in the $select clause.

Example:

GET ~/General_Products_Products?$top=2&$select=CustomProperty_WebName,CalculatedAttribute_ExampleAttr

The result will only contain the selected properties.

The default $select keyword

You can explicitly use the keyword default in the $select clause to include all default properties.

GET ~/General_Products_Products?$top=2&$select=default,CustomProperty_WebName,CalculatedAttribute_ExampleAttr

The result will contain all default properties plus the selected CustomProperty_WebName and CalculatedAttribute_ExampleAttr.