TM1 Source Specification
Version 0.2.2
Introduction
TM1 models are made up of any number of object definitions and data contained within them. The description of those objects, also known as the metadata, can be described by using ‘source code’ that subsequently can be maintained in a source control repository like GIT.
This document defines the various components that make up ‘the source’ for a TM1 model and their relationships as well as how the structure of such source repository can be used to imply such relationships.
Status
This document was published for TM1 Server version 11.5.0.
Table of Contents
Source
A source defines a TM1 server object. A TM1 model can be defined by a collection of sources. The objects that can be defined by source include Chores, Cubes, Dimensions, Processes, etc. The precise definition of the source can be found in the source specification section.
Regular TM1 Object
A regular TM1 object is a kind of server object that can be described using a set of attributes, namely properties. The source of such object is a JSON object that contains the properties and the values of the properties. The JSON object is saved in a text file. The name of the file SHOULD be the name of the object. The extension of the file SHOULD be json.
Example 1: The source of a Cube in fileCube_A.json
{
"Name": "Cube_A",
"Dimensions":
[
{ "@id": "Dimensions('Dimension_A')" },
{ "@id": "Dimensions('Dimension_B')" }
]
}Collection Object
A collection object is a collection of TM1 objects of the same type. The source of a collection object is a JSON object that MUST be annotated with the object type, and MUST contain a value property that defines a TM1 object array. The JSON object is saved in a text file. The name of the file SHOULD have three parts, which are separated with the dot(.) character. The first part SHOULD be the name of the containing object, the second part SHOULD be the type name of the collection in lowercase, and last part SHOULD be a json extension.
Example 2: The source of a Hierarchies collection in file Dimension_A.hierarchies.json
{
"@type": "Collection(Hierarchy)",
"value":
[
{
"Name": "Hierarchy_A",
"Elements":
[
{ "Name": "Element_A" },
{ "Name": "Element_B" }
]
}
]
}Link
Objects and property values can be linked to another file with the @Code.link annotation as oppose to being defined inline. The @Code.link annotated value is a link pointing to a file that contains the source of an object, or the raw value of a property. The file is RECOMMENDED to have a specific extension that indicates the syntax of the content. For example, Cube Rules are RECOMMENDED to be linked to files with rules extension, TI Code is RECOMMENDED to be linked to files with ti extension.
The file content of a linked primitive property MUST contain the raw value only. Control characters MUST NOT be escaped.
The file content of a linked object MUST be a JSON object. The file extension SHOULD be json.
Other than using "@Code.link" to link to a file, a collection object is RECOMMENDED to use the @Code.links annotation to specify an array of links, each of which defines a link to an object in the collection.
Example 3: The source of a Process, with the Code of the Process linked, in file Process_A.json and Process_A.ti respectively.
{
"Name": "Process_A",
"Code@Code.link": "Process_A.ti"
}#region prolog
#endregionExample 4: The links of Dimension_A's Hierarchies
{
"Name":"Dimension_A",
"Hierarchies@Code.links":
[
"Dimension_A.hierarchies/A.json",
"Dimension_A.hierarchies/B.json"
]
}Binary Objects
The source of a binary file is the file itself. The Application files generated by the server are the sources of the Applications.
Git Integration
The TM1 server leverages Git to manage the source. TM1 administrators are expected to interact with Git to perform common management tasks, for example, create repositories, set access rights, delete branches, etc.
The TM1 server uses https, http, file, or git protocol to connect to Git.
Local installations only: When you use https, the Git server's certificates MUST be imported to the TM1 certificate database. A restart is required for the new certificates to take effect. No authentication is required for the file protocol, nor the git protocol. You do not need to import certificates for Planning Analytics on Cloud.
Example 5: Import and check certificates
TM1_INSTALL_PATH\gsk8capicmd_64.exe -cert -add -db ibmtm1trusted.kdb -stashed -label "tm1ca_v2" -file tm1ca_v2.der -format binary -trust enable
TM1_INSTALL_PATH\gsk8capicmd_64.exe -cert -validate -db ibmtm1trusted.kdb -label "tm1ca_v2" -stashedThe TM1 server creates a temporary folder for the Git file system. The folder, as well as the files in it, MUST not be manually modified until Git is uninitialized. Sources are stored in form of Git objects in the folder.
As being human readable, source could be created, updated, and deleted without a TM1 server, by using any text editors or IDEs. It is the TM1 designer's responsibility to ensure the correctness of the source and the integrity of the model.
The TM1 server provides a set of REST API actions to interact with Git.
Initialize Git
Action GitInit binds a remote Git repository to the TM1 server. It also initializes a Git context that stores the information of the Git-related operations, for example, the most recent Git branch that has been deployed. The Git context is persistent and server-scoped.
GitInit takes the following parameters:
URL: the URL of the Git repository. When present, the URL MUST match the URL in the Git context, if the Git context is not being reset.Deployment: the selected deployment.Username: the Git credential.Password: the Git credential.PublicKey: the SSH public key.PrivateKey: the SSH private key paired with the SSH public key.Passphrase: the passphrase for decrypting the SSH private key. When none of the credentials is specified, the server does not verify the connection to the Git. Otherwise, the connection must be valid. The credentials will be cached in the HTTP session.Force: whether to reset the Git context.Config: the Git configuration parameters. The configuration parameterhttp.proxyspecifies the URL of the HTTP proxy via which the server can connect to the Git repository when the repository is on HTTPS.
If GitInit succeeded, the server updates the Git context with the new URL and Deployment, invalidates all the pending Git pull plans and Git push plans, and returns the status of the local Git context and the information of the Git server.
Example 6: Initialize Git to a repo at github.com
POST /api/v1/GitInit
{
"URL": "https://github.com/tm1models/model.git",
"Deployment": "dev",
"Username": "username",
"Password": "password",
"Force": true,
"Config":
{
"http.proxy": "http://localhost:8888/"
}
}Example 7: Initialize Git to a local bare repo
POST /api/v1/GitInit
{
"URL": "file:///c:/model.git",
"Deployment": "prod",
"Force": false
}Uninitialize Git
Action GitUninit frees the memory allocated for Git, deletes the Git temporary folder, and disables all Git-related functions except GitInit.
GitUninit takes the following parameters:
Force: whether to clean up Git context.
Check Git Status
Action GitStatus returns the Git context and the information of the Git server. The action also initializes Git if it is not initialized.
GitStatus takes the following parameters:
Username: the Git credential.Password: the Git credential.PublicKey: the SSH public key.PrivateKey: the SSH private key paired with the SSH public key.Passphrase: the passphrase for decrypting the SSH private key.
Deploy Source from Git
The first step to deploy a model is to execute the GitPull action to create a Git pull plan.
GitPull takes the following parameters:
Branch: the name of the branch or tag to fetch source from.ExecutionMode: indicates whether to commit right after each operation performed during deploying the model, or to commit after all operations are done.Force: a flag passed in for evaluating preconditions.Username: the Git credential.Password: the Git credential.PublicKey: the SSH public key.PrivateKey: the SSH private key paired with the SSH public key.Passphrase: the passphrase for decrypting the SSH private key.
If the Git server is valid, the TM1 server fetches the last commit of the specified branch or tag. From the commit, the server reads and validates the tm1project file and the sources, and creates a GitPullPlan object. The GitPullPlan dynamically determines the actions to be done to deploy the source, based on the Git context, the hash of the source as stored in the Git context (i.e. updated on last push), and the hash of the server object. An action could be to create an object, to execute a TI or to set configurations, etc.
A GitPullPlan is bound to a specific Git commit. It is session-scoped, and can be addressed in the GitPlans entity set.
The second step to deploy a model is to execute the Execute action against the GitPullPlan. The server performs the actions required by the plan. If all the actions succeeded, the server updates Git context with the information gathered during the deployment. The Git context will be further used to determine what is the action to do for a certain object in the future deployment. It is also used to determine how to format the sources.
A GitPullPlan is deleted after a successful execution. It can be deleted explicitly from the GitPlans entity set.
Example 8: Deploy a model by using the action GitPull and Execute
POST /api/v1/GitPull
{
"Branch": "CompanyModel",
"ExecutionMode": "SingleCommit",
"Force": true,
"PublicKey": "public key",
"PrivateKey": "private key",
"Passphrase": "passphrase"
}POST /api/v1/GitPlans('GIT_PLAN_ID')/tm1.ExecutePublish Source to Git
The first step to publish a model is to execute the GitPush action to create a Git push plan.
GitPush takes the following parameters:
Branch: the branch from which the last commit is used as the parent commit of the commit to create. If the Git repository is empty, this parameter MUST NOT be specified.NewBranch: if specified, the server creates a new branch and push the new commit onto it; if not specified, the server pushes the new commit onto the branch specified byBranch. If the Git repository is empty, this parameter MUST be present to instruct the server to create a base commit.Force: a flag passed in for evaluating preconditions.Message: the commit message.Author: the name of the commit author.Email: the email of the commit author.Username: the Git credential.Password: the Git credential.PublicKey: the SSH public key.PrivateKey: the SSH private key paired with the SSH public key.Passphrase: the passphrase for decrypting the SSH private key.
If the Git repository is valid, the TM1 server generates the sources of the server objects, creates a commit using the source files and sets the parent of the commit to the last commit of the branch specified in Branch. With the new commit, the server creates a GitPushPlan object.
The server generates the source of the Cubes, Dimensions, Processes, and Chores. The server does not generate the source of the private or control objects unless explicitly specified. The server formats the source based on the format information in the Git context.
A GitPushPlan is bound to a specific Git commit. It is session-scoped, and can be addressed in the GitPlans entity set.
The second step to publish a model is to execute the Execute action against the GitPushPlan object. The server pushes the commit to Git.
A GitPushPlan is deleted after a successful push. It can be deleted explicitly from the GitPlans entity set.
Example 9: Publish the changes to the model CompanyModel
POST /api/v1/GitPush
{
"Branch": "CompanyModel",
"Force": true,
"Message": "Added some cubes",
"author": "TM1 designer",
"Email": "tm1designer@ibm.com",
"Username": "username",
"Password": "password"
}POST /api/v1/GitPlans('GIT_PLAN_ID')/tm1.ExecuteDeploy Only from Git
Action GitDeploy initializes Git, deploys a model, updates the Git context, and terminates Git.
GitDeploy takes the following parameters:
URL: the URL of the remote Git repository.Deployment: the selected deployment.Branch: the name of the branch or tag to fetch.Force: a flag passed in for evaluating preconditions.Username: the Git credential.Password: the Git credential.PublicKey: the SSH public key.PrivateKey: the SSH private key paired with the SSH public key.Passphrase: the passphrase for decrypting the SSH private key.
The action does not clean up the Git context.
Source Project
Resource !tm1project enables viewing and modifying the tm1project file (see TM1 Project for more details).
TM1 Project
Source Organization
The server uses the following schemes to name objects, link files, and folders:
Use an object’s name (key) as the file name of the source, use
jsonas the extension.Store root level server objects in folders named after the type of the object in lowercase. Root level server objects include Cubes, Dimensions, Processes, and Chores.
Store-specific collection objects in folders named after the name of the containing object followed by a dot followed by the type of the collection objects in lowercase. The collection objects include Dimension Hierarchies, Hierarchy Subsets, and Cube Views.
Link-specific object properties. The file name is the name (key) containing object. The extension is the type of the property in lowercase. The properties include Cube Rules, MDXView MDX, and Process Code.
The schemes can be overridden when specified.
Example 10: Source filenames
/cubes/Cube_A.json
/cubes/Cube_A.rules
/cubes/Cube_A.views/View_A.json
/cubes/Cube_A.views/View_B.json
/dimensions/Dimension_A.json
/dimensions/Dimension_A.hierarchies/Dimension_A.json
/dimensions/Dimension_A.hierarchies/Dimension_A.subsets/Subset_A.json
/processes/Process_A.json
/processes/Process_A.tiTM1 Project File
A project file tm1project.json SHOULD be created for each model. It specifies how to deploy and publish the model. The content of the project file is a JSON object with properties explained in the following sections.
The project file can be manually modified on Git. The server exposes the project file as a !tm1project resource, which can be viewed (GET) and modified (PUT). The project file is a part of the Git context. When a model is successfully deployed, the project file in the deployed model becomes the project file of the server.
Version
Version is a REQUIRED property. It specifies the version of the project file. The server only accepts a project file that defines a valid version.
The current version is 1.0.
Example 11: Specify the version
"Version": 1.0Name
Name is an OPTIONAL property. It specifies the name of the tm1project.
Settings
Settings is an OPTIONAL property. It defines the static configurations of the server. The server writes the settings to the tm1s.cfg file when it deploys a model.
The definition of this property is the same as the Configuration property of the REST API, with exceptions that the database directory MUST NOT be specified.
Example 12: Set the server name and HTTP port
"Settings":
{
"Administration":
{
"ServerName": "Company Plan"
},
"Access":
{
"HTTP":
{
"Port": 9988
}
}
}Tasks
Tasks is an OPTIONAL property. Each of its property defines an action that executes a Process or a Chore with certain parameters.
A Task MUST either have a Process or a Chore property. The property specifies the reference of the Process or Chore to be executed. The Process or Chore MUST be visible.
A Task MAY have a Parameters property. The property specifies the parameters to be passed to the Process. This property MUST NOT be specified if the task is to execute a Chore.
A Task MAY have a Dependencies property. The property specifies an array of URIs of tasks or objects, which will be executed or loaded, respectively, before executing the current task.
A Task MAY have a Precondition property. The server only executes a Task when either the precondition is not specified, or it is evaluated to TRUE.
The server only executes a Task one time during a deployment.
Example 13: Definition of Task_A and Task_B. For Task_A, the server executes Task_B if it has not been executed, and loads Cube_A if it has not been loaded, and then executes Process_A with Parameter_A and Parameter_B. For Task_B, the server executes Process_B without any parameters.
"Tasks":
{
"Task_A":
{
"Process": "Processes('Process_A')",
"Parameters":
[
{
"Name": "Parameter_A", "Value":"Sample},
"Name": "Parameter_B", "Value": 1}
]
},
"Task_B":
{
"Process": "Processes('Process_B')",
"Parameters": [
{ "Name": "Parameter_A", "Value": "Words"},
{ "Name": "Parameter_B", "Value": 0 }
]
}
},
"Dependencies":
[
"Tasks('Task_B')",
"Cubes('Cube_A')"
]
},
"Task_B":
{
"Process": "Processes('Process_B')"
}
}Objects
Objects is an OPTIONAL property. Each of its property defines how to load some specific root level object(s).
An Object MAY have a Link property. The property specifies an object's source file name, or an object collection's source file or folder name. An object SHOULD have a unique file name. An object collection SHOULD have a unique file or folder name.
An Object MAY have a Dependencies property. The property specifies an array of URIs of tasks or objects, which will be executed or loaded, respectively, before loading the current object.
An Object MAY have a Precondition property. If specified, the server replaces an Object when the precondition is evaluated to TRUE.
For loading, the server creates an object if it does not exist, nor was deleted after the previous deployment. The server replaces an existing cube only if its dimensionality has changed, otherwise just updates its properties. The server replaces an existing dimension only if at least one of its hierarchies has changed, otherwise just updates its properties. The server replaces existing chores and processes if they have changed.
Objects MAY defines a Files property, which SHOULD only define a Link property for specifying a folder for the server to copy files listed in Files.
Example 14: Specify the folder for sources of all the cubes, the dependency of Cube_A, and the folder for binary files.
"Objects":
{
"Cubes":
{
"Link": "/all_cubes.json"
},
"Cubes('Cube_A')":
{
"Dependencies":
[
"Cubes('Cube_B')"
]
},
"Files":
{
"Link": "/all_files/"
}
}Example 15: Execute Task_A and Task_B, then recreate Cube_A if '/dimensions/Dimension_A.json' has changed.
"Objects":
{
"Cube('Cube_A')":
{
"Precondition": "HasChanged('/dimensions/Dimension_A.json')",
"Dependencies":
[
"Tasks('Task_A')",
"Tasks('Task_B')"
]
}
}Ignore
Ignore is an OPTIONAL property. It specifies the objects to be excluded from the source, if the object is newly created.
Wildcards can be used in the object name, if the object is not a control object. An exclamation mark can be prepended to the resource reference to indicate the server to include the object, even when the object is a control object.
Example 16: Exclude all the new Cubes and Views in the source, except Cube_A; include control Process }Drill_Drill_A; and exclude all the new Dimensions which has a name starting with 'Dim'.
"Ignore":
[
"Cubes/Views",
"!Cubes('Cube_A')",
"!Processes('}Drill_Drill_A')",
"Dimensions('Dim*')"
]Files
Files is an OPTIONAL property. It specifies a list of files that the server copies to and from the /files folder for deploying and publishing a model, respectively.
The server copies the files before executing any PrePull and PostPush tasks. If there are files in folder }Applications being copied, the server also refreshes the public applications in the database. The server overrides existing files.
Wildcards can be used in the file name, but the file MUST NOT reside in the root database directory.
Example 17: Copy the files in folder '/}Applications', and the file /Cube_A.data.
"Files":
[
"/}Applications/*",
"/Cube_A.data"
]Deployment
Deployment is an OPTIONAL property. Each of its property defines a named deployment and its specific properties.
All the tm1project properties can be redefined for a deployment, except Version. Those properties overrides the tm1project properties for the specific deployment. Current deployment is set by action GitInit.
Example 18: For Deployment Prod, execute Process_B for task_A; For other deployments, execute Process_A for Task_A.
{
"Version": "1.0",
"Tasks":
{
"Task_A":
{
"Process": "Process('Process_A')"
}
},
"Objects":
{
"Cubes('Cube_A')":
{
"Dependencies":
[
"Tasks('Task_A')"
]
}
},
"Deployments":
{
"Prod":
{
"Tasks":
{
"Task_A":
{
"Process": "Process('Process_B')"
}
}
}
}
}PrePull, PostPull
PrePull and PostPull are OPTIONAL properties.
PrePull lists the tasks to execute before loading any Dimensions and Cubes when deploying a model. PostPull lists the tasks to execute after loading all the objects.
PrePush, PostPush
PrePush and PostPush are OPTIONAL properties.
PrePush lists the tasks to execute before generating any sources when publishing a model. PostPush defines the tasks to execute after all sources are created.
Example 19: Execute Task_A before writing server objects' source.
"PrePush":
[
"Tasks('Task_A')"
]Dependencies
Dependencies is an OPTIONAL property of an Object or a Task. It defines a list of objects and tasks to load and execute before loading or executing the containing object or task. There MUST NOT define circular dependencies.
Precondition
Precondition is an OPTIONAL property for an Object or a Task. It defines a logical expression.
The following functions can be used in the logical expression:
Exists: return TRUE when the specified file exists in source.HasChanged: return TRUE when the specified file's hash has changed since last deployment.UseForce: return the value of theForceproperty specified for actionGitPull.
These functions MAY be used with logical operators AND, OR, and NOT, and parentheses ().
Example 20: A precondition.
"Precondition": "NOT UseForce() AND (Exists('/File_A.dat') OR HasChanged('/File_B.dat'))"Link
Link is an OPTIONAL property of an Object. It MUST specify a valid file name or a valid name of a folder.
The server resolves an absolute file name from the root directory of the source. The server resolves a relative path from the folder of the containing object.
Absence of TM1 Project File
When a tm1project file is not present, the server loads the sources from all the default locations.
README File
A README.md file can be put into the source. If exists, the file will be added into any new commit without any modification. There is no interface for editing the file on the TM1 server side.
Source Specification
Schema
In the following description, if a field is not explicitly REQUIRED or described with a MUST, it can be considered OPTIONAL.
Chore Object
Objects that execute one or more processes of TM1 at a user-defined frequency.
Fixed Fields
| Field Name | Type | Description |
|---|---|---|
| Name | String |
REQUIRED. The name of the chore. |
| StartTime | DateTimeOffset |
The start time of the chore. |
| DSTSensitive | Boolean |
A Boolean that indicates whether the chore start time is sensitive to daily savings time. |
| Active | Boolean |
A Boolean that indicates whether the chore is active. |
| ExecutionMode | ChoreExecutionMode |
The execution mode of the chore, that is, single or multiple commit. |
| Frequency | Duration |
The frequency of the chore. |
| Tasks | Collection(ChoreTask) |
A collection of tasks that make up the chore. |
ChoreExecutionMode Object
ChoreExecutionMode.
ChoreTask Object
A task to be completed as part of a Chore.
Fixed Fields
| Field Name | Type | Description |
|---|---|---|
| Step | Int64 |
A step in a task. |
| Process | Process |
The process completed in the task. |
| Parameters | Collection(ChoreTaskParameter) |
A collection of parameters for the task. |
Cube Object
Represents a single cube on a TM1 server.
Fixed Fields
| Field Name | Type | Description |
|---|---|---|
| Name | String |
REQUIRED. Name of the cube as it is registered on the server. |
| Rules | String |
Cube rules expand the standard hierarchical consolidation operations that you may define within a dimension. |
| DrillthroughRules | String |
Drill-through processes can return query results against either cubes or relational tables. |
| Dimensions | Collection(Dimension) |
Represents dimensions that perform calculations, control labels, and format data entry. |
| Views | Collection(View) |
A View is a child object of a Cube. You can retrieve a list of available Views, or find a specific View using the appropriate methods in the Cube class. View objects can be queried for information (such as name or subsets) or changed. Executing a View results in a Cellset object, which can be used to read the actual cell data. |
Dimension Object
A dimension is a broad grouping of descriptive data about a major aspect of a business, such as products, dates, or locations. Each dimension includes different levels of members in one or more hierarchies and an optional set of calculated members or special categories.
Fixed Fields
| Field Name | Type | Description |
|---|---|---|
| Name | String |
REQUIRED. The name of the dimension. |
| AllLeavesHierarchyName | String |
A dimension with more than one hierarchy automatically gets a, system maintained, all leaves hierarchy. The name of this hierarchy, if no name is specified this hierarchy is called "Leaves", can be controlled with this AllLeavesHierarchyName property. Note that the all leaves hierarchy can also be added by calling the AddAllLeavesHierarchy action, which converts the dimension into a multi hierarchy dimension, if not one already, by adding a second, in this case the all leaves, hierarchy. |
| Hierarchies | Collection(Hierarchy) |
For example, for the Years dimension, data can be organized into smaller groups, such as Years, Current Month, and All Dates. |
| DefaultHierarchy | Hierarchy |
The default hierarchy of the dimension. |
Edge Object
Represents the relationship between two or more hierarchies and their weight.
Fixed Fields
| Field Name | Type | Description |
|---|---|---|
| ParentName | String |
REQUIRED. The name of the parent of the component in the hierarchy. |
| ComponentName | String |
REQUIRED. The name of the component in the hierarchy. |
| Weight | Double |
The weight of the component in the edge. |
Element Object
An element in a dimension that identifies the location of a cell in a cube.
Fixed Fields
| Field Name | Type | Description |
|---|---|---|
| Name | String |
REQUIRED. The name of the element. |
| Type | ElementType |
The type of the element, one of Numeric, String, or Consolidated. |
ElementType Object
ElementType.
Hierarchy Object
For example, you have separate dimensions for days, months, and quarters. You group them into a dimension called year.
Fixed Fields
MDXView Object
A view of a cube that is defined by an MDX expression.
Fixed Fields
| Field Name | Type | Description |
|---|---|---|
| MDX | String |
REQUIRED. An MDX expression that defines a cube view. |
NativeView Object
A native view of a cube.
Fixed Fields
| Field Name | Type | Description |
|---|---|---|
| Columns | Collection(ViewAxisSelection) |
The dimension elements that exist on the column axis of a view. |
| Rows | Collection(ViewAxisSelection) |
The dimension elements that exist on the row axis of a view. |
| Titles | Collection(ViewTitle) |
The dimension elements that exist as title (context) elements of a view. |
| SuppressEmptyColumns | Boolean |
A Boolean that suppresses any columns that contain only zero values. |
| SuppressEmptyRows | Boolean |
A Boolean that suppresses any rows that contain only zero values. |
| FormatString | String |
The format of the elements in the view. |
Process Object
A TurboIntegrator process that can be used to manipulate TM1 data and metadata.
Fixed Fields
| Field Name | Type | Description |
|---|---|---|
| Name | String |
REQUIRED. The name of a TurboIntegrator process. |
| HasSecurityAccess | Boolean |
A Boolean that indicates whether the user security access to run this process. |
| Code | String |
The code, the Prolog, Metadata, Data and Epilog procedures, executed throughout the various stages of the process. |
| DataSource | ProcessDataSource |
The source of the data for the process. |
| Parameters | Collection(ProcessParameter) |
Parameters used by the process. |
| Variables | Collection(ProcessVariable) |
Variables used by the process. |
ProcessDataSource Object
ProcessDataSource.
Fixed Fields
| Field Name | Type | Description |
|---|---|---|
| Type | String |
REQUIRED. Type. |
ProcessParameter Object
ProcessParameter.
Fixed Fields
| Field Name | Type | Description |
|---|---|---|
| Name | String |
REQUIRED. Name. |
| Prompt | String |
Prompt. |
| Value | PrimitiveType |
Value. |
| Type | ProcessVariableType |
Type. |
ProcessVariable Object
ProcessVariable.
Fixed Fields
| Field Name | Type | Description |
|---|---|---|
| Name | String |
REQUIRED. Name. |
| Type | ProcessVariableType |
Type. |
| Position | Int32 |
Position. |
| StartByte | Int32 |
StartByte. |
| EndByte | Int32 |
EndByte. |
ProcessVariableType Object
ProcessVariableType.
Subset Object
Subset.
Fixed Fields
View Object
A view of data in a cube.
Fixed Fields
| Field Name | Type | Description |
|---|---|---|
| Name | String |
REQUIRED. The name of the view. |
ViewAxisSelection Object
ViewAxisSelection.
Fixed Fields
| Field Name | Type | Description |
|---|---|---|
| Subset | Subset |
Subset. |
ViewTitle Object
ViewTitle.
Fixed Fields
Appendix A: TM1 Code Vocabulary
ibm.tm1.code.v1: TM1 Source Code Annotations
{
"$Version": "4.0",
"$Reference": {
"https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.Core.V1.json": {
"$Include": [
{
"$Alias": "Core",
"$Namespace": "Org.OData.Core.V1"
}
]
}
},
"ibm.tm1.code.v1": {
"$Kind": "Schema",
"$Alias": "Code",
"@Core.Description": "Describes terms to augment your TM1 model 'source' for consumption by TM1 Server and other, aware, tools",
"Link": {
"$Kind": "Term",
"@Core.Description": "A path to the file containing the actual 'source' for the annotated element, relative to the location of the 'source' it is used within"
},
"Links": {
"$Kind": "Term",
"$Collection": true,
"@Core.Description": "A path to the file containing the actual 'source' for the annotated collection valued element, relative to the location of the 'source' it is used within"
}
}
}Appendix B: TM1 Source Vocabulary
INTERNAL USE ONLY ibm.internal.tm1.source.v1: Combined TM1 Server API and 'Source' Schema Annotations
{
"$Version": "4.0",
"$Reference": {
"https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.Core.V1.json": {
"$Include": [
{
"$Alias": "Core",
"$Namespace": "Org.OData.Core.V1"
}
]
}
},
"ibm.internal.tm1.source.v1": {
"$Alias": "tm1Source",
"@Core.Description": "IBM INTERNAL USE ONLY! Describes terms to augment a combined TM1, OData compliant, REST API and model source definition based on a common, OData compliant, CSDL specification",
"Include": {
"$Kind": "Term",
"$Type": "Core.Tag",
"$DefaultValue": true,
"$AppliesTo": ["EntityType", "ComplexType", "TypeDefinition", "EnumType", "Property", "NavigationProperty"],
"@Core.Description": "Indicates that the tagged element can be defined as part of the 'source' for a TM1 model"
},
"Only": {
"$Kind": "Term",
"$Type": "Core.Tag",
"$DefaultValue": true,
"$AppliesTo": ["EntityType", "ComplexType", "TypeDefinition", "EnumType", "Property", "NavigationProperty"],
"@Core.Description": "Indicates that the tagged element can only be defined as part of the 'source' for a TM1 model"
},
"Required": {
"$Kind": "Term",
"$Type": "Core.Tag",
"$DefaultValue": true,
"$AppliesTo": ["Property", "NavigationProperty"],
"@Core.Description": "Indicates that the tagged element is required as part of the 'source' for the element it is contained within"
},
"Documentation": {
"$Kind": "Term",
"$Collection": true,
"$Type": "tm1Source.ParagraphType",
"$Nullable": false,
"$AppliesTo": ["Schema", "EntityType", "ComplexType", "TypeDefinition", "EnumType"],
"@Core.Description": "Associates additional documentation with the tagged element"
},
"ParagraphType": {
"$Kind": "ComplexType",
"@Core.Description": "One of potentially multiple paragraphs of documentation associated with an element describing the source for a TM1 model",
"MarkDown": {
"@Core.Description": "Documentation using the MarkDown format"
},
"CodeSnippets": {
"$Collection": true,
"$Type": "tm1Source.CodeSnippetType",
"$Nullable": false,
"@Core.Description": "A collection of zero or more code snippets associated with the paragraph"
}
},
"CodeSnippetType": {
"$Kind": "ComplexType",
"@Core.Description": "The source 'code' for the example in the specified format",
"Format": {
"$Nullable": true,
"$DefaultValue": "JSON",
"@Core.Description": "The format or language of the code in this snippet (eg JSON)"
},
"Code": {
"@Core.Description": "The actual 'code' for this snippet"
}
},
"FileExtension": {
"$Kind": "Term",
"$DefaultValue": "json",
"$AppliesTo": ["Property", "NavigationProperty"],
"@Core.Description": "The file extension expected to be used for files referenced, using a Code.Link annotation, to describe the value for this property"
}
}
}Appendix C: Revision History
| Version | Date | Editor(s) | Notes |
|---|---|---|---|
| 0.1.0-wd1 | 2017-10-25 | Hubert Heijkers, Ling Jin | Initial version |
| 0.2.0-wd1 | 2018-06-07 | Ling Jin | Updated usage documentation |
| 0.2.1-wd1 | 2018-06-12 | Hubert Heijkers | Merged docs, updated source schema |
| 0.2.2-wd1 | 2019-02-18 | Ling Jin | Added examples and updated usage documentation |
Copyright
Copyright © 2018, 2022 by International Business Machines Corporation (IBM). All Rights Reserved.
This document is distributed “as is” without any warranty, either express or implied. In no event shall IBM be liable for any damage arising from the use of this information, including but not limited to, loss of data, business interruption, loss of profit or loss of opportunity.
IBM products and services are warranted according to the terms and conditions of the agreements under which they are provided.
References in this document to IBM products, programs, or services does not imply that IBM intends to make such products, programs, or services available in all countries in which IBM operates or does business.
Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements, or other publicly available sources. IBM has not tested those products in connection with this publication and cannot confirm the accuracy of performance, compatibility, or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products. IBM does not warrant the quality of any third-party products, or the ability of any such third-party products to interoperate with IBM’s products. IBM expressly disclaims all warranties, expressed or implied, including but not limited to, the implied warranties of merchantability and fitness for a particular, purpose.
The provision of the information contained here is not intended to, and does not, grant any right or license under any IBM patents, copyrights, trademarks, or other intellectual property right.
IBM, the IBM logo, ibm.com, Cognos®, are trademarks of International Business Machines Corporation, registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the Web at "Copyright and trademark information" at: www.ibm.com/legal/copytrade.shtml.