TM1 REST API

Overview

The TM1 REST API is a new way of accessing data and everything else in TM1. Rather than being a proprietary API like old TM1 interfaces it is based on web standards making it accessible to a wide range of developers.  

REST stands for REpresentational State Transfer and is an architectural style (not a standard) that has become the common way of designing API for applications on the internet. The TM1 REST API does however support the OData standard (v4) which provides a common way for accessing data through queries and also updating data. OData is used by multiple vendors and is supported by companies like Microsoft, SAP and of course IBM



Examples:

Retrieve the TM1 REST API $metadata document

The $metadata document contains all of the information about the resources and functions of the TM1 REST API.

GET https://localhost:8881/api/v1/$metadata

Retrieve a list of TM1 objects

Dimensions: GET https://localhost:8881/api/v1/Dimensions
Cubes: GET https://localhost:8881/api/v1/Cubes
Processes: GET https://localhost:8881/api/v1/Processes
Chores: GET https://localhost:8881/api/v1/Chores
Applications: GET https://localhost:8881/api/v1/Contents('Applications')/Contents

Retrieve a single object

Dimension: GET https://localhost:8881/api/v1/Dimensions('Account')
Cube: GET https://localhost:8881/api/v1/Cubes('General Ledger')
Process: GET https://localhost:8881/api/v1/Processes('Bedrock.Cube.View.Create')
Chore: GET https://localhost:8881/api/v1/Chores('Nightly Load')
Application Folder: GET https://localhost:8881/api/v1/Contents('Applications')/Contents('Finance')/Contents

Retrieve a list of cube names

GET https://localhost:8881/api/v1/Cubes?$select=Name

Retrieve a list of cube names and their dimensions

GET https://localhost:8881/api/v1/Cubes?$select=Name&$expand=Dimensions($select=Name)

Retrieve a dimension and its elements

GET https://localhost:8881/api/v1/Dimensions('Account')/Hierarchies('Account')?$expand=Elements

Execute a view and retrieve its contents

POST https://localhost:8881/api/v1/Cubes('General Ledger')/Views('P&L')/tm1.Execute?$expand=Cells

Execute a view and retrieve its contents and structure

POST https://localhost:8881/api/v1/Cubes('General Ledger')/Views('P&L')/tm1.Execute?$expand=Axes($expand=Hierarchies($select=Name),Tuples($expand=Members($select=Name))),Cells

Execute a MDX statement and retrieve its contents and structure

POST https://tm1server:8881/api/v1/ExecuteMDX??$expand=Axes($expand=Hierarchies($select=Name),Tuples($expand=Members($select=Name))),Cells
{
   "MDX":"SELECT {[Version].[Actual]} ON COLUMNS,
    {
        ([Department].[Corporate], [Region].[United Kingdom], [General Ledger Measure].[Amount]), 
        ([Department].[Corporate], [Region].[United Kingdom], [General Ledger Measure].[Comment]),
        ([Department].[2], [Region].[England], [General Ledger Measure].[Amount])
    }  ON ROWS FROM [General Ledger]
    WHERE ([Version].[Actual], [Year].[2012], [Period].[Mar], [Currency].[Local], [Account].[Salaries])"
}