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
#endregion
Example 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" -stashed
The 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.proxy
specifies 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.Execute
Publish 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.Execute
Deploy 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
json
as 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.ti
TM1 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.0
Name
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 theForce
property 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.