Dynamic Planning API Library Summary
  • 46 Minutes to read
  • Dark
    Light
  • PDF

Dynamic Planning API Library Summary

  • Dark
    Light
  • PDF

Article summary

List of APIs

The following APIs (Application Programming Interfaces) facilitate data integration and user management with Dynamic Planning. These APIs provide the infrastructure to automate the process of loading data, defining user and group security, and managing metadata in Dynamic Planning using cloud integration services like Boomi.

Access Tokens are used for authentication to make connections to Dynamic Planning from cloud-based integration tools. An access token is a security object that does not expire. You can generate access tokens from Dynamic Planning. See Dynamic Planning: Token Management.

Base URL

An API endpoint consists of a Base URL, which is a common URL, and a relative URL, which is available with all the APIs. A Base URL differs from environment to environment. Make sure to use the correct base URL before invoking any API endpoint. The Base URLs for all Dynamic Planning environments are given below:

EnvironmentBase URL
Production UShttps://modelapi.hostanalytics.com/api
Production AUhttps://modelauapi.hostanalytics.com/api
Model Staginghttps://modelstgapi.hostanalytics.com/api

The relative URL is the path provided between POST and HTTP/1.1. For example, in the following code snippet, /modeling/model/data/clear is the relative URL:

POST /modeling/model/data/clear HTTP/1.1
Content-Type: application/xml
Accept: application/xml
X-ACCESS-TOKEN:
Note:
Most APIs are in XML format. The APIs support two standard data load formats:
  • Time on columns
  • Time on rows

List of APIs

Master and Analytic Model APIs

Description

Append Attributes

Use this API to create or append attributes and attribute hierarchies, specify display labels for attributes, and create or modify attribute-to-dimension-member mappings in Master and Analytic models.

Append Dimension Members

Use this API to add new members into an existing dimension in Master and Analytic models. The model should already be generated and the dimension should exist

Calculation Run

This API is used to execute a Calculation defined in Dynamic Planning.

Calculation Status

This API returns the current and last status of the running of a calculation.

Clear Data

This API clears existing data from Master and Analytic models based on the scope of the definition.

Clear Leaf Data

This API clears existing leaf data from Master and Analytic models based on the scope of the definition.

Export Dimension / Attribute Hierarchy

This API allows you to export the entire dimension hierarchy from a specified model in XML format. The following data is exported:

  • Hierarchy member code

  • Hierarchy member parent

  • Hierarchy member rollup operator

  • Hierarchy member display label

  • Mapped attributes

Note:
DAP (Direct Access to PCR) models and the HACPM_Financial model are not supported with this API. Additionally, the root member (top most member of the hierarchy) will not have a <Member-Parent> tag.

Export Leaf-Level Data (Scoped)

This API allows you to export leaf-level data from a specified model in XML format. Optionally, you can specify one or more filters to export specific data.

Load Data

This API loads data to Master and Analytic models.

External Source Model APIs

Description

External Source Models APIs that support the new implementation of ESM as of November 2018 are marked with the icon .

Clear Data 

This API clears data from an external data source model.

Clear Dimension Members

This API clears existing dimension member data available in an external source model.

Export Leaf-Level Data (Scoped) 

This API allows you to export leaf-level data from an external source model in XML format. Optionally, you can specify one or more filters to export specific data, and you can specify which fields to export.

Load Data 

This API loads data to an external source model.

Load Dimension Members (Metadata)

This API loads dimension members to an external source model.

 

 

User Management APIs

Description

Create Users and Groups

These APIs add users and user group mappings, and delete users.

List Users and Groups

These APIs return the names of users or user groups for a tenant.

Note:
Loading data and running calculations in Dynamic Planning can be scheduled by leveraging scheduling options available in cloud integration solutions like Boomi.

Append Attributes (Master and Analytic Models)

Use this API to create or append attributes and attribute hierarchies, specify display labels for attributes, and create or modify attribute-to-dimension-member mappings in Master and Analytic models.

You can also optionally specify display labels for attributes.

To create or append attributes and attribute hierarchies, include the <attribute-members> section as shown below.

To map attribute leaves to dimension leaves, include the <attribute-mapping> section.

You can include both the <attribute-members> and <attribute-mapping> sections, or either section.

This API works if the model is generated or ungenerated, locked or unlocked.

Dynamic Planning supports no more than 5 attributes per dimension.

POST /modeling/model/attributes/append HTTP/1.1
Content-Type: application/xml
Accept: application/xml
X-ACCESS-TOKEN:
 
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<attribute-payload>
<model-name>$ModelName</model-name>
<dimension-name>$DimensionName</dimension-name>
<attribute-name>$AttributeName</attribute-name>
<delimiter>$Delimiter</delimiter>
<attribute-members>
<!-- member code @ member parent @ member display label [optional] -->
<!-- add as many rows as needed -->
<member>$AttributeMember@$AttributeMemberParent@$AttributeMemberDisplayLabel</member>
</attribute-members>
<!-- dimension leaf member code @  attribute leaf member code -->
<!-- add as many rows as needed -->
<attribute-mapping>     
<member>$DimensionMember@$AttributeMember</member>
  </attribute-mapping>     
</attribute-payload>

Parameters

  1. $ModelName: (type: string) Name of the model. If the model specified does not exist, the operation is canceled.

  2. $DimensionName: (type: string) Name of the Dimension that is associated with the Attribute. If the dimension specified does not exist, the operation is canceled.

  3. $AttributeName: (type: string) Name of the Attribute to create or append to. This is the root member of the Attribute hierarchy. The attribute name must be unique. If you attempt to append an attribute name that already exists, an error message appears and the operation is canceled.

  4. $Delimiter: (type: string) Delimiter String

  5. $AttributeMember, $AttributeMemberParent, and $AttributeMemberDisplayLabel: (type: string) Specifies the member code of the Attribute member to create or append to the Attribute. Use the Delimiter, then specify the parent member that this Attribute member rolls up to. Optionally use another Delimiter, then specify the display label for this Attribute member. If no Display Label is specified, the member code is used as the display label. When the model is generated, you can append attributes to an existing attribute hierarchy only if you are adding the attribute to an existing attribute parent. You can convert an attribute leaf member to a parent by appending leaves under it.

  6. $DimensionMember and $AttributeMember: (type: string) Specifies the dimension leaf code that will be mapped to the Attribute member. Use the Delimiter, then specify the Attribute leaf member code to associate with this dimension member. If the dimension leaf code has an existing attribute mapped to it, it is overwritten with the specified attribute leaf member.

Sample Payload for Creating or Appending Attributes (Without Display Labels, Without Specifying the Member-Attribute Mapping)

This sample appends an attribute named Product_Type, defines the root member of the attribute as All_types. It creates three children of the root: Android, iOS, and Other. Under Other, members named Windows and Unknown are created.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<attribute-payload>
<model-name>Sales</model-name>
<dimension-name>Products</dimension-name>
<attribute-name>Product_Type</attribute-name>
<delimiter>@</delimiter>
<attribute-members>
<!-- member code @ member parent @ member display label [optional] -->
<member>All_types@All_types</member>
<member>Android@All_types</member>
<member>iOS@All_types</member>
<member>Other@All_types</member>
<member>Windows@Other</member>
<member>Unknown@Other</member>
</attribute-members>
</attribute-payload>

Sample Payload for Creating or Appending Attributes With Display Labels (Without Specifying the Member-Attribute Mapping)

This sample appends an attribute named Product_Type and its hierarchy, and assigns Display Labels for each member of the attribute hierarchy.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<attribute-payload>
<model-name>Sales</model-name>
<dimension-name>Products</dimension-name>
<attribute-name>Product_Type</attribute-name>
<delimiter>@</delimiter>
<attribute-members>
<!-- member code @ member parent @ member display label [optional] -->
<member>All_types@All_types@All Types</member>
<member>Android@All_types@Google Android</member>
<member>iOS@All_types@Apple iOS</member>
<member>Other@All_types@Other OS</member>
<member>Windows@Other@Microsoft Windows</member>
<member>Unknown@Other@Unknown Brand</member>
</attribute-members>
</attribute-payload>

Sample Payload for Creating or Appending Attributes and Specifying the Member-Attribute Mapping

This sample appends an attribute named Product_Type and its hierarchy, and maps four dimension leaf members to their respective Attribute leaf members.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<attribute-payload>
<model-name>Sales</model-name>
<dimension-name>Products</dimension-name>
<attribute-name>Product_Type</attribute-name>
<delimiter>@</delimiter>
<attribute-members>
<!-- member code @ member parent @ member display label [optional] -->
<member>All_types@All_types</member>
<member>Android@All_types</member>
<member>iOS@All_types</member>
<member>Other@All_types</member>
<member>Windows@Other</member>
<member>Unknown@Other</member>
</attribute-members>
<!-- dimension leaf member code @  attribute leaf member code -->
<attribute-mapping>
<member>iPhoneX@iOS</member>
<member>S8@Android</member>
<member>DELL@Windows</member>
<member>HP@Windows</member>
</attribute-mapping>
</attribute-payload>

Sample Payload for Updating the Member-Attribute Mapping for Previously Saved Attributes

This sample updates the mappings for four dimension leaf members to the "Unknown" Attribute leaf member. If a mapping already exists for a dimension leaf member, it is overwritten by the new mapping.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<attribute-payload>
<model-name>Sales</model-name>
<dimension-name>Products</dimension-name>
<attribute-name>Product_Type</attribute-name>
<delimiter>@</delimiter>
<!-- dimension leaf member code @  attribute leaf member code -->
<attribute-mapping>
<member>iPhoneX@Unknown</member>
<member>S8@Unknown</member>
<member>DELL@Unknown</member>
<member>HP@Unknown</member>
</attribute-mapping>
</attribute-payload>

Response

Success Response

HTTP/1.1 204 No Content / 200 OK

Error Responses

Service Not Available (Possibly due to maintenance)

HTTP/1.1 404 Not Found

One or more HTTP headers were missing

HTTP/1.1 412 Precondition Failed

Model/Dimension not found

HTTP/1.1 412 Precondition Failed

Unauthorized Access (Access key lookup failed)

HTTP/1.1 401 Unauthorized

Invalid XML (Bad Request)

HTTP/1.1 400 Bad Request

Append Dimension Members (Master and Analytic Models)

Use this API to append dimension members in Master and Analytic models. You can load Display Label as an optional parameter.

POST /modeling/model/member/append HTTP/1.1
Content-Type: application/xml
Accept: application/xml
X-ACCESS-TOKEN:
<?xml version="1.0" encoding="UTF-8"?>
<append-member-payload>
<model-name>$ModelName</model-name>
<dimension-name>$DimensionName</dimension-name>
<delimiter>$Delimiter</delimiter>
<hierarchy>$ParentChildHierarchyPlusOperatorLabel</hierarchy>
<dimension-member>$DimensionMemberPlusOperatorLabel</dimension-member>
… add more dimension members if needed
</append-member-payload>

Parameters

@@ - Delimiter

  1. $ModelName: (type: string) Name of the model. If the model specified does not exist, the operation is canceled.

  2. $DimensionName: (type: string) Name of the Dimension that is associated with this model. If the dimension specified does not exist, the operation is canceled.

  3. $Parent@@Child@@Operator@@label: Specify the location of the child member, parent member , rollup operator and label delimited by delimiter string(@@)

  4. DimensionMemberPlusOperatorlabel: Specify the new dimension member, its parent , rollup operator land label delimited by delimiter string in the same order as specified in the hierarchy tag. Add multiple dimension members using different dimension-member tags.

Note:
Label is optional but if it has been defined in <hierarchy> then define all <dimension-member> tag

Sample Payload

<?xml version="1.0" encoding="UTF-8"?>
<append-member-payload>
<model-name>Operating Expense</model-name>
<dimension-name>Account</dimension-name>
<delimiter>@@</delimiter>
<hierarchy>parent@@child@@operator@@label</hierarchy>
<dimension-member>Account@@Income Statement@@~@@Jan2010 
	Income</dimension-member>
<dimension-member>Income Statement@@Income Statement 100@@+@@Feb2019 
	Income</dimension-member>
</append-member-payload>

<?xml version="1.0" encoding="UTF-8"?>

Response

Success Response

HTTP/1.1 204 OK

Error Responses

Service Not Available (Possibly due to maintenance)

HTTP/1.1 404 Not Found

One or more HTTP headers were missing

HTTP/1.1 412 Precondition Failed

Model/Dimension not found

HTTP/1.1 412 Precondition Failed

Unauthorized Access (Access key lookup failed)

HTTP/1.1 401 Unauthorized

Invalid XML (Bad Request)

HTTP/1.1 400 Bad Request

Page dimensions

Page dimensions are optional. If the user chooses not to have page dimensions, they may skip this tag completely. Alternately an empty tag can be specified as well.

Page-dimensions tag comprises of all dimensions that have page level scope. In order to have page level scope, the single unique dimension member of this dimension should apply to all data-records.

Column dimensions

Column-dimensions tag comprises of all other dimensions that are not identified as page-dimensions. Each data-record provides a dimension member for every dimension identified in this tag. These dimension members can be unique or non-unique across all data records.

For example: Consider the following records for loading the data:

Table 1

AccountScenarioDepartmentAmountTime

1001

Actual

Sales

100

Jan-13

1002

Actual

Sales

200

Jan-13

1003

Actual

Sales

300

Jan-13

1004

Actual

Marketing

400

Jan-13

1005

Actual

Marketing

500

Jan-13

These records are to be loaded into a model with four dimensions:

  • Account (with dimension members 1001, 1002, 1003, 1004, 1005)

  • Scenario (with dimension member ‘Actual’)

  • Department (with dimension members ‘Sales’ and ‘Marketing’)

  • Time (with dimension member ‘Jan-13’)

Here, Scenario: Actual and Time: Jan-13 qualifies to be extracted to page level scope. But, since page-dimensions are entirely optional, below four examples are valid.

Scenario As Page Dimension

<page-dimensions>
<entry>
<key>Scenario</key>
<value>Actual</key>
</entry>
</page-dimensions>
<column-dimensions>
<entry>
<key>1</key>
<value>Account</value>
</entry>
<entry>
<key>2</key>
<value>Department</value>
</entry>
<entry>
<key>3</key>
<value>Time</value>
</entry>
</column-dimensions>

Time As Page Dimension

<page-dimensions>
<entry>
<key>Time</key>
<value>Jan-13</key>
</entry>
</page-dimensions>
<column-dimensions>
<entry>
<key>1</key>
<value>Account</value>
</entry>
<entry>
<key>2</key>
<value>Scenario</value>
</entry>
<entry>
<key>3</key>
<value>Department</value>
</entry>
</column-dimensions>

Empty Page Dimensions

<pagedimensions/>

No Page Dimensions: Skip This Tag Completely

Note:
Amount is available at the intersection of all dimension members in every row. It should not be used in either a page-dimension or a column-dimension
Note:
Dimensions in either tag can assume any order

Additional Information with a Sample Payload

Consider a model that has four dimensions:

  1. Account (includes dimension members 1001 and 1002)

  2. Scenario (includes dimension member Actual)

  3. Department (includes dimension members Sales and Marketing)

  4. Time (includes dimension members Jan-13, Feb-13 and Mar-13)

To insert the following table of amounts into the model:

Table 2

AccountScenarioDepartmentAmountTime

1001

Actual

Sales

100

Jan-13

1001

Actual

Sales

200

Feb-13

1001

Actual

Sales

300

Mar-13

1002

Actual

Marketing

400

Jan-13

1002

Actual

Marketing

500

Feb-13

1002

Actual

Marketing

600

Mar-13

Design a payload first creating column-dimensions as follows:

<column-dimensions>
<entry>
<key>1</key>
<value>Account</value>
</entry>
<entry>
<key>2</key>
<value>Scenario</value>
</entry>
<entry>
<key>3</key>
<value>Department</value>
</entry>
<entry>
<key>4</key>
<value>Time</value>
</entry>
</column-dimensions>

The order of dimensions above specifies their order in the data-records section below. For each entry in column-dimensions, ‘value’ identifies the Dimension name, and ‘key’ indicates the position number dedicated to that dimension in every data-record.

For example:

Value: Account

Key: 1

Indicates that the first column in data-record is dedicated to an Account dimension member

Value: Time

Key: 4

Indicates that the fourth column in data-records is dedicated to a Time dimension member

Next, indicate the delimiter used in data-records to separate columns

<delimiter>@@</delimiter>

column-members tag contains information about dimension members that are shared by all data-records in the payload. This is a mandatory tag. It can contain one or more entries. The number of entries in this tag determine the number of columns dedicated to values in data-records. Two entries in column-members signifies two amount columns.

In this example below, entry with key=2 and value=’Actual’ indicates the second column of the data row is associated with member: Actual. This allows us to enter the amount in the second column for every data record.

<column-members>
<entry>
<key>2</key>
<value>Actual</value>
</entry>
</column-members>

Every row in table 2 has an entry in data-records tag. column-dimensions entry key determines the order of the dimension members in every data-record. As an example Department:Sales and Marketing are in column 3 as noted in column-dimensions tag Note that the amount in every Table 2 row is input in the second column of every record.

<data-records>

<data-record>1001@@100@@Sales@@Jan-13</data-record>

<data-record>1001@@200@@Sales@@Feb-13</data-record>

<data-record>1001@@300@@Sales@@Mar-13</data-record>

<data-record>1002@@400@@Marketing@@Jan-13</data-record>

<data-record>1002@@500@@Marketing@@Feb-13</data-record>

<data-record>1002@@600@@Marketing@@Mar-13</data-record>

</data-records>

Additional Information with Multiple Columns per Dimension

Often, there is a need to enter data for multiple members of a dimension. Consider the following example:

Table 3

AccountScenarioDepartment

Jan-16

Amount


Feb-16

Amount


Mar-16

Amount


1001

Actual

Sales

100

200

300

1001

Actual

Marketing

400

500

600

The following payload can be used to enter data in this format:

<page-dimensions>
<entry>
<key>Scenario</key>
<value>Actual</key>
</entry>
</page-dimensions>

Extract Scenario: Actual to page since all records in Table 3 relate to Scenario: Actual

<column-dimensions>
<entry>
<key>1</key>
<value>Account</value>
</entry>
<entry>
<key>2</key>
<value>Department</value>
</entry>
<entry>
<key>3</key>
<value>Time</value>
</entry>
<entry>
<key>4</key>
<value>Time</value>
</entry>
<entry>
<key>5</key>
<value>Time</value>
</entry>
</column-dimensions>

This says that column 1 of every data-record contains an Account member, column 2 contains a Department member and Columns 3 to 5 contain Time dimension members.

<column-members>
<entry>
<key>3</key>
<value>Jan-16</value>
</entry>
<entry>
<key>4</key>
<value>Feb-16</value>
</entry>
<entry>
<key>5</key>
<value>Mar-16</value>
</entry>
</column-members>

The above xml snippet indicates that column 3 of every data-record contains amount related to Time: Jan-16, column 4 of data-record contains amount related to Time: Feb-16 and column 5 contains amount related to Time: Mar-16.

Specify delimiter as follows:

<delimiter>@@</delimiter>

The below xml snippet adds data per Table 3:

<data-records>
<data-record>1001@@Sales@@100@@200@@300</data-record>
<data-record>1002@@Marketing@@400@@500@@600</data-record>
</data-records>

Calculation Run (Master and Analytic Models)

Use this API to run a Calculation defined on a Master or Analytic model. Only one Calculation can be invoked per API invocation. Only those Calculations that are enabled to run in the background can be invoked with this API. Invoking any other type will result in an error.

You can also optionally pass variables and values for variables into the calculation.

POST /modeling/model/calcscript/run HTTP/1.1
Content-Type: application/xml
Accept: application/xml
X-ACCESS-TOKEN:
 
<?xml version="1.0" encoding="UTF-8"?>
<run-calcscript-payload>
<model-name>$ModelName</model-name>
<calcscript-name>$CalcScriptName</calcscript-name>
<runtime-values>
<entry>
<key> @calcvariablename@ </key>
<value> VariableValue </value>
</entry>
<entry>
<key> @calcvariablename@ </key>
<value> VariableValue </value>
</entry>
</runtime-values>
</run-calcscript-payload>

Parameters

  1. $ModelName: (type: string) Name of the model

  2. $CalcScriptName: (type: string) Name of the Calculation

Sample Payload with Variables

<?xml version="1.0" encoding="UTF-8"?>
<run-calcscript-payload>
<model-name>My Model</model-name>
<calcscript-name>My Calcscript</calcscript-name>
<runtime-values>
<entry>
<key>@Scenario@</key>
<value>Budget 2018</value>
</entry>
<entry>
<key>@CurYear@</key>
<value>2018</value>
</entry>
</runtime-values>
</run-calcscript-payload>

Response

Success Response

HTTP/1.1 200/204 OK

Error Responses

Service Not Available (possibly due to maintenance)

HTTP/1.1 503 Service Unavailable

One or more HTTP headers were missing

HTTP/1.1 412 Precondition Failed

Unauthorized Access (access key lookup failed)

HTTP/1.1 401 Unauthorized

Invalid XML (bad request)

HTTP/1.1 400 Bad Request

Not Found (model/calculation not found)

HTTP/1.1 404 Not Found

Calculation Status (Master and Analytic Models)

Use this API to determine the current status, the last status of the running of a calculation, the last run time, as well as run in background and description details.

This API returns the following status:

  • For current status: the response is "submitted", "in progress" or "not running"

  • For last status: the response is "success" or "failed"

Please note that the request payload is the same as the run calculation payload.

POST modeling/model/calcscript/status HTTP/1.1
Content-Type: application/xml
Accept: application/xml
X-ACCESS-TOKEN:

Request body:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<run-calcscript-payload>
<model-name>BOA_Model</model-name>
<calcscript-name>BOA_Model</calcscript-name>
</run-calcscript-payload>

Response body:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<calcscript-status>
<model-name>BOA_Model</model-name>
<calcscript-name>BOA_Model</calcscript-name>
<status>not running</status>
<last-status>success</last-status>
<description></description>
<run-in-background>Yes</run-in-background>
<last-run-time>2019-05-15T10:37:56.036Z</last-run-time>
</calcscript-status>

Clear Data (Master and Analytic Models)

This API clears existing data from Master and Analytic models based on the scope of the definition. Clear Data API results in success even if all data has been cleared in an earlier call.

You can opt to clear specific data versus the entire model.

  • To clear specific data, you use filters. For example, you might opt to clear data for a specific period, department, or company.

  • To clear all model data, you will use the API without filters.

You can receive a notification via email upon success or failure of the operation. The notifications for success and failure are separate and can be emailed to different email addresses, if desired. This notification is optional.

POST /modeling/model/data/clear HTTP/1.1
Content-Type: application/xml
Accept: application/xml
X-ACCESS-TOKEN:
 
<?xml version="1.0" encoding="UTF-8"?>
<clear-data-payload>
 	<model-name>$ModelName</model-name>
<filters>
   <filter>
<dimension>$Dimension/dimension>
<filter-type>$FilterType</filter-type>
<filter-value>$FilterValue1</filter-value>
<filter-value>$FilterValue2</filter-value>
<filter-value>$FilterValue3</filter-value>
	 …
   </filter>
	…
  </filters>
<notify-on-success>
<email>$EmailAddress</email>
</notify-on-success>
<notify-on-failure>
<email>$EmailAddress</email>
</notify-on-failure>
</clear-data-payload>

Parameters

  1. $ModelName: (type: string) Name of the model in which data will be cleared

  2. $Dimension: (type: string) Name of the dimension in which data will be cleared

  3. $FilterType: (type: string) Dimension filter type

  4. $FilterValue: (type: string) Value of the filter

  5. $EmailAddress: (type: string) Valid email address to receive the notification

Response

Success Response

HTTP/1.1 200/204 OK

Error Responses

Service Not Available (possibly due to maintenance)

HTTP/1.1 503 Service Unavailable

One or more HTTP headers were missing

HTTP/1.1 412 Precondition Failed

Unauthorized Access (access key lookup failed)

HTTP/1.1 401 Unauthorized

Invalid XML (bad request)

HTTP/1.1 400 Bad Request

Not Found (source model not found)

HTTP/1.1 404 Not Found

Clear Leaf Data (Master and Analytic Models)

This API clears existing leaf data from Master and Analytic models based on the scope of the definition. Clear Leaf Data API results in a success even if all data has been cleared in an earlier call.

You can opt to clear specific leaf data versus the entire model.

  • To clear specific leaf data, you will use filters. For example, you might opt to clear leaf data for a specific period, department, or company.

  • To clear all model leaf data, you will use the API without filters.

You can receive a notification via email upon success or failure of the operation. The notifications for success and failure are separate and can be emailed to different email addresses, if desired. This notification is optional.

POST /modeling/model/data/leaf/clear HTTP/1.1
Content-Type: application/xml
Accept: application/xml
X-ACCESS-TOKEN:
 
<?xml version="1.0" encoding="UTF-8"?>
<clear-data-payload>
 	<model-name>$ModelName</model-name>
<filters>
<filter>
<dimension>$Dimension/dimension>
<filter-type>$FilterType</filter-type>
<filter-value>$FilterValue1</filter-value>
<filter-value>$FilterValue2</filter-value>
<filter-value>$FilterValue3</filter-value>
	  …

</filter>
	…
</filters>
<notify-on-success>
<email>$EmailAddress</email>
</notify-on-success>
<notify-on-failure>
<email>$EmailAddress</email>
</notify-on-failure>
</clear-data-payload>

Parameters

  1. $ModelName: (type: string) Name of the model in which leaf data will be cleared

  2. $Dimension: (type: string) Name of the dimension in which leaf data will be cleared

  3. $FilterType: (type: string) Dimension filter type

  4. $FilterValue: (type: string) Value of the filter

  5. $EmailAddress: (type: string) Valid email address to receive the notification

Payload Sample to Clear All Leaf Data

POST /modeling/model/data/leaf/clear HTTP/1.1
Content-Type: application/xml
Accept: application/xml
X-ACCESS-TOKEN:
 
<?xml version="1.0" encoding="UTF-8"?>
<clear-data-payload>
<model-name>ClearModelTest</model-name>
<filters>
<filter>
<dimension>Measures</dimension>
<filter-type>FixedMember</filter-type>
<filter-value>MTD</filter-value>
<filter-value>YTD</filter-value>
</filter>
<filter>
<dimension>Scenario</dimension>
<filter-type>FixedMember</filter-type>
<filter-value>Actual</filter-value>
<filter-value>Budget</filter-value>
</filter>
</filters>
<notify-on-success>
<email>john.doe@mycompany.com</email>
</notify-on-success>
<notify-on-failure>
<email>john.doe@mycompany.com</email>
</notify-on-failure>
</clear-data-payload>

Export Dimension / Attribute Hierarchy (Master and Analytic Models)

This API allows you to export the entire dimension/attribute hierarchy from a specified model in XML or JSON format. Example requests and responses in JSON and XML formats are provided below with dimension and attribute examples.

  • Hierarchy member code

  • Hierarchy member parent

  • Hierarchy member rollup operator

  • Hierarchy member display label

  • Mapped attributes

  • Mapped dimensions

Note:
DAP (Direct Access to PCR) models and the HACPM_Financial model are not supported with this API. Additionally, the root member (top most member of the hierarchy) will not have a <Member-Parent> tag.
POST /api/modeling/model/dimension/export HTTP/1/1
Content-Type: application/json or application/xml
Accept: application/json or application/xml
X-ACCESS-TOKEN: $ACCESS_TOKEN_GUID$

Request Payload Examples

Request Payload JSON

{
	“model”: “$ModelName”,
	“dimension”: “$DimensionName/$AttributeName”,
	“includeAttributes”: true
	“includeDimensions”: true
}

Request Payload XML

<?xml version="1.0" encoding="UTF-8"?>
<payload>
<model>$ModelName</model>
<dimension>$DimensionName</dimension>
<include-attributes>$includeAttributes</include-attributes>
<include-dimensions>$includeDimensions</include-dimensions>
</payload>

Parameters

  1. $ModelName: (type: string) Name of the model. If the model specified does not exist, the operation is canceled.

  2. $DimensionName: (type: string) Name of the Dimension that is associated with this model. If the dimension specified does not exist, the operation is canceled.

  3. $AttributeName: (type: string) Name of the Attribute that is associated with this model. If the Attribute specified does not exist, the operation is canceled.

  4. $includeAttributes: (type: boolean) Include attribute mapping (if applicable).

  5. $inclueDimensions: (type: boolean) include dimension mapping (if applicable).

Payload Samples and Requests

Payload Sample JSON: Dimension Example

{
	“modelName”: “Financial Data”,
	“dimensionName”: “Account”,
	“includeAttributes”: true
}

Request

{
  "members": [
    {
      "memberCode": "Expense",
      "rollupOp": "-",
      "memberDisplayLabel": "Expense"
    },
    {
      "memberCode": "28 DYN Income",
      "memberParent": "Expense",
      "rollupOp": "+",
      "memberDisplayLabel": "28 DYN Income",
      "mapping": [
        {
          "attributeName": "colour",
          "attributeCode": "green"
        }
      ]
    },
    {
      "memberCode": "28 HYP A/C",
      "memberParent": "Expense",
      "rollupOp": "+",
      "memberDisplayLabel": "28 HYP A/C",
      "mapping": [
        {
          "attributeName": "colour",
          "attributeCode": "red"
        }
      ]
    },
    {
      "memberCode": "28 Expense",
      "memberParent": "Expense",
      "rollupOp": "+",
      "memberDisplayLabel": "28 Expense",
      "mapping": [
        {
          "attributeName": "colour",
          "attributeCode": "orange"
        }
      ]
    },
    {
      "memberCode": "ExtraAccountMem21",
      "memberParent": "Expense",
      "rollupOp": "+",
      "memberDisplayLabel": "ExtraAccountMem21"
    },
    {
      "memberCode": "ExtraAccountMem22",
      "memberParent": "Expense",
      "rollupOp": "+",
      "memberDisplayLabel": "ExtraAccountMem22",
      "mapping": [
        {
          "attributeName": "colour",
          "attributeCode": "blue"
        }
      ]
    }
  ]
}

Payload Sample JSON: Dimension leaf member disabled example

When the dimension leaf member is disabled, dimension members mapped to attribute members will not be exported.

{
  "modelName": "Financial Data",
  "dimensionName": "color",
  "includeDimensions":true
}

Response

{
    "members": [
        {
            "memberCode": "color",
            "rollupOperator": "~",
            "memberDisplayLabel": "color"
        },
        {
            "memberCode": "blue",
            "memberParent": "color",
            "rollupOperator": "+",
            "memberDisplayLabel": "blue",
            "mapping": [
                {
                    "dimension": "Account",
                    "dimensionCode": [
                        "Account22"
                    ]
                }
            ]
        },
        {
            "memberCode": "orange",
            "memberParent": "color",
            "rollupOperator": "+",
            "memberDisplayLabel": "orange",
            "mapping": [
                {
                    "dimension": "Account",
                    "dimensionCode": [
                        "28 Expense"
                    ]
                }
            ]
        },
        {
            "memberCode": "red",
            "memberParent": "color",
            "rollupOperator": "+",
            "memberDisplayLabel": "red",
            "mapping": [
                {
                    "dimension": "Account",
                    "dimensionCode": [
                        "28 HYP A/C"
                    ]
                }
            ]
        },
        {
            "memberCode": "green",
            "memberParent": "color",
            "rollupOperator": "+",
            "memberDisplayLabel": "green",
            "mapping": [
                {
                    "dimension": "Account",
                    "dimensionCode": [
                        "28 DYN Income"
                    ]
                }
            ]
        },
        {
            "memberCode": "_Attribute_Default",
            "memberParent": "color",
            "rollupOperator": "+",
            "memberDisplayLabel": "_Attribute_Default",
            "mapping": [
                {
                    "dimension": "Account",
                    "dimensionCode": [
                        "Account21"
                    ]
                }
            ]
        }
    ]
}

Payload Sample JSON: Dimension leaf member enabled example

When the dimension leaf member is enabled, dimension members mapped to attribute members will be exported.

{
  "modelName": "Financial Data",
  "dimensionName": "Enterprise",
  "includeDimensions":true
}

Response

{
    "members": [
        {
            "memberCode": "908",
            "memberParent": "_Attribute_Default",
            "rollupOperator": "+",
            "memberDisplayLabel": "908 - Elim - Hot - Nev Corp"
        },
        {
            "memberCode": "909",
            "memberParent": "_Attribute_Default",
            "rollupOperator": "+",
            "memberDisplayLabel": "909 - Elim - Hot - Nev Inc"
        },
        {
            "memberCode": "2020 AFN",
            "memberParent": "_Attribute_Default",
            "rollupOperator": "+",
            "memberDisplayLabel": "2020 AFN"
        },
        {
            "memberCode": "Enterprise",
            "rollupOperator": "~",
            "memberDisplayLabel": "Enterprise"
        },
        {
            "memberCode": "Sales",
            "memberParent": "Enterprise",
            "rollupOperator": "+",
            "memberDisplayLabel": "Sales"
        },
        {
            "memberCode": "Finance",
            "memberParent": "Enterprise",
            "rollupOperator": "+",
            "memberDisplayLabel": "Finance"
        },
        {
            "memberCode": "_Attribute_Default",
            "memberParent": "Enterprise",
            "rollupOperator": "+",
            "memberDisplayLabel": "_Attribute_Default",
            "mapping": [
                {
                    "dimension": "Company",
                    "dimensionCode": [
                        "908",
                        "909",
                        "2020 AFN"
                    ]
                }
            ]
        }
    ]
}

Payload Sample JSON: Attribute Example

{
"modelName": "Financial Data",
"dimensionName": "colour",
"includeAttributes": true
}

Response

{
    "members": [
        {
            "memberCode": "Expense",
            "rollupOperator": "-",
            "memberDisplayLabel": "Expense"
        },
        {
            "memberCode": "28 DYN Income",
            "memberParent": "Expense",
            "rollupOperator": "+",
            "memberDisplayLabel": "28 DYN Income",
            "mapping": [
                {
                    "attribute": "color",
                    "attributeCode": "green"
                }
            ]
        },
        {
            "memberCode": "28 HYP A/C",
            "memberParent": "Expense",
            "rollupOperator": "+",
            "memberDisplayLabel": "28 HYP A/C",
            "mapping": [
                {
                    "attribute": "color",
                    "attributeCode": "red"
                }
            ]
        },
        {
            "memberCode": "28 Expense",
            "memberParent": "Expense",
            "rollupOperator": "+",
            "memberDisplayLabel": "28 Expense",
            "mapping": [
                {
                    "attribute": "color",
                    "attributeCode": "orange"
                }
            ]
        }
    ]
}

Payload Sample XML: Dimension Example

<?xml version="1.0" encoding="UTF-8"?>
<payload>
<model>Financial Data</model>
<dimension>Account</dimension>
<include-attributes>true</include-attributes>
</payload>

Response

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Payload>
    <Member>
        <Member-Code>Expense</Member-Code>
        <Rollup-Operator>-</Rollup-Operator>
        <Member-Display-Label>Expense</Member-Display-Label>
    </Member>
    <Member>
        <Member-Code>28 DYN Income</Member-Code>
        <Member-Parent>Expense</Member-Parent>
        <Rollup-Operator>+</Rollup-Operator>
        <Member-Display-Label>28 DYN Income</Member-Display-Label>
        <Mapping>
            <Attribute>color</Attribute>
            <Attribute-Code>green</Attribute-Code>
        </Mapping>
    </Member>
    <Member>
        <Member-Code>28 HYP A/C</Member-Code>
        <Member-Parent>Expense</Member-Parent>
        <Rollup-Operator>+</Rollup-Operator>
        <Member-Display-Label>28 HYP A/C</Member-Display-Label>
        <Mapping>
            <Attribute>color</Attribute>
            <Attribute-Code>red</Attribute-Code>
        </Mapping>
    </Member>
    <Member>
        <Member-Code>28 Expense</Member-Code>
        <Member-Parent>Expense</Member-Parent>
        <Rollup-Operator>+</Rollup-Operator>
        <Member-Display-Label>28 Expense</Member-Display-Label>
        <Mapping>
            <Attribute>color</Attribute>
            <Attribute-Code>orange</Attribute-Code>
        </Mapping>
    </Member>
</Payload>

Payload Sample XML: Attribute Example

<?xml version="1.0" encoding="UTF-8"?>
<payload>
<model>Financial Data</model>
<dimension>colour</dimension>
<include-attributes>true</include-attributes>
</payload>

Response

Response:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Payload>
    <Dimension-Member>
        <Member-Code>colour</Member-Code>
        <Rollup-Operator>~</Rollup-Operator>
        <Display-Label>colour</Display-Label>
    </Dimension-Member>
    <Dimension-Member>
        <Member-Code>blue</Member-Code>
        <Member-Parent>colour</Member-Parent>
        <Rollup-Operator>+</Rollup-Operator>
        <Display-Label>blue</Display-Label>
    </Dimension-Member>
    <Dimension-Member>
        <Member-Code>orange</Member-Code>
        <Member-Parent>colour</Member-Parent>
        <Rollup-Operator>+</Rollup-Operator>
        <Display-Label>orange</Display-Label>
    </Dimension-Member>
    <Dimension-Member>
        <Member-Code>red</Member-Code>
        <Member-Parent>colour</Member-Parent>
        <Rollup-Operator>+</Rollup-Operator>
        <Display-Label>red</Display-Label>
    </Dimension-Member>
    <Dimension-Member>
        <Member-Code>green</Member-Code>
        <Member-Parent>colour</Member-Parent>
        <Rollup-Operator>+</Rollup-Operator>
        <Display-Label>green</Display-Label>
    </Dimension-Member>
    <Dimension-Member>
        <Member-Code>_Attribute_Default</Member-Code>
        <Member-Parent>colour</Member-Parent>
        <Rollup-Operator>+</Rollup-Operator>
        <Display-Label>_Attribute_Default</Display-Label>
    </Dimension-Member>
</Payload>

Payload Sample XML: Attribute Example with dimension leaf member disabled

<?xml version="1.0" encoding="UTF-8"?>
<payload>
    <model>Financial Data</model>
    <dimension>color</dimension>
     <include-dimensions>true</include-dimensions>
</payload>

Response

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Payload>
    <Member>
        <Member-Code>color</Member-Code>
        <Rollup-Operator>~</Rollup-Operator>
        <Member-Display-Label>color</Member-Display-Label>
    </Member>
    <Member>
        <Member-Code>blue</Member-Code>
        <Member-Parent>color</Member-Parent>
        <Rollup-Operator>+</Rollup-Operator>
        <Member-Display-Label>blue</Member-Display-Label>
        <Mapping>
            <Dimension>Account</Dimension>
            <Dimension-Code>Account22</Dimension-Code>
        </Mapping>
    </Member>
    <Member>
        <Member-Code>orange</Member-Code>
        <Member-Parent>color</Member-Parent>
        <Rollup-Operator>+</Rollup-Operator>
        <Member-Display-Label>orange</Member-Display-Label>
        <Mapping>
            <Dimension>Account</Dimension>
            <Dimension-Code>28 Expense</Dimension-Code>
        </Mapping>
    </Member>
    <Member>
        <Member-Code>red</Member-Code>
        <Member-Parent>color</Member-Parent>
        <Rollup-Operator>+</Rollup-Operator>
        <Member-Display-Label>red</Member-Display-Label>
        <Mapping>
            <Dimension>Account</Dimension>
            <Dimension-Code>28 HYP A/C</Dimension-Code>
        </Mapping>
    </Member>
    <Member>
        <Member-Code>green</Member-Code>
        <Member-Parent>color</Member-Parent>
        <Rollup-Operator>+</Rollup-Operator>
        <Member-Display-Label>green</Member-Display-Label>
        <Mapping>
            <Dimension>Account</Dimension>
            <Dimension-Code>28 DYN Income</Dimension-Code>
        </Mapping>
    </Member>
    <Member>
        <Member-Code>_Attribute_Default</Member-Code>
        <Member-Parent>color</Member-Parent>
        <Rollup-Operator>+</Rollup-Operator>
        <Member-Display-Label>_Attribute_Default</Member-Display-Label>
        <Mapping>
            <Dimension>Account</Dimension>
            <Dimension-Code>Account21</Dimension-Code>
        </Mapping>
    </Member>
</Payload>

Payload Sample XML: Attribute - with dimension leaf member enabled

<?xml version="1.0" encoding="UTF-8"?>
<payload>
    <model>Financial Data</model>
    <dimension>color</dimension>
     <include-dimensions>true</include-dimensions>
</payload>

Response

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Payload>
    <Member>
        <Member-Code>908</Member-Code>
        <Member-Parent>_Attribute_Default</Member-Parent>
        <Rollup-Operator>+</Rollup-Operator>
        <Member-Display-Label>908 - Elim - Hot - Nev Corp</Member-Display-Label>
    </Member>
    <Member>
        <Member-Code>909</Member-Code>
        <Member-Parent>_Attribute_Default</Member-Parent>
        <Rollup-Operator>+</Rollup-Operator>
        <Member-Display-Label>909 - Elim - Hot - Nev Inc</Member-Display-Label>
    </Member>
    <Member>
        <Member-Code>2020 AFN</Member-Code>
        <Member-Parent>_Attribute_Default</Member-Parent>
        <Rollup-Operator>+</Rollup-Operator>
        <Member-Display-Label>2020 AFN</Member-Display-Label>
    </Member>
    <Member>
        <Member-Code>Enterprise</Member-Code>
        <Rollup-Operator>~</Rollup-Operator>
        <Member-Display-Label>Enterprise</Member-Display-Label>
    </Member>
    <Member>
        <Member-Code>Sales</Member-Code>
        <Member-Parent>Enterprise</Member-Parent>
        <Rollup-Operator>+</Rollup-Operator>
        <Member-Display-Label>Sales</Member-Display-Label>
    </Member>
    <Member>
        <Member-Code>Finance</Member-Code>
        <Member-Parent>Enterprise</Member-Parent>
        <Rollup-Operator>+</Rollup-Operator>
        <Member-Display-Label>Finance</Member-Display-Label>
    </Member>
    <Member>
        <Member-Code>_Attribute_Default</Member-Code>
        <Member-Parent>Enterprise</Member-Parent>
        <Rollup-Operator>+</Rollup-Operator>
        <Member-Display-Label>_Attribute_Default</Member-Display-Label>
        <Mapping>
            <Dimension>Company</Dimension>
            <Dimension-Code>908</Dimension-Code>
            <Dimension-Code>909</Dimension-Code>
            <Dimension-Code>2020 AFN</Dimension-Code>
        </Mapping>
    </Member>
</Payload>

Success Response

HTTP/1.1 200 OK

Error Responses

Service Not Available (Possibly due to maintenance)

HTTP/1.1 404 Not Found

One or more HTTP headers were missing

HTTP/1.1 412 Precondition Failed

Could not find payload body <payload>…</payload>

Could not find model: xxx

Could not find dimension: xxx

Dimension cannot be null or empty.

HTTP/1.1 412 Precondition Failed

Unauthorized Access (Access key lookup failed)

HTTP/1.1 401 Unauthorized

Invalid XML (Bad Request)

HTTP/1.1 400 Bad Request

Export Leaf-Level Data (Scoped) (Master and Analytic Models)

This API allows you to export the leaf level data from a specified model in XMLand JSON format. Additionally, you can specify one or more filters to export specific data, and you can use attributes as filters.

POST /modeling/model/data/export HTTP/1.1
Content-Type: application/json or application/xml
Accept: application/json or application/xml
X-ACCESS-TOKEN: $ACCESS_TOKEN_GUID$

Request Payload Examples

Request Payload JSON- - example with Attribute and Operation Type

{
  "model": "$ModelName",
  "filters": [
    {
      "dimension": "$Dimension"/”$Attribute”,,
      "filterType": "$FilterType",
      "filterValues": [
        "$value1",
        "$value2"
      ]
    }
  ],
  "memberDisplay": "$MemberDisplay",
  "suppressZeroes": "$SupressZerosFlag"
  “operationType”: “operationType”
}

Request Payload JSON - example with Attribute

{
  "model": "$ModelName",
  "filters": [
  {
"dimension": "$Dimension"/"$Attribute",
"filterType": "$FilterType",
"filterValues": [
"$value1",
"$value2"
  ]
 }
],
"memberDisplay": "$MemberDisplay",
"suppressZeroes": "$SupressZerosFlag"
}

Request Payload XML - example with Attribute and Operation Type

<?xml version="1.0" encoding="UTF-8"?>
<payload>
   <model>$ModelNamel</model>
   <filters>
      <filter>
         <dimension>$Dimension/$Attribute</dimension>
         <filter-type>$FilterType</filter-type>
         <filter-value>$value1</filter-value>
         <filter-value>$value2</filter-value>
      </filter>
   </filters>
   <member-display>$MemberDisplay</member-display>
   <suppress-zeroes>$SupressZerosFlag</suppress-zeroes>
  <operation-type>AND</operation-type>
</payload>

Request Payload XML - Attribute Example

<?xml version="1.0" encoding="UTF-8"?>
<payload>
   <model>$ModelNamel</model>
   <filters>
      <filter>
         <dimension>$Dimension/$Attribute</dimension>
         <filter-type>$FilterType</filter-type>
         <filter-value>$value1</filter-value>
         <filter-value>$value2</filter-value>
      </filter>
   </filters>
   <member-display>$MemberDisplay</member-display>
   <suppress-zeroes>$SupressZerosFlag</suppress-zeroes>
</payload>

Parameters

  1. $ModelName: (type: string) Name of the model

  2. $Dimension: (type: string) Name of the dimension

  3. $Attribute: (type: string) Name of the attribute

  4. $FilterType: (type: string) Dimension filter type, can be FixedMember or MemberAndBelow

  5. $FilterValue: (type: string) Value of the filter

  6. $MemberDisplay (type: string) Optional, can be either Code or Display Label, but defaults to Code

  7. $SupressZerosFlag (type: boolean) Optional, can be either True or False, but defaults to True

  8. $OperationType: (type: string) Operation Type, can be OR or AND, but default is OR - applicable among attribute filter values.

Payload Samples

Payload Sample JSON - example with Operation Type and Region Attribute

{
  "model": "Financial Data",
  "filters": [
    {
      "dimension": "Account",
      "filterType": "MemberAndBelow",
      "filterValues": [
        "Expense"
      ]
    },
    {
      "dimension": "BusinessCenter",
      "filterType": "FixedMember",
      "filterValues": [
        "000"
      ]
    },
    {
      "dimension": "Company",
      "filterType": "FixedMember",
      "filterValues": [
        "2020 Host Spain",
        "2020 HOST CND"
      ]
    },
    {
      "dimension": "CostCenter",
      "filterType": "FixedMember",
      "filterValues": [
        "1000"
      ]
    },
    {
      "dimension": "Department",
      "filterType": "FixedMember",
      "filterValues": [
        "Sales"
      ]
    },
    {
      "dimension": "Geography",
      "filterType": "FixedMember",
      "filterValues": [
        "000-0000"
      ]
    },
 {
  "dimension": "Region_Attribute",
  "filterType":  "FixedMember",
      "filterValues": [
        "North America"
      ]
    },
{
  "dimension": "Region_Attribute",
  "filterType":  "FixedMember",
      "filterValues": [
        "South America"
     ]
    }
  ],
  "memberDisplay": "DisplayLabel",
  "suppressZeroes": true,
  “operationType”: “AND”
}

Response JSON - example with Operation Type and Region Attribute

[
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Dec-15",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "32.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Jun-15",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "23.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Nov-15",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "31.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Oct-16",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "45.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "May-15",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "22.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Feb-16",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "35.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Aug-15",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "26.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Jan-16",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "33.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Jul-15",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "24.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Feb-15",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "18.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Jul-16",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "41.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Jun-16",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "40.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Sep-16",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "44.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Apr-15",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "20.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Aug-16",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "43.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Mar-15",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "19.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Oct-15",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "28.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Apr-16",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "37.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Mar-16",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "36.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Sep-15",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "27.0"
    }
]

Payload Sample JSON - With Region Attribute

{
  "model": "Financial Data",
  "filters": [
    {
      "dimension": "Account",
      "filterType": "MemberAndBelow",
      "filterValues": [
        "Expense"
      ]
    },
    {
      "dimension": "BusinessCenter",
      "filterType": "FixedMember",
      "filterValues": [
        "000"
      ]
    },
    {
      "dimension": "Company",
      "filterType": "FixedMember",
      "filterValues": [
        "2020 Host Spain",
        "2020 HOST CND"
      ]
    },
    {
      "dimension": "CostCenter",
      "filterType": "FixedMember",
      "filterValues": [
        "1000"
      ]
    },
    {
      "dimension": "Department",
      "filterType": "FixedMember",
      "filterValues": [
        "Sales"
      ]
    },
    {
      "dimension": "Geography",
      "filterType": "FixedMember",
      "filterValues": [
        "000-0000"
      ]
    },
    {
      "dimension": "Region_Attribute",
      "filterType": "FixedMember",
      "filterValues": [
        "North America"
      ]
    }
  ],
  "memberDisplay": "DisplayLabel",
  "suppressZeroes": true
}

Payload Sample XML - example with Attribute and Operation Type

[
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Dec-15",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "32.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Jun-15",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "23.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Nov-15",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "31.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Oct-16",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "45.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "May-15",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "22.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Feb-16",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "35.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Aug-15",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "26.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Jan-16",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "33.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Jul-15",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "24.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Feb-15",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "18.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Jul-16",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "41.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Jun-16",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "40.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Sep-16",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "44.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Apr-15",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "20.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Aug-16",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "43.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Mar-15",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "19.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Oct-15",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "28.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Apr-16",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "37.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Mar-16",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "36.0"
    },
    {
        "BusinessCenter": "000",
        "Company": "2020 Host Spain",
        "CostCenter": "1000",
        "ICSegment": "Default",
        "ProductLine": "00",
        "Reporting": "G/L Data (LC)",
        "Time": "Sep-15",
        "Account": "28 Expense",
        "Department": "Sales",
        "Geography": "000-0000 - Balance Sheet",
        "Scenario": "Budget 2013",
        "Amount": "27.0"
    }
]

Payload Sample XML - With Attribute

<?xml version="1.0" encoding="UTF-8"?>
<payload>
   <model>Financial Data</model>
   <filters>
      <filter>
         <dimension>Account</dimension>
         <filter-type>MemberAndBelow</filter-type>
         <filter-value>Expense</filter-value>
      </filter>
      <filter>
         <dimension>BusinessCenter</dimension>
         <filter-type>FixedMember</filter-type>
         <filter-value>000</filter-value>
      </filter>
      <filter>
         <dimension>Company</dimension>
         <filter-type>FixedMember</filter-type>
         <filter-value>2020 Host Spain</filter-value>
         <filter-value>2020 HOST CND</filter-value>
      </filter>
      <filter>
         <dimension>CostCenter</dimension>
         <filter-type>FixedMember</filter-type>
         <filter-value>1000</filter-value>
      </filter>
      <filter>
         <dimension>Department</dimension>
         <filter-type>FixedMember</filter-type>
         <filter-value>Sales</filter-value>
      </filter>
      <filter>
         <dimension>Geography</dimension>
         <filter-type>FixedMember</filter-type>
         <filter-value>000-0000</filter-value>
      </filter>
       <filter>
         <dimension>Region_Attribute</dimension>
         <filter-type>FixedMember</filter-type>
         <filter-value>North America</filter-value>
      </filter>
   </filters>
   <member-display>DisplayLabel</member-display>
   <suppress-zeroes>true</suppress-zeroes>
</payload>

XML Sample Response - example with Attribute and Operation Type

<?xml version="1.0" ?>
<records>
    <record>
        <BusinessCenter>000</BusinessCenter>
        <Company>2020 Host Spain</Company>
        <CostCenter>1000</CostCenter>
        <ICSegment>Default</ICSegment>
        <ProductLine>00</ProductLine>
        <Reporting>G/L Data (LC)</Reporting>
        <Time>Dec-15</Time>
        <Account>28 Expense</Account>
        <Department>Sales</Department>
        <Geography>000-0000 - Balance Sheet</Geography>
        <Scenario>Budget 2013</Scenario>
        <Amount>32.0</Amount>
    </record>
    <record>
        <BusinessCenter>000</BusinessCenter>
        <Company>2020 Host Spain</Company>
        <CostCenter>1000</CostCenter>
        <ICSegment>Default</ICSegment>
        <ProductLine>00</ProductLine>
        <Reporting>G/L Data (LC)</Reporting>
        <Time>Jun-15</Time>
        <Account>28 Expense</Account>
        <Department>Sales</Department>
        <Geography>000-0000 - Balance Sheet</Geography>
        <Scenario>Budget 2013</Scenario>
        <Amount>23.0</Amount>
    </record>
    <record>
        <BusinessCenter>000</BusinessCenter>
        <Company>2020 Host Spain</Company>
        <CostCenter>1000</CostCenter>
        <ICSegment>Default</ICSegment>
        <ProductLine>00</ProductLine>
        <Reporting>G/L Data (LC)</Reporting>
        <Time>Nov-15</Time>
        <Account>28 Expense</Account>
        <Department>Sales</Department>
        <Geography>000-0000 - Balance Sheet</Geography>
        <Scenario>Budget 2013</Scenario>
        <Amount>31.0</Amount>
    </record>
    <record>
        <BusinessCenter>000</BusinessCenter>
        <Company>2020 Host Spain</Company>
        <CostCenter>1000</CostCenter>
        <ICSegment>Default</ICSegment>
        <ProductLine>00</ProductLine>
        <Reporting>G/L Data (LC)</Reporting>
        <Time>Oct-16</Time>
        <Account>28 Expense</Account>
        <Department>Sales</Department>
        <Geography>000-0000 - Balance Sheet</Geography>
        <Scenario>Budget 2013</Scenario>
        <Amount>45.0</Amount>
    </record>
    <record>
        <BusinessCenter>000</BusinessCenter>
        <Company>2020 Host Spain</Company>
        <CostCenter>1000</CostCenter>
        <ICSegment>Default</ICSegment>
        <ProductLine>00</ProductLine>
        <Reporting>G/L Data (LC)</Reporting>
        <Time>May-15</Time>
        <Account>28 Expense</Account>
        <Department>Sales</Department>
        <Geography>000-0000 - Balance Sheet</Geography>
        <Scenario>Budget 2013</Scenario>
        <Amount>22.0</Amount>
    </record>
    <record>
        <BusinessCenter>000</BusinessCenter>
        <Company>2020 Host Spain</Company>
        <CostCenter>1000</CostCenter>
        <ICSegment>Default</ICSegment>
        <ProductLine>00</ProductLine>
        <Reporting>G/L Data (LC)</Reporting>
        <Time>Feb-16</Time>
        <Account>28 Expense</Account>
        <Department>Sales</Department>
        <Geography>000-0000 - Balance Sheet</Geography>
        <Scenario>Budget 2013</Scenario>
        <Amount>35.0</Amount>
    </record>
    <record>
        <BusinessCenter>000</BusinessCenter>
        <Company>2020 Host Spain</Company>
        <CostCenter>1000</CostCenter>
        <ICSegment>Default</ICSegment>
        <ProductLine>00</ProductLine>
        <Reporting>G/L Data (LC)</Reporting>
        <Time>Aug-15</Time>
        <Account>28 Expense</Account>
        <Department>Sales</Department>
        <Geography>000-0000 - Balance Sheet</Geography>
        <Scenario>Budget 2013</Scenario>
        <Amount>26.0</Amount>
    </record>
    <record>
        <BusinessCenter>000</BusinessCenter>
        <Company>2020 Host Spain</Company>
        <CostCenter>1000</CostCenter>
        <ICSegment>Default</ICSegment>
        <ProductLine>00</ProductLine>
        <Reporting>G/L Data (LC)</Reporting>
        <Time>Jan-16</Time>
        <Account>28 Expense</Account>
        <Department>Sales</Department>
        <Geography>000-0000 - Balance Sheet</Geography>
        <Scenario>Budget 2013</Scenario>
        <Amount>33.0</Amount>
    </record>
    <record>
        <BusinessCenter>000</BusinessCenter>
        <Company>2020 Host Spain</Company>
        <CostCenter>1000</CostCenter>
        <ICSegment>Default</ICSegment>
        <ProductLine>00</ProductLine>
        <Reporting>G/L Data (LC)</Reporting>
        <Time>Jul-15</Time>
        <Account>28 Expense</Account>
        <Department>Sales</Department>
        <Geography>000-0000 - Balance Sheet</Geography>
        <Scenario>Budget 2013</Scenario>
        <Amount>24.0</Amount>
    </record>
    <record>
        <BusinessCenter>000</BusinessCenter>
        <Company>2020 Host Spain</Company>
        <CostCenter>1000</CostCenter>
        <ICSegment>Default</ICSegment>
        <ProductLine>00</ProductLine>
        <Reporting>G/L Data (LC)</Reporting>
        <Time>Feb-15</Time>
        <Account>28 Expense</Account>
        <Department>Sales</Department>
        <Geography>000-0000 - Balance Sheet</Geography>
        <Scenario>Budget 2013</Scenario>
        <Amount>18.0</Amount>
    </record>
    <record>
        <BusinessCenter>000</BusinessCenter>
        <Company>2020 Host Spain</Company>
        <CostCenter>1000</CostCenter>
        <ICSegment>Default</ICSegment>
        <ProductLine>00</ProductLine>
        <Reporting>G/L Data (LC)</Reporting>
        <Time>Jul-16</Time>
        <Account>28 Expense</Account>
        <Department>Sales</Department>
        <Geography>000-0000 - Balance Sheet</Geography>
        <Scenario>Budget 2013</Scenario>
        <Amount>41.0</Amount>
    </record>
    <record>
        <BusinessCenter>000</BusinessCenter>
        <Company>2020 Host Spain</Company>
        <CostCenter>1000</CostCenter>
        <ICSegment>Default</ICSegment>
        <ProductLine>00</ProductLine>
        <Reporting>G/L Data (LC)</Reporting>
        <Time>Jun-16</Time>
        <Account>28 Expense</Account>
        <Department>Sales</Department>
        <Geography>000-0000 - Balance Sheet</Geography>
        <Scenario>Budget 2013</Scenario>
        <Amount>40.0</Amount>
    </record>
    <record>
        <BusinessCenter>000</BusinessCenter>
        <Company>2020 Host Spain</Company>
        <CostCenter>1000</CostCenter>
        <ICSegment>Default</ICSegment>
        <ProductLine>00</ProductLine>
        <Reporting>G/L Data (LC)</Reporting>
        <Time>Sep-16</Time>
        <Account>28 Expense</Account>
        <Department>Sales</Department>
        <Geography>000-0000 - Balance Sheet</Geography>
        <Scenario>Budget 2013</Scenario>
        <Amount>44.0</Amount>
    </record>
    <record>
        <BusinessCenter>000</BusinessCenter>
        <Company>2020 Host Spain</Company>
        <CostCenter>1000</CostCenter>
        <ICSegment>Default</ICSegment>
        <ProductLine>00</ProductLine>
        <Reporting>G/L Data (LC)</Reporting>
        <Time>Apr-15</Time>
        <Account>28 Expense</Account>
        <Department>Sales</Department>
        <Geography>000-0000 - Balance Sheet</Geography>
        <Scenario>Budget 2013</Scenario>
        <Amount>20.0</Amount>
    </record>
    <record>
        <BusinessCenter>000</BusinessCenter>
        <Company>2020 Host Spain</Company>
        <CostCenter>1000</CostCenter>
        <ICSegment>Default</ICSegment>
        <ProductLine>00</ProductLine>
        <Reporting>G/L Data (LC)</Reporting>
        <Time>Aug-16</Time>
        <Account>28 Expense</Account>
        <Department>Sales</Department>
        <Geography>000-0000 - Balance Sheet</Geography>
        <Scenario>Budget 2013</Scenario>
        <Amount>43.0</Amount>
    </record>
    <record>
        <BusinessCenter>000</BusinessCenter>
        <Company>2020 Host Spain</Company>
        <CostCenter>1000</CostCenter>
        <ICSegment>Default</ICSegment>
        <ProductLine>00</ProductLine>
        <Reporting>G/L Data (LC)</Reporting>
        <Time>Mar-15</Time>
        <Account>28 Expense</Account>
        <Department>Sales</Department>
        <Geography>000-0000 - Balance Sheet</Geography>
        <Scenario>Budget 2013</Scenario>
        <Amount>19.0</Amount>
    </record>
    <record>
        <BusinessCenter>000</BusinessCenter>
        <Company>2020 Host Spain</Company>
        <CostCenter>1000</CostCenter>
        <ICSegment>Default</ICSegment>
        <ProductLine>00</ProductLine>
        <Reporting>G/L Data (LC)</Reporting>
        <Time>Oct-15</Time>
        <Account>28 Expense</Account>
        <Department>Sales</Department>
        <Geography>000-0000 - Balance Sheet</Geography>
        <Scenario>Budget 2013</Scenario>
        <Amount>28.0</Amount>
    </record>
    <record>
        <BusinessCenter>000</BusinessCenter>
        <Company>2020 Host Spain</Company>
        <CostCenter>1000</CostCenter>
        <ICSegment>Default</ICSegment>
        <ProductLine>00</ProductLine>
        <Reporting>G/L Data (LC)</Reporting>
        <Time>Apr-16</Time>
        <Account>28 Expense</Account>
        <Department>Sales</Department>
        <Geography>000-0000 - Balance Sheet</Geography>
        <Scenario>Budget 2013</Scenario>
        <Amount>37.0</Amount>
    </record>
    <record>
        <BusinessCenter>000</BusinessCenter>
        <Company>2020 Host Spain</Company>
        <CostCenter>1000</CostCenter>
        <ICSegment>Default</ICSegment>
        <ProductLine>00</ProductLine>
        <Reporting>G/L Data (LC)</Reporting>
        <Time>Mar-16</Time>
        <Account>28 Expense</Account>
        <Department>Sales</Department>
        <Geography>000-0000 - Balance Sheet</Geography>
        <Scenario>Budget 2013</Scenario>
        <Amount>36.0</Amount>
    </record>
    <record>
        <BusinessCenter>000</BusinessCenter>
        <Company>2020 Host Spain</Company>
        <CostCenter>1000</CostCenter>
        <ICSegment>Default</ICSegment>
        <ProductLine>00</ProductLine>
        <Reporting>G/L Data (LC)</Reporting>
        <Time>Sep-15</Time>
        <Account>28 Expense</Account>
        <Department>Sales</Department>
        <Geography>000-0000 - Balance Sheet</Geography>
        <Scenario>Budget 2013</Scenario>
        <Amount>27.0</Amount>
    </record>
    <record>
        <BusinessCenter>000</BusinessCenter>
        <Company>2020 Host Spain</Company>
        <CostCenter>1000</CostCenter>
        <ICSegment>Default</ICSegment>
        <ProductLine>00</ProductLine>
        <Reporting>G/L Data (LC)</Reporting>
        <Time>Nov-14</Time>
        <Account>28 Expense</Account>
        <Department>Sales</Department>
        <Geography>000-0000 - Balance Sheet</Geography>
        <Scenario>Budget 2013</Scenario>
        <Amount>14.0</Amount>
    </record>
    <record>
        <BusinessCenter>000</BusinessCenter>
        <Company>2020 Host Spain</Company>
        <CostCenter>1000</CostCenter>
        <ICSegment>Default</ICSegment>
        <ProductLine>00</ProductLine>
        <Reporting>G/L Data (LC)</Reporting>
        <Time>Dec-14</Time>
        <Account>28 Expense</Account>
        <Department>Sales</Department>
        <Geography>000-0000 - Balance Sheet</Geography>
        <Scenario>Budget 2013</Scenario>
        <Amount>15.0</Amount>
    </record>
</records>

Success Response

HTTP/1.1 200/204 OK

Error Responses

Service Not Available (possibly due to maintenance)

HTTP/1.1 503 Service Unavailable

One or more HTTP headers were missing

HTTP/1.1 412 Precondition Failed

Unauthorized Access (access key lookup failed)

HTTP/1.1 401 Unauthorized

Invalid JSON/XML (bad request)

HTTP/1.1 400 Bad Request

Not Found (source model not found)

HTTP/1.1 404 Not Found

Load Data (Master and Analytic Models)

Use this API to import data to a Master or an Analytic model. Incremental data loads are supported. Invoke Clear Data API to clear all data in the model before the data import if an incremental data load is not needed. Use additional parameters to have a success or failure notification emailed to you.

Additional options described below include:

  • Optionally allowing data to continue to load even when dimension members are missing

  • Optionally adding missing dimension members

  • Optionally receiving notification upon success and failure of the data load

POST /modeling/model/data/load HTTP/1.1
Content-Type: application/xml
Accept: application/xml
X-ACCESS-TOKEN:
 
<?xml version="1.0" encoding="UTF-8"?>
<load-data-payload>
<model-name>$ModelName</model-name>
<delimiter>$Delimiter</delimiter>
<aggregate-flag>$AggregateFlag</aggregate-flag>
<continue-on-error>true</continue-on-error>
    <add-missing-dimension-members>true</add-missing-dimension-members>
    <missing-dimension-members>
    <entry>
        <key>dimensionname</key>
        <value>rollupname</value>
    </entry>
    </missing-dimension-members>     
<page-dimensions>
<entry>
<key>$PageDimension</key>
<value>$PageMember</value>
</entry>
	...
</page-dimensions>
<column-dimensions>
<entry>
<key>$ColumnNumber</key>
<value>$ColumnDimension</value>
</entry>
	...
</column-dimensions>
<column-members>
<entry>
<key>$ColumnNumber</key>
<value>$DimensionMember</value>
</entry>
	...
</column-members>
<notify-on-success>
<email>email1@domain</email>
<email>email2@domain</email>
</notify-on-success>
<notify-on-failure>
<email>email1@domain</email>
<email>email2@domain</email>
</notify-on-failure>
<data-records>
<data-record>$Data</data-record>
	...
</data-records>
</load-data-payload>

Parameters

  1. $ModelName: Name of the model

  2. $Delimiter: Data delimiter

  3. $AggregateFlag: “True” will aggregate data whenever duplicates are found. “False” will replace data when duplicates are found

  4. $PageDimension: Dimension on page

  5. $PageMember : Dimension member on page

  6. $ColumnNumber: Column number that represents dimension/member on the column

  7. $ColumnDimension: Dimension on column

  8. $DimensionMember: If a Dimension on a row is expanded, include all expanded members and corresponding column numbers

  9. $Data: data separated by delimiter

Sample Payload

<?xml version="1.0" encoding="UTF-8"?>
<load-data-payload>
<model-name>LoadModelTest</model-name>
<delimiter>|_|</delimiter>
<aggregate-flag>true</aggregate-flag>
<continue-on-error>true</continue-on-error>
    <add-missing-dimension-members>true</add-missing-dimension-members>
    <missing-dimension-members>
    <entry>
<key>Products</key>
<value>Laptops</value>
</entry>
</missing-dimension-members>
    <page-dimensions>
<entry>
<key>Measures</key>
<value>MTD</value>
</entry>
<entry>
<key>Scenario</key>
<value>Budget</value>
</entry>
</page-dimensions>
<column-dimensions>
<entry>
<key>1</key>
<value>Products</value>
</entry>
<entry>
<key>2</key>
<value>Time</value>
</entry>
<entry>
<key>3</key>
<value>Time</value>
</entry>
<entry>
<key>4</key>
<value>Time</value>
</entry>
<entry>
<key>5</key>
<value>Time</value>
</entry>
<entry>
<key>6</key>
<value>Time</value>
</entry>
<entry>
<key>7</key>
<value>Time</value>
</entry>
<entry>
<key>8</key>
<value>Time</value>
</entry>
<entry>
<key>9</key>
<value>Time</value>
</entry>
<entry>
<key>10</key>
<value>Time</value>
</entry>
<entry>
<key>11</key>
<value>Time</value>
</entry>
<entry>
<key>12</key>
<value>Time</value>
</entry>
<entry>
<key>13</key>
<value>Time</value>
</entry>
</column-dimensions>
<column-members>
<entry>
<key>2</key>
<value>Jan</value>
</entry>
<entry>
<key>3</key>
<value>Feb</value>
</entry>
<entry>
<key>4</key>
<value>Mar</value>
</entry>
<entry>
<key>5</key>
<value>Apr</value>
</entry>
<entry>
<key>6</key>
<value>May</value>
</entry>
<entry>
<key>7</key>
<value>Jun</value>
</entry>
<entry>
<key>8</key>
<value>Jul</value>
</entry>
<entry>
<key>9</key>
<value>Aug</value>
</entry>
<entry>
<key>10</key>
<value>Sep</value>
</entry>
<entry>
<key>11</key>
<value>Oct</value>
</entry>
<entry>
<key>12</key>
<value>Nov</value>
</entry>
<entry>
<key>13</key>
<value>Dec</value>
</entry>
</column-members>
<notify-on-success>
<email>john.doe@mycompany</email>
</notify-on-success>
<notify-on-failure>
<email>john.doe@mycompany</email>
<email>jane.doe@mycompany</email>
</notify-on-failure>
<data-records>
<data-record>HP1|_|10|_|10|_|10|_|10|_|10|_|10|_|10|_|10|_|10|_|10|_|10|_|10</data-record>
<data-record>Dell1|_|10|_|10|_|10|_|10|_|10|_|10|_|10|_|10|_|10|_|10|_|10|_|10</data-record>
<data-record>Lenovo|_|20|_|20|_|20|_|20|_|20|_|20|_|20|_|20|_|20|_|20|_|20|_|20</data-record>
<data-record>Pixel 2|_|20|_|20|_|20|_|20|_|20|_|20|_|20|_|20|_|20|_|20|_|20|_|20</data-record>
<data-record>Nexus 6|_|30|_|30|_|30|_|30|_|30|_|30|_|30|_|30|_|30|_|30|_|30|_|30</data-record>
<data-record>iPhone 7|_|40|_|40|_|40|_|40|_|40|_|40|_|40|_|40|_|40|_|40|_|40|_|40</data-record>
</data-records>
</load-data-payload>
Note:
The recipient of the data load will receive an email titled "Data Load Success with exceptions" along with the exceptions detailing what went wrong.

Additional Information on Data Load Notifications

You can optionally include two sections for success and failure email notifications.

Notify on Success

<notify-on-success>
<email>email1@domain</email>
 	<email>email2@domain</email>
</notify-on-success>
Notify on Failure

<notify-on-failure>
<email>email1@domain</email>
<email>email2@domain</email>
</notify-on-failure>
Note:
Success and failure notifications will only be sent to registered users. Add users in the application before including the users in the email notifications.

Additional Information on Missing Leaf Dimension Members and Continue on Error

This is an optional configuration to continue data loading even when there are missing leaf dimension members. If this option is configured, then the data load API will continue to load the valid data and will notify users with the list of missing leaf dimension members for which data has not been loaded.

This flag in the Data Load API continues to load data even when an Invalid member or Invalid number is encountered.

<continue-on-error>true</continue-on-error>

This optional flag in the Data Load API adds missing leaf dimension members, if any, to the corresponding dimension in the Master and Analytic Model Data Load API, and then loads the data.

<add-missing-dimension-members>true</add-missing-dimension-members>
Note:
To add missing leaf dimension members, the <continue-on-error> property must be set to true.

Additionally, you can specify where the additional leaf dimension members should be added.

<missing-dimension-members>       
<entry>       
 <key>dimensionname</key>       
 <value>rollupname</value>       
</entry>       
</missing-dimension-members>

Insert the <entry> ... </entry> section for each dimension that you want to specify where new members should be added.

Use Case 1:

This will continue the data load even if there are any missing leaf dimension members or invalid numbers found in the data load and will only load the data with the valid dimensions members.

<continue-on-error>true</continue-on-error>

Use Case 2 :
This will continue the data load even if there are any missing leaf dimension members or invalid numbers found in the data load. Then it adds missing leaf dimension members to the corresponding dimensions and loads the data.

<continue-on-error>true</continue-on-error>
        
<add-missing-dimension-members>true</add-missing-dimension-members>

Use Case 3:

This will continue the data load even if there are any missing leaf dimension members or invalid numbers found in the data load. Then it will add missing leaf dimensions members to Dimension1Name and Dimension2Name and will load the data.

Note:
<missing-dimension-members> ... </missing-dimension-members>

This section is optional. If this item is not included, the missing leaf dimension members will be added to DLR_DimensionName, if it exists. Otherwise DLR_DimensionName is created and the additional leaf dimension members are placed there. This occurs in each corresponding dimension with new members.

Clear Data (External Source Models) 

The Clear Data API clears existing data from an External Source Model based on the scope of the definition. When clearing data from an external source model, you can opt to clear specific data versus the entire model. To clear specific data, use filters. To clear all model data, use the API without filters. For example, you might opt to clear data for a specific period, a department, or a company.

 This API works with both the legacy External Source Model functionality and the newest implementation of ESM.

Note:
This API cannot be used to clear data from the HACPM_Financial model, even though it is of type Source.

The request is idempotent. Clear Data API will return success even if all data has been cleared in earlier call.

POST /modeling/sourcemodel/data/clear HTTP/1.1
Content-Type: application/xml
Accept: application/xml
X-ACCESS-TOKEN:
 
<clear-data-payload>
<model-name>$SourceModelName</model-name>
</clear-data-payload>
 
The syntax below provides example syntax to clear data for two fields (each of which have 3 values) from an external source model.
<clear-data-payload>
<model-name>$SourceModelName</model-name>
<filters>
<filter>
<field></field>
<field-value></field-value>
<field-value></field-value>
<field-value></field-value>
</filter>
<filter>
<field></field>
<field-value></field-value>
<field-value></field-value>
<field-value></field-value>
</filter>
</filters>
</clear-data-payload>

Parameters

$SourceModelName: (type: string) Name of the model in which data will be cleared

Sample Payload 1

<?xml version="1.0" encoding="UTF-8"?>
<clear-data-payload>
<model-name>My Model</model-name>
</clear-data-payload>

Sample Payload 2

The sample payload syntax below provides an example to clear data for month 1, 2, and 3 (Periods 1, 2, and 3) for the Sales and Marketing departments.

<?xml version="1.0" encoding="UTF-8"?>
<clear-data-payload>
<model-name>My external model</model-name>
<filters>
<filter>
<field>Department</field>
<field-value>Sales</field-value>
<field-value>Marketing</field-value>
</filter>
<filter>
<field>Period</field>
<field-value>Period1</field-value>
<field-value>Period2</field-value>
<field-value>Period3</field-value>
</filter>
</filters>
<notify-on-failure>
<email>john.doe@mycompany.com</email>
</notify-on-failure>
</clear-data-payload>

Response

Success Response

HTTP/1.1 200/204 OK

Error Responses

Service Not Available (possibly due to maintenance)

HTTP/1.1 503 Service Unavailable

One or more HTTP headers were missing

HTTP/1.1 412 Precondition Failed

Unauthorized Access (access key lookup failed)

HTTP/1.1 401 Unauthorized

Invalid XML (bad request)

HTTP/1.1 400 Bad Request

Not Found (source model not found)

HTTP/1.1 404 Not Found

See also Clear Data (Master and Analytic Models).

Clear Dimension Members (Metadata) (External Source Models)

Use this API to clear metadata from an external Data Source model. This API can be invoked to clear specific dimensions or all dimensions of an external Data Source model. The ClearMetadata API results in a success even if all data has been cleared in earlier call.

POST /modeling/sourcemodel/metadata/clear HTTP/1.1
Content-Type: application/xml
Accept: application/xml
X-ACCESS-TOKEN:
 
<?xml version="1.0" encoding="UTF-8"?>
<clear-metadata-payload>
<model-name>$ModelName</model-name>
<dimension-name>$DimensionName</dimension-name>
</clear-metadata-payload>

Parameters

  1. $ModelName: (type: string) Name of the model

  2. $DimensionName: (type: string) Name of the dimension

Sample Payload

<?xml version="1.0" encoding="UTF-8"?>
<clear-metadata-payload>
<model-name>My Model</model-name>
<dimension-name>Time</dimension-name>
</clear-metadata-payload>

Response

Success Response

HTTP/1.1 200/204 OK

Error Responses

Service Not Available (possibly due to maintenance)

HTTP/1.1 503 Service Unavailable

One or more HTTP headers were missing

HTTP/1.1 412 Precondition Failed

Unauthorized Access (access key lookup failed)

HTTP/1.1 401 Unauthorized

Invalid XML (bad request)

HTTP/1.1 400 Bad Request

Not Found (source model not found)

HTTP/1.1 404 Not Found

Export Leaf-Level Data (Scoped) (External Source Models) ModelingImagesEDSMESM2Icon11.png

This API allows you to export leaf-level data from a specified external source model in XML format. Optionally, you can specify one or more filters to export specific data and you can specify which fields to export.

ModelingImagesEDSMESM2Icon12.pngThis API works with both the legacy External Source Model functionality and the newest implementation of ESM.

POST /modeling/sourcemodel/data/export HTTP/1.1
Content-Type: application/xml
Accept: application/xml
X-ACCESS-TOKEN: UUID

Request Payload

<?xml version="1.0" encoding="UTF-8"?>      
<export-data-payload>
<model-name>$ModelName</model-name>
<delimiter>$Delimiter</delimiter>
<filters>
<filter>
<field>$FilterField</field>
<field-value>filter field value</field-value>
</filter>
</filters>
<fields>
<field>$FieldtoExport</field>
</fields>
</export-data-payload>

Parameters

  1. $ModelName: (type: string) Name of the external source model. Mandatory.

  2. $Delimiter: (type: string) Delimiter string. Mandatory.

  3. $FilterField: (type: string) Name of the field to use in filtering which data is exported. Specify one or more rows of field values as the filters. Optional.

  4. $FieldtoExport: (type: string) Name of the field to include in the exported XML file. Add additional rows for additional fields. If you do not include this section, then all the columns will be selected. Optional.

Sample Payload

The following example exports data from the external source model salestxn and uses a comma delimiter between fields in the exported XML file. Only records with the value "Kitchen" or "Apparel" in the "cat" (category) field are exported. The exported XML file contains four fields from the external source model.

<export-data-payload>
<model-name>salestxn</model-name>
<delimiter>,</delimiter>
<filters>
<filter>
<field>cat</field>
<field-value>Kitchen</field-value>
<field-value>Apparel</field-value>
</filter>
</filters>
<fields>
<field>txndate</field>
<field>item</field>
<field>price</field>
<field>total</field>
</fields>
</export-data-payload>

Response

<?xml version="1.0" encoding="UTF-8"?>
<export-data-payload>
<model-name>salestxn</model-name>
<delimiter>,</delimiter>
<filters>
<filter>
<field>cat</field>
<field-value>Kitchen</field-value>
<field-value>Apparel</field-value>
</filter>
</filters>
<fields>
<field>txndate</field>
<field>item</field>
<field>price</field>
<field>total</field>
</fields>
<records>
<record>2018/11/01,K0001,10.0,10.0</record>
<record>2018/11/01,K0001,10.0,10.0</record>
<record>2018/11/01,K0001,10.0,10.0</record>
<record>2018/11/01,K0001,10.0,10.0</record>
<record>2018/11/01,K0001,10.0,10.0</record>
<record>2018/11/01,K0001,10.0,10.0</record>
<record>2018/11/01,K0001,10.0,10.0</record>
<record>2018/11/01,K0001,10.0,10.0</record>
<record>2018/11/01,K0001,10.0,10.0</record>
<record>2018/11/01,K0001,10.0,10.0</record>
<record>2018/11/01,A0001,10.0,20.0</record>
<record>2018/11/01,A0001,10.0,20.0</record>
<record>2018/11/01,A0001,10.0,20.0</record>
<record>2018/11/01,A0001,10.0,20.0</record>
<record>2018/11/01,A0001,10.0,20.0</record>
<record>2018/11/01,A0001,15.0,15.0</record>
<record>2018/11/01,A0001,15.0,15.0</record>
<record>2018/11/01,A0001,15.0,15.0</record>
<record>2018/11/01,A0001,15.0,15.0</record>
<record>2018/11/01,A0001,15.0,15.0</record>
</records>
</export-data-payload>

Success Response

HTTP/1.1 200 OK

Error Responses

Service Not Available (possibly due to maintenance)

HTTP/1.1 503 Service Unavailable

One or more HTTP headers were missing

HTTP/1.1 412 Precondition Failed

Model not found or invalid field.

HTTP/1.1 401 Unauthorized

Unauthorized Access (access key lookup failed)

HTTP/1.1 401 Unauthorized

Invalid XML (bad request)

HTTP/1.1 400 Bad Request

Load Data (External Source Models) ModelingImagesEDSMESM2Icon13.png

Use this API to import data into an external Data Source model.

ModelingImagesEDSMESM2Icon14.pngThis API works with both the legacy External Source Model functionality and the newest implementation of ESM.

Note:
Currently, this API cannot be used to import Planful Source Model data.

Incremental data loads are supported. Invoke the Clear Data API to clear all data in the model before the data import if incremental data load is not wanted. Use additional parameters to have a success and / or failure notification emailed to you.

POST /modeling/sourcemodel/data/load HTTP/1.1
Content-Type: application/xml
Accept: application/xml
X-ACCESS-TOKEN:
 
<?xml version="1.0" encoding="UTF-8"?>
<load-data-payload>
<model-name>$ModelName</model-name>
<delimiter>$Delimiter</delimiter>
<column-headers>
<entry>
<key>$ColumnNumber</key>
<value>$ColumnHeader</value>
</entry>
	...
</column-headers>
<notify-on-success>
<email>email1@domain</email>
<email>email2@domain</email>
</notify-on-success>
<notify-on-failure>
<email>email1@domain</email>
<email>email2@domain</email>
</notify-on-failure>
<data-records>
<data-record>$Data</data>
</data-records>
</load-data-payload>

Parameters

  1. $ModelName: Name of the model

  2. $Delimiter: Data delimiter

  3. $ColumnNumber: Column number that represents dimension/member on column

  4. $ColumnHeader: Data source column header

  5. $Data: data separated by delimiter

Sample Payload

<?xml version="1.0" encoding="UTF-8"?>
<load-data-payload>
<model-name>My Model</model-name>
<delimiter>@@</delimiter>
<column-headers>
<entry>
<key>1</key>
<value>LogLevel</value>
</entry>
<entry>
<key>2</key>
<value>Component</value>
</entry>
<entry>
<key>3</key>
<value>Hours</value>
</entry>
<entry>
<key>4</key>
<value>Minutes</value>
</entry>
<entry>
<key>5</key>
<value>Seconds</value>
</entry>
</column-headers>
<data-records>
<data-record>1@@CalcScripts@@02@@44@@31</data-record>
<data-record>2@@OLAP@@05@@29@@47</data-record>
</data-records>
</load-data-payload>

Additional Information about Data Load Notifications

You can optionally include two more sections for success and failure email notifications.

Notify on Success

<notify-on-success>
<email>email1@domain</email>
<email>email2@domain</email>
</notify-on-success>
Notify on Failure

<notify-on-failure>
<email>email1@domain</email>
<email>email2@domain</email>
</notify-on-failure>

Sample Payload with Notification

<load-data-payload>
<model-name>MyModel</model-name>
<delimiter>|_|</delimiter>
<aggregate-flag>true</aggregate-flag>
<page-dimensions>
<entry>
<key>Products</key>
<value>Dell</value>
</entry>
<entry>
<key>Accounts</key>
<value>IS</value>
</entry>
<entry>
<key>Scenario</key>
<value>Actual</value>
</entry>
</page-dimensions>
<column-dimensions>
<entry>
<key>1</key>
<value>Time</value>
</entry>
<entry>
<key>2</key>
<value>Measures</value>
</entry>
<entry>
<key>3</key>
<value>Measures</value>
</entry>
</column-dimensions>
<column-members>
<entry>
<key>2</key>
<value>MTD</value>
</entry>
<entry>
<key>3</key>
<value>YTD</value>
</entry>
</column-members>
<notify-on-success>
<email>mhamed@planful.com</email>
<email>ryennam@planful.com</email>
</notify-on-success>
<notify-on-failure>
<email>mhamed@planful.com</email>
<email>ryennam@planful.com</email>
</notify-on-failure>
<data-records>
<data-record>Mar|_|a</data-record>
<data-record>Jan1||a||b</data-record>
<data-record>Feb1||200||100</data-record>
<data-record>Mar||a||100</data-record>
<data-record>Mar|_|a</data-record>
</data-records>
</load-data-payload>

Load Dimension Members (Metadata) (External Source Models)

Use this API to load metadata to an external Data Source model. This API supports the import of level-based source dimension metadata. Support for the import of parent-child based source dimension metadata will be added in the future. Only a single dimension’s metadata can be imported per request.

POST /modeling/sourcemodel/metadata/load HTTP/1.1
Content-Type: application/xml
Accept-Type: application/xml
X-ACCESS-TOKEN:
 
<?xml version="1.0" encoding="UTF-8"?>
<load-metadata-payload>
<model-name>$ModelName</model-name>
<dimension-name>$DimensionName</dimension-name>
<delimiter>$Delimiter</delimiter>
<levels>$Levels</levels>
<dimension-members>
<dimension-member>$DimensionMembers</dimension-member>
</dimension-members>
</load-metadata-payload>

Parameters

  1. $ModelName: (type: string) Name of the model

  2. $DimensionName: (type: string) Name of the dimension

  3. $Delimiter: (type: string) Delimiter string used in levels and dimension member elements

  4. $Levels: (type: string) Delimiter separated levels

  5. $DimensionMembers: (type: string) Delimiter separated dimension members

  6. $Level3Member: (type: string) Name of a member at Level3 (levels can be nested up to Level10)

Sample Payload

<?xml version="1.0" encoding="UTF-8"?>
<load-metadata-payload>
<model-name>My Model</model-name>
<dimension-name>Time</dimension-name>
<delimiter>@@</delimiter>
<levels>LEVEL1@@LEVEL3@@LEVEL2</levels>
<dimension-members>
<dimension-member>Q1 2013@@Q3 2013@@Q2 2013</dimension-member>
</dimension-members>
</load-metadata-payload>

Response

Success Response

HTTP/1.1 200/204 OK

Error Responses

Service Not Available (possibly due to maintenance)

HTTP/1.1 503 Service Unavailable

One or more HTTP headers were missing

HTTP/1.1 412 Precondition Failed

Unauthorized Access (access key lookup failed)

HTTP/1.1 401 Unauthorized

Invalid XML (bad request)

HTTP/1.1 400 Bad Request

Not Found (source model not found)

HTTP/1.1 404 Not Found

Resource Exists (metadata dimension exists)

HTTP/1.1 409 Conflict

Create Users and Groups (User Management)

These APIs are provided in JSON format. They add users and user group mappings, and delete users.

This API creates users and groups. Returns nothing or error message.

POST /api/ui/user/saveUsersRaw
Content-Type: application/json
Accept: application/json
X-ACCESS-TOKEN: <Token>

Groups sent must be the final mapping because the previous mapping will be erased. If no groups are sent, the user will not be able to login to the tenant.

Unmapped groups will not be deleted.

Inactive users should be deleted before adding new users to avoid license limitations.

Required Fields (email, name, groups, role, password, userType):

  • Email: Must be a valid email format. Cannot be empty.

  • Name: Can be empty.

  • Groups: List of Group Objects {“name”:”group”}. Can be an empty list.

  • Role: "Admin" or "Power User", "Designer" or "Contributor User", or "Reviewer" or "Reviewer User". Cannot be empty.

  • Password: Must contain at least 1 uppercase, 1 lowercase, 1 number, and 1 special character. Minimum length 8 characters. Cannot be empty. Passwords will be set only for new users on the environment (users are global). If the user is already present on environment but not on the tenant, the password will not be reset/overridden.

  • userType: "External", "Business". Cannot be empty. User Types will define which users are internal to your business and which are external.

    • The Business user type is for all users within your organization that use Dynamic Planning, and have access only to your organization's tenant or tenant group.

    • The External user type is for users outside of your organization who need to access your application for diagnostics, development, or debugging work, such as Planful Support or Partner Consultants. External users have access to yours and other organizations' tenants.

Note:
Only External users can create other External users. If you are using the API to add a new External user, the person running the API must be logged in as an External user. However, if you are a Business user, you can add an External user to your application if the External user name already exists. For example, External Partner A has worked with Business Customer P before, and External Partner A has an External username. When Business Customer X starts working with External Partner A, they can add External Partner A to their application because External Partner A already has a username (usernames are global). Business Customer X cannot add a new External Partner B, though, if that is a new username to the Planful system.
Sample Payload

[
  {
"email": "testuser1@test.com",
"name": "",
"status": "Unverified",
"groups": [
  {
"name": "Group1"
  }
 ],
"role": "Admin" or "Power User",
 	"password":"Test1234!"
"userType":"External"
  },
  {
"email": "testuser2@test.com",
"name": "",
"groups": [
  {
"name": "Group1"
  },
  {
"name": "Group2"
  }
 ],
"role": "Reviewer" or "Reviewer User",
 	"password":"Test1234!"
"userType": "Business"
  }
]
Deletes users. Returns nothing or error message if user does not exist in the application (tenant).

POST /api/ui/user/deleteRaw
Content-Type: application/json
Accept: application/json
X-ACCESS-TOKEN: <Token>
Sample Payload

[
"testuser1@test.com",
"testuser2@test.com"
]

List Users and Groups (User Management)

These APIs are provided in JSON format. They return the names of users or user groups for an applcation (tenant).

Returns a list of User Objects for that application (tenant).

GET /api/ui/user/getRaw
Content-Type: application/json
Accept: application/json
X-ACCESS-TOKEN: <Token>
Sample Response in JSON

[
  {
  "email": "testuser1@test.com",
  "name": "",
  "status": "Unverified",
  "groups": [
  {
  "name": "Group1"
  }
 ],
  "role": "Admin",
  "invalidPasswordAttempts": 0,
  "lockedStatus": "UnLocked",
  "emailSubscription": "Subscribe",
  "userType": "External",
  "supportRole": "Administrator"
  },
  {
  "email": "testuser2@test.com",
  "name": "",
  "status": "Unverified",
  "groups": [
  {
  "name": "Group1"
  },
  {
  "name": "Group2"
  }
 ],
  "role": "Reviewer",
  "invalidPasswordAttempts": 0,
  "lockedStatus": "UnLocked",
  "emailSubscription": "Subscribe",
  "userType": "Business",
  "supportRole": "Administrator"
  }
]
Returns a List <String> of group names.

GET /api/ui/group/getRaw
Content-Type: application/json
Accept: application/json
X-ACCESS-TOKEN: <Token>
Sample Response in JSON

[
"Group1",
"Group2"
]

Dynamic Planning: Group Access API

The Group Access API can be used to update Group Access permission when the number of groups exceeds the UI limit of 20 groups.

POST: /api/modeling/model//groupAccess/update HTTP/1/1

Content-Type: application/json or application/xml

Accept: application/json or application/xml

X-ACCESS-TOKEN: $ACCESS_TOKEN_GUID$

Request Payload

Request payload can include only a subset of the current permissions. Permissions included into request payload will be updated; those not included will keep their current values.

Request Payload JSON

 

{
"permissions”:  [
				{"groupName": "Alpha",
				"artifactType": "Model",
				"artifactName": "Test Model",
				"modelName": "", "access": "Yes"},

				{"groupName": "Beta",
				"artifactType": "View",
				"artifactName": "Test View",
				"modelName": "Test Model",
				"access": "Yes"},

				{"groupName": "Gamma",
				"artifactType": "Report",
				"artifactName": "Test Report",
				"modelName": "", "access": "No"}
		   		]
		}

Request Payload XML Sample

<payload>
    <permissions>
        <permission>
            <group-name>Alpha</group-name>
            <artifact-type>Model</artifact-type>
            <artifact-name>Test Model</artifact-name>
            <model-name></model-name>
            <access>Yes</access>
        </permission>
        <permission>
            <group-name>Beta</group-name>
            <artifact-type>View</artifact-type>
            <artifact-name>Test View</artifact-name>
            <model-name>Test Model</model-name>
            <access>Yes</access>
        </permission>
        <permission>
            <group-name>Gamma</group-name>
            <artifact-type>Report</artifact-type>
            <artifact-name>Test Report</artifact-name>
            <model-name></model-name>
            <access>No</access>
        </permission>
    </permissions>
</payload>

Parameters

  1. $groupName (group-name) -Name of the group. Group name should be a valid name and case insensitive.

  1. $artifactType (artifact-type) –Artifact type should be one of the following:

    • Model

    • Calculation

    • View

    • Report

  1. $artifactName (artifact-name) - Name of the artifact.

  1. $modelName (model-name) -Model name must be a valid name for Calculation and View. It will be ignored for all other artifacts.

  1. Access - Access should be one of the following:

    • Yes

    • No

 Response Payload

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<payload>
	<permissions>
    	<permission>
            <group-name>Alpha</group-name>
            <artifact-type>Model</artifact-type>
            <artifact-name>Revenue</artifact-name>
     	   <model-name></model-name>
            <access>Yes</access>
    	</permission>
    	<permission>
            <group-name>Beta</group-name>
            <artifact-type>Report</artifact-type>
        	<artifact-name>Sample Model Report</artifact-name>
            <model-name>Sample_Model</model-name>
            <access>Yes</access>
    	</permission>
    	<permission>
            <group-name>Gamma</group-name>
            <artifact-type>View</artifact-type>
        	<artifact-name>template</artifact-name>
            <model-name>Revenue</model-name>
            <access>Yes</access>
    	</permission>
	</permissions>
</payload>

Was this article helpful?