OData for developers

ALM Octane supports OData (Open Data Protocol), the OASIS REST-based standard for accessing data. You can use OData to extend and improve reporting capabilities, above and beyond the functionality provided by ALM Octane dashboard widgets. This topic provides instructions for working with OData and ALM Octane.


This overview describes the use cases for developers to use the OData standard to access ALM Octane.

ALM Octane supports OData version 4.0.

For OData version 4.0 support, download and install the Microsoft Power Query for Excel add-in.  

Caution: Tableau’s support for OData is limited. For example, Tableau's OData support currently does not include the $expand interactive query argument, which ALM Octane uses extensively for cross entity reporting. Consider using a different reporting or business intelligence tool.

Developers can retrieve ALM Octane data over OData in the following ways: 

Directly, by querying with an API client
By designing applications to integrate with ALM Octane over OData
  • Connect to ALM Octane's OData support using basic authentication. For details, see Basic authentication.
  • Use OData resources to work with ALM Octane data. For details, see the OData documentation.

    Note: Only GET requests are supported when working with OData.

Back to top


  • Request that the site admin or space admin activate basic authentication for each space with the SUPPORTS_BASIC_AUTHENTICATION configuration parameter.

  • If ALM Octane is configured for SSO authentication, create API keys for working with OData integration.

Back to top

The ALM Octane server base URI

The ALM Octane server base URI for accessing ALM Octane data using OData is: 

<https://<server> /odata/v4/shared_spaces/<space_ID>/workspaces/<workspace_ID>/

Troubleshooting: If ALM Octane does not respond successfully to an OData consumer request, it might be because the base URL used to refer to ALM Octane is different than expected. Consider modifying ODATA_USE_SERVER_BASE_URL and SERVER_BASE_URL as described under Setting configuration parameters with the REST API or Configuration parameters.

Back to top

Accessing ALM Octane data using OData with a REST client

The section describes how to access ALM Octane data using OData with a REST client.


To work with OData, review the prerequisites for basic authentication under Prerequisites, and then authenticate with basic authentication.

Caution: Activating basic authentication enables external systems to access ALM Octane using this authentication method, not just OData.

You can authenticate with either:

  • Your user name and password.

  • An API access key.

For details, see Basic authentication.

Tip: When working with basic authentication, on each successful authentication, ALM Octane includes the LWSSO_COOKIE_KEY cookie in the response. We recommend that you send the LWSSO_COOKIE_KEY cookie with each subsequent OData request for enhanced performance. For details, see the information about the LWSSO_COOKIE_KEY under the topic Authenticating.

Retrieving ALM Octane data

You can use OData to retrieve ALM Octane data, but you cannot update (POST, PUT, DELETE) ALM Octane data. Only GET operations are supported.

By default, a maximum of 1000 items are returned.

Example: To see all defects: GET <base_URI>/defects

Back to top

Using OData options and operators for refined results

This version of ALM Octane currently supports the following URI conventions.


$select, $search, $filter, $orderby, $top, $count, $paging, $skip, $format, $expand, $link & $count, and returning the raw value.

$filter operators

Logical operators: eq, ne, gt, ge, lt, le, and, or, not, ( ). -

Filtering with logical operators on entities that have associations is not always supported.


String functions: bool substringof, bool endswith, bool startwith

URI examples

Return all defects with the selected fields /defects?$select=id,name,description
Return defect 6001 with all its fields /defects('6001')
Return all defects by name in descending order /defects?$orderby=name desc
Return all defects assigned to any sprint /defects?$filter=sprint ne null
Return all suite runs that have linked defects /suite_run?$filter=defect_indirect ne null&$expand=defect_indirect
Return all the defects created after 2017-08-23 /defects?$filter=creation_time ge datetimeoffset'2017-08-24T00:00:00Z'
Return all defects with assigned teams /defects?$filter=team ne null

See also: