REST_API_Implementation_Guide
REST_API_Implementation_Guide
Implementation Guide
9.2.0 Release
Copyright © 2025 OneStream Software LLC. All rights reserved.
All trademarks, logos, and brand names used on this website are the property of their respective
owners. This document and its contents are the exclusive property of OneStream Software LLC
and are protected under international intellectual property laws. Any reproduction, modification,
distribution or public display of this documentation, in whole or part, without written prior consent
from OneStream Software LLC is strictly prohibited.
Table of Contents
Table of Contents
Introduction 1
Version 5.2.0 2
Authentication 2
DataManagement 2
DataProvider 3
Version 7.2.0 3
Authentication 3
Application 3
DataManagement 4
DataProvider 4
Authentication 5
DataManagement 5
DataProvider 6
Authentication 8
Application API 10
Authentication 15
Okta Configuration 48
PingFederate Configuration 53
Introduction
This guide provides information about the implementation, authentication, and application
programming interfaces available to extend OneStream functionality.
OneStream Web API is a RESTful web service designed to expose OneStream Data Automation
functions when interacting with third-party API client applications.
For customers in a self-hosted environment, Web API must be installed on a web server and
configured for external authentication providers supporting OAuth2.0/OpenID Connect
authorization protocol. Identity providers currently supported are Azure AD (Microsoft Entra ID),
Okta, and PingFederate.
To maintain optimal performance and ensure security, use public and documented APIs only.
Internal APIs are not intended for public general use and may be changed or removed without
notice. Support cannot provide assistance for issues resulting from the uses of nonpublic
features.
See the Identity and Access Management Guide for information about authentication with
OneStream IdentityServer and using PATs.
OneStream Web API is API client agnostic. It accepts and outputs data in JSON format making it
possible for every API client application that supports this format to also interact with the service.
Version 5.2.0
In version 5.2.0 of OneStream REST API, all the API calls are synchronous. The responses do not
come back until all the data has been processed on the OneStream server. It is not recommended
to use this version for large datasets because timeouts may occur before the response comes
through. For large datasets, it is recommended to use the asynchronous API endpoints
introduced in version 7.2.0.
Authentication
Typically, this API is used only to verify that the REST API is configured correctly and the token
used to authenticate is valid. In this version, after the configuration and token have been validated
for authentication, it is not necessary to call this API for other APIs to function as long as a proper
authentication token is provided on those API calls.
DataManagement
This API is used to run sequences and steps on the OneStream servers. This can be used to run
consolidations, business rules, or any other types of sequences and steps configured in
OneStream. The API calls in this version do not respond with a success or failure status until after
the task has completed in OneStream, which can take a long time in some cases.
DataProvider
This API is used to return data from within OneStream to a third-party application or script. It can
be used to return data from a OneStream-configured data adapter, Cube View, SQL query, or
method command. If the API call is successful, the data is returned in JSON format within the
response body. If the dataset is large, it may take a long time for the response to come back.
Version 7.2.0
In version 7.2.0 of OneStream REST API, the API calls are both synchronous and asynchronous.
The asynchronous calls are recommended for large datasets or when an immediate response is
needed.
Authentication
This API contains only the Logon API call, which is necessary to return the SessionInfo (SI) object
for use within any other API calls in this version.
Application
This API contains only the OpenApplication API call and returns a SessionInfo object for a specific
application. This is necessary when making any other API call that requires an open application,
which is almost always the case. It requires the SessionInfo token from the Logon API call as a
parameter within the body of the request.
DataManagement
This API is used to run sequences and steps on the OneStream servers. This can be used to run
consolidations, business rules, or any other types of sequences and steps configured in
OneStream.
In this version of the DataManagement API, the ExecuteSequence and ExecuteStep API calls
have been consolidated into a single endpoint where a parameter specifies whether it is calling a
sequence or a step. It also contains an asynchronous endpoint where the response is issued
immediately instead of waiting for the sequence or step to complete. This can be helpful if the step
or sequence typically takes a long time to run. There is also an API call to check the status of the
step or sequence that was initiated. This can be used in a client-side polling and sleep loop to wait
for the task to be completed. All calls within this API run against a specific application and
therefore require a SessionInfo object from OpenApplication.
DataProvider
The API calls in this section are used to return data from within OneStream to a third-party
application or script. In this version, it can only be used to return data from a OneStream-
configured data adapter. However, the data adapter itself can receive data from a variety of
different types of sources. There is also both a synchronous and asynchronous version of the API
call. Developers can decide whether they want the call to block and wait until the data is
processed and delivered or they want to use client-side polling and sleep loop to wait for the data
to be available, which requires that XFCallState is enabled in the configuration. The latter option
may be preferable when expecting large sets of data or when there are a lot of calculations
involved, which may slow down delivery to a point where a timeout may occur.
Authentication
Authentication endpoint. Represents a RESTful service for Authentication.
l POST api/Authentication/LogonAndReturnCookie
DataManagement
DataManagement endpoint. Represents a RESTful service of Data Management.
l POST api/DataManagement/ExecuteSequence:
Executes a Data Management Sequence and returns a success/failure message along with
a proper HTTP code.
l POST api/DataManagement/ExecuteStep
Executes a Data management Step and returns a success/failure message along with a
proper HTTP code.
DataProvider
DataProvider endpoint represents a RESTful service of Data Provider.
l POST api/DataProvider/GetAdoDataSetForAdapter:
Executes a Data Provider HTTP Post request and returns a JSON representation of a
DataSet for a given Dashboard Adapter.
l POST api/DataProvider/GetAdoDataSetForCubeViewCommand
Executes a Data Provider HTTP Post request and returns a JSON representation of a
DataSet for a given Cube View.
l POST api/DataProvider/GetAdoDataSetForSqlCommand
Executes a Data Provider HTTP Post request and returns a JSON representation of a
DataSet for a given Sql query. Administrator role is required for this functionality.
l POST api/DataProvider/GetAdoDataSetForMethodCommand
Executes a Data Provider HTTP Post request and returns a JSON representation of a
DataSet for a given pre-defined list of method commands. Administrator role is required
for this functionality.
How It Works
XFCallState polling must first be enabled in the [Link] in the
EnvironmentSettings block.
Authentication
For customers in a OneStream-hosted environment, see the Identity and Access Management
Guide for information about authentication with OneStream IdentityServer and using personal
access tokens (PATs).
To secure REST API with OAuth 2.0 for customers in a self-hosted environment, configure
authentication with one of these supported external providers:
l Okta Configuration
l PingFederate Configuration
Access tokens from the any of the above providers have short expiration times. To avoid copying
the entire token value to the Authorization/Token text box, create a variable that holds the value.
For every call to the external provider, the value of the access token returned will be copied to the
variable.
l In the Tests tab of the POST request to the external provider copy the script below:
Authentication API
Method Endpoint Description
Authentication/Logon
POST [Link]
Query Parameters
Authorization
Headers
Request Body
Sample Request
{
"BaseWebServerUrl": "https:// [Link]/OneStreamWeb"
}
Sample Response
{
"Message": "Logon succeeded.",
"Logon SessionInfo": {
"XfBytes": " QB8AACNodHRwOi8vbG9jYWxob3N0OjUwMDAxL09uZVN0cm
VhbVdlYhQAAAB7izp1jCP3BUVr8bjD2f6KmmL5BKzhOVWUzU1MikEYOVekO
ZUIT0tUQV9NMk27tnn6+VZaR544CKlYPCFeWSBWCTmQ2ggAAAAAAAAAAAAA
AAAAAAAAAAAAAAAFZW4tVVMAAAAAAAAAAAAAAAAAAAAAAAAAAP/////////
/////////////////8P//////////////AwAAABn8//8Z/P//Gfz//xn8//
8Z/P//Gfz//xn8//8Z/P//Gfz//xn8//8Z/P//Gfz//w==""
},
"Authorized applications": [
"GolfStreamDemo_2022",
"OFC_ECA_ProductMgmt",
"OneStream_GolfStream"
]
}
Application API
Method Endpoint Description
Application/OpenApplication
POST [Link]
version=7.2.0
Query Parameters
Authorization
Headers
Request Body
Sample Request
{
"ApplicationName": "GolfStreamDemo_2022",
"SI": {
"XfBytes": "QB8AACNodHRwOi8vbG9jYWxob3N0OjUwMDAxL09uZVN0cmVhb
VdlYhQAAAB7izp1jCP3BUVr8bjD2f6KmmL5BKzhOVWUzU1MikEYOVekOZUIT0
tUQV9NMk27tnn6+VZaR544CKlYPCFeWSBWCTmQ2ggAAAAAAAAAAAAAAAAAAAA
AAAAAAAAFZW4tVVMAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////
////////8P//////////////AwAAABn8//8Z/P//Gfz//xn8//8Z/P//Gfz//
xn8//8Z/P//Gfz//xn8//8Z/P//Gfz//w=="
}
}
Sample Response
{
"Message": "Open application succeeded.",
"Application SessionInfo": {
"XfBytes": "QB8AACNodHRwOi8vbG9jYWxob3N0OjUwMDAxL09uZVN0
cmVhbVdlYhQAAAAep0GewgsakcN4GJDmuwyaaIMazfN/aHyhnXNLgg+h
Uxy6cpQIT0tUQV9NMk27tnn6+VZaR544CKlYPCFe0BusL1iM2ggUAAAA
rL9Q04ePExHJxVU89Y1MAeNxrh8UT25lU3RyZWFtX0dvbGZTdHJlYW3x
ShfEXWxvRbOx2hWDSCd0BWVuLVVTAAAAAAAAAAAAAAAAAAAAAAAAAAD/
/////////wAAAAACAFABAABQAfD///8AAAAAYHzddwMAAABCAfAAGfz/
/5z///+c////FQAQACYAIAARAGAAAwCQABn8//8Z/P//Gfz//xn8//8="
}
}
DataProvider/GetAdoDataSetForAdapter
POST https://
{BaseWebServer}/Onestreamapi/api/DataProvider/GetAdoDataSetForAdapter?api-
version=7.2.0
Query Parameters
Authorization
Headers
Request Body
[VariableValue1],VariableName2=
[VariableValue2],...".
Sample Request
{
"IsSystemLevel": true,
"AdapterName": "Sales Mix (WF)",
"ResultDataTableName": "ResultsTable",
"CustomSubstVarsAsCommaSeparatedPairs": "",
"SI": {
"XfBytes": " QB8AACNodHRwOi8vbG9jYWxob3N0OjUwMDAxL09uZVN0cm
VhbVdlYhQAAAAep0GewgsakcN4GJDmuwyaaIMazfN/aHyhnXNLgg+hUxy6c
pQIT0tUQV9NMk27tnn6+VZaR544CKlYPCFe0BusL1iM2ggUAAAArL9Q04eP
ExHJxVU89Y1MAeNxrh8UT25lU3RyZWFtX0dvbGZTdHJlYW3xShfEXWxvRbO
x2hWDSCd0BWVuLVVTAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////wAAAA
ACAFABAABQAfD///8AAAAAYHzddwMAAABCAfAAGfz//5z///+c////FQAQA
CYAIAARAGAAAwCQABn8//8Z/P//Gfz//xn8//8="
}
}
Sample Response
{
"ResultsTable": [
{
"RowId": 0,
"RowName": "Row1",
"PovCubeNameAndDesc": "GolfStream - Corporate",
"Pov00EntityNameAndDesc": "Total GolfStream",
"Pov02ScenarioNameAndDesc": "Actual - Actual",
"Pov03TimeNameAndDesc": "2011M2 - Feb 2011",
"Pov04ViewNameAndDesc": "YTD",
"RowHdr0NameAndDesc": "Drivers",
"RowHdr0Indent": 0,
"Col0Hdr0NameAndDesc": "60000 - Operating Sales",
"Col0Hdr0Indent": 0,
"Col0Value": 25552270.482000000000000000,
"Col0ValueAsText": "25,552,270.48"
},
}
"RowId": 1,
"RowName": "Row1",
"PovCubeNameAndDesc": "GolfStream - Corporate",
"Pov00EntityNameAndDesc": "Total GolfStream",
"Pov02ScenarioNameAndDesc": "Actual - Actual",
"Pov03TimeNameAndDesc": "2011M2 - Feb 2011",
"Pov04ViewNameAndDesc": "YTD",
"RowHdr0NameAndDesc": "Fairway Woods",
"RowHdr0Indent": 0,
"Col0Hdr0NameAndDesc": "60000 - Operating Sales",
"Col0Hdr0Indent": 0,
"Col0Value": 17476089.966000000000000000,
"Col0ValueAsText": "17,476,089.97"
}
]
}
l Authentication
Authentication
For customers in a OneStream-hosted environment, see the Identity and Access Management
Guide for information about authentication with OneStream IdentityServer and using personal
access tokens (PATs).
To secure REST API with OAuth 2.0 for customers in a self-hosted environment, configure
authentication with one of these supported external providers:
l Okta Configuration
l PingFederate Configuration
Access tokens from the any of the above providers have short expiration times. To avoid copying
the entire token value to the Authorization/Token text box, create a variable that holds the value.
For every call to the external provider, the value of the access token returned will be copied to the
variable.
l In the Tests tab of the POST request to the external provider copy the script below:
Authentication API
Method Endpoint Description
Authentication/Logon
POST [Link]
Query Parameters
Authorization
Headers
Request Body
Sample Request
{
"BaseWebServerUrl": "https:// [Link]/OneStreamWeb"
}
Sample Response
{
"Message": "Logon succeeded.",
"Logon SessionInfo": {
"XfBytes": " QB8AACNodHRwOi8vbG9jYWxob3N0OjUwMDAxL09uZVN0cm
VhbVdlYhQAAAB7izp1jCP3BUVr8bjD2f6KmmL5BKzhOVWUzU1MikEYOVekO
ZUIT0tUQV9NMk27tnn6+VZaR544CKlYPCFeWSBWCTmQ2ggAAAAAAAAAAAAA
AAAAAAAAAAAAAAAFZW4tVVMAAAAAAAAAAAAAAAAAAAAAAAAAAP/////////
/////////////////8P//////////////AwAAABn8//8Z/P//Gfz//xn8//
8Z/P//Gfz//xn8//8Z/P//Gfz//xn8//8Z/P//Gfz//w==""
},
"Authorized applications": [
"GolfStreamDemo_2022",
"OFC_ECA_ProductMgmt",
"OneStream_GolfStream"
]
}
2. Url= http(s)://[servername]:
[port]/onestreamapi/api/DataManagement/ExecuteSequence?api-version=5.2.0
4. Headers: Content-Type=application/json
{
"BaseWebServerUrl": [OneStream Server Logon URL],
6. Click Send and observe the response at the bottom pane. If successful, a message of "Data
Management Sequence [sequence name] was completed" will be returned otherwise a
descriptive error message will show. More details will be logged in the Error and Activity
logs.
2. Url= http(s)://[servername]:[port]/onestreamapi/api/DataManagement/ExecuteStep?api-
version=5.2.0
4. Headers: Content-Type=application/json
{
"BaseWebServerUrl": [OneStream Server Logon URL],
"ApplicationName":[your application name],
"DataManagementGroupName": [an existing data management group name],
"StepName": [existing step name],
"CustomSubstVarsAsCommaSeparatedPairs": [comma separated list of key value pairs as
substitution variables with the
following format: "VariableName1=[VariableValue1],VariableName2=[VariableValue2],..."] -
Optional
}
6. Click Send and observe the response at the bottom pane. If successful, a message of "Data
Management Step [step name] was completed" will be returned otherwise a descriptive
error message will show. More details will be logged in the Error and Activity logs.
2. Url= http(s)://[servername]:
[port]/onestreamapi/api/DataProvider/GetAdoDataSetForAdapter?api-version=5.2.0
4. Headers: Content-Type=application/json
{
"BaseWebServerUrl": [OneStream Server Logon URL],
"ApplicationName":[your application name],
"WorkspaceName": Reserved for future use. Use an empty string. - Optional,
"AdapterName": [existing adapter name],
Example:
"BaseWebServerUrl": "[Link]
"ApplicationName": "GolfStream_v37",
"IsSystemLevel": "False",
"AdapterName": "ActivityClassListing_PLP",
"ResultDataTableName": "ResultsTable",
"CustomSubstVarsAsCommaSeparatedPairs": ""
6. Click Send and observe the response at the bottom pane. If successful, a JSON data table
will be returned otherwise a descriptive error message will show. More details will be logged
in the Error and Activity logs.
This is a returned response from the request using the above body example in Postman:
"ResultsTable": [
"ClassID": "100_Salary",
"ValueType": 0,
"ClassItemID": "79b612b9-8cb4-49ca-9a0d-d13c7683a7f2",
"WeightOrValue": "1",
"FKAccountID": "Salary_Exp",
"Flow": "None",
"IC": "None",
"UD1": "None",
"UD2": "None",
"UD3": "None",
"UD4": "None",
"UD5": "None",
"UD6": "None",
"UD7": "None",
"UD8": "None",
"Sequence": 10.0,
"FKClassID": "100_Salary"
},
]}}
Data ProviderGetAdoDataSetForCubeViewCommand
endpoint
1. Create new POST request in Postman,
2. Url= http(s)://[servername]:[port]/onestreamapi/api/DataProvider/
GetAdoDataSetForCubeViewCommand?api-version=5.2.0
4. Headers: Content-Type=application/json
{
"BaseWebServerUrl": [OneStream Server Logon URL],
"ApplicationName":[your application name],
"CubeViewName": [existing Cube View name],
"DataTablePerCubeViewRow ": [if true returns a Data Table Per Cube View row - bool],
Example:
"BaseWebServerUrl": "[Link]
"ApplicationName": "GolfStream_v37",
"DataTablePerCubeViewRow": false,
"ResultDataTableName": "ResultDataTableNames",
"CustomSubstVarsAsCommaSeparatedPairs": "",
"CubeViewDataTableOptions": {
"IncludeTitle": false,
"IncludeHeaderLeftLabel1" : true,
"IncludeHeaderLeftLabel2" : true,
"IncludeHeaderLeftLabel3" : true,
"IncludeHeaderLeftLabel4" : true,
"IncludeHeaderCenterLabel1" : true,
"IncludeHeaderCenterLabel2" : true,
"IncludeHeaderCenterLabel3" : true,
"IncludeHeaderCenterLabel4" : true,
"IncludeHeaderRightLabel1" : true,
"IncludeHeaderRightLabel2" : true,
"IncludeHeaderRightLabel3" : true,
"IncludeHeaderRightLabel4" : true,
"IncludePovCube" : true,
"IncludePovEntity" : true,
"IncludePovParent" : true,
"IncludePovCons" : true,
"IncludePovScenario" : true,
"IncludePovTime" : true,
"IncludePovView" : true,
"IncludePovAccount" : true,
"IncludePovFlow" : true,
"IncludePovOrigin" : true,
"IncludePovIC" : true,
"IncludePovUD1" : true,
"IncludePovUD2" : true,
"IncludePovUD3" : false,
"IncludePovUD4" : true,
"IncludePovUD5" : false,
"IncludePovUD6" : true,
"IncludePovUD7" : false,
"IncludePovUD8" : true,
"IncludeMemberDetails": true,
"IncludeRowNavigationLink" : true,
"IncludeHasDataStatus" : true,
"IncludeAnnotation" : true,
"IncludeAssumptions" : true,
"IncludeAuditComment" : true,
"IncludeFootnote" : true,
"IncludeVarianceExplanation" : true
6. Click Send and observe the response at the bottom pane. If successful, a JSON data table
will be returned otherwise a descriptive error message will show. More details will be logged
in the Error and Activity logs.
This is a returned response from the request using the above body example in Postman:
"ResultDataTableNames": [
"RowId": 0,
"RowName": "Row1",
"HeaderLeftLabel1": "",
"HeaderLeftLabel2": "",
"HeaderLeftLabel3": "",
"HeaderLeftLabel4": "",
"HeaderCenterLabel1": "",
"HeaderCenterLabel2": "",
"HeaderCenterLabel3": "",
"HeaderCenterLabel4": "",
"HeaderRightLabel1": "",
"HeaderRightLabel2": "",
"HeaderRightLabel3": "",
"HeaderRightLabel4": "",
"PovCubeId": 5,
"Col8VarianceExplanation": ""
},
] } }
2. Url= http(s)://[servername]:[port]/onestreamapi/api/DataProvider/
GetAdoDataSetForSqlCommand?api-version=5.2.0
4. Headers: Content-Type=application/json
{
"BaseWebServerUrl": [OneStream Server Logon URL],
"ApplicationName":[your application name],
"SqlQuery ": [sql query statement used to return data],
"DbLocation": [specify if data from an external database referenced in the configuration
will need to be returned - string - defaults to "Application" - Optional],
Example:
"BaseWebServerUrl": "[Link]
"ApplicationName": "GolfStream_v37",
"ResultDataTableName": "ResultDataTableName",
"DBLocation": "Application",
"XFExternalConnectionName": "",
"CustomSubstVarsAsCommaSeparatedPairs": ""
6. Click Send and observe the response at the bottom pane. If successful, a JSON data table
will be returned otherwise a descriptive error message will show. More details will be logged
in the Error and Activity logs.
This is a returned response from the request using the above body example in Postman:
"ResultDataTableName": [
"CubeId": 0,
"Name": "Houston",
"CubeType": 0,
"IsTopLevelCube": false,
"TimeDimProfileID": "664c9bd4-a314-4941-81be-513aeddac13a",
"AccessGroupUniqueID": "e31054d8-83bf-4f79-b563-0e450342de9e",
"MaintenanceGroupUniqueID": "e31054d8-83bf-4f79-b563-0e450342de9e",
"ConsAlgorithmType": 0,
"TransAlgorithmType": 0,
"CalcNoneConsIfNoData": false,
"CalcLocalCurrIfNoData": true,
"CalcTransCurrsIfNoData": false,
"CalcOwnerPreAdjIfNoData": false,
"CalcShareIfNoData": false,
"CalcElimIfNoData": false,
"CalcOwnerPostAdjIfNoData": false,
"BR1Name": "CorporateBusinessRules",
"BR2Name": "",
"BR3Name": "",
"BR4Name": "",
"BR5Name": "",
"BR6Name": "",
"BR7Name": "",
"BR8Name": "",
"DefaultCurrencyId": 176,
"FxRateTypeIDForRevExp": "89ce1f1c-c1cb-438e-9825-e00861a4fa5b",
"FxRuleTypeIdForRevExp": 1,
"FxRateTypeIDForAssetLiab": "89ce1f1c-c1cb-438e-9825-e00861a4fa5b",
"FxRuleTypeIdForAssetLiab": 0,
"XmlData": ""
},
...
] } }
2. Url= http(s)://[servername]:[port]/onestreamapi/api/DataProvider/
GetAdoDataSetForMethodCommand?api-version=5.2.0
4. Headers: Content-Type=application/json
{
"BaseWebServerUrl": [OneStream Server Logon URL],
"ApplicationName":[your application name],
Example:
"BaseWebServerUrl": "[Link]
"ApplicationName": "GolfStream_v37",
"ResultDataTableName": "MyResultsTable",
"CustomSubstVarsAsCommaSeparatedPairs": ""
"WorkflowCalculationEntities"
"WorkflowConfirmationEntities"
"WorkflowProfileAndDependentProfileEntities"
"WorkflowProfileEntities"
"WorkflowProfiles"
"WorkflowProfileRelatives"
"WorkflowStatus"
"WorkflowStatusTwelvePeriod"
"WorkflowAndEntityStatus
"JournalsForWorkflowUnit"
"FormsStatusForWorkflowUnit"
"ConfirmationForWorkflowUnit"
"CertificationForWorkflowUnit"
"ICMatchingForWorkflowUnit"
"ICMatchingForWorkflowUnitMultiPlug"
"ICMatchingForWorkflowUnitMultiPeriod"
"ICMatchingPlugAccountsForWorkflowUnit"
6. Click Send and observe the response at the bottom pane. If successful, a JSON data table
will be returned otherwise a descriptive error message will show. More details will be logged
in the Error and Activity logs.
This is a returned response from the request using the above body example in Postman:
"MyResultsTable": [
"ProfileName": "Houston",
"ProfileKey": "2f3a719e-8e26-4d8c-8cc7-4544a4812673",
"ProfileOrder": 1,
"ScenarioName": "Actual",
"ScenarioKey": 0,
"TimeKey": 2018003000,
"TimeName": "2018M1",
"CertProfileKey": "003e0a15-6c9a-412c-90ba-64d31040c314",
"CertSignOffState": "Inprocess",
"CertIsCertified": false,
"CertCanCertify": false,
"CertIsParentCertified": false,
"CertAreDependantsCertified": false,
"CertAllAnswered": false,
"CertQuestionCount": 3,
"CertUnansweredCount": 3,
"CertUnansweredRate": 1.0,
"GroupKey": "7c7fedcd-f04a-4f5b-ba13-ed1097f449a9",
"GroupSignOffState": "Inprocess",
"GroupAllAnswered": false,
"GroupQuestionCount": 3,
"GroupUnansweredCount": 3,
"GroupUnansweredRate": 1.0,
"QuestionUniqueID": "8a92f59c-2419-49d2-87b7-1cdfb21c7072",
"QuestionCategory": "InternalAudit",
"QuestionRiskLevel": "High",
"QuestionFrequency": "AllTimePeriods",
"TimeFilterForReqtFreq": "",
"QuestionResponse": "-1",
"QuestionComments": "",
"QuestionResponseOptional": false,
"QuestionDeactivated": false,
"QuestionDeactivationDate": "1900-01-01T00:00:00",
"QuestionDisplayOrder": 10
},
"ProfileName": "Houston",
"ProfileKey": "2f3a719e-8e26-4d8c-8cc7-4544a4812673",
"ProfileOrder": 1,
"ScenarioName": "Actual",
"ScenarioKey": 0,
"TimeKey": 2018003000,
"TimeName": "2018M1",
"CertProfileKey": "003e0a15-6c9a-412c-90ba-64d31040c314",
"CertSignOffState": "Inprocess",
"CertIsCertified": false,
"CertCanCertify": false,
"CertIsParentCertified": false,
"CertAreDependantsCertified": false,
"CertAllAnswered": false,
"CertQuestionCount": 3,
"CertUnansweredCount": 3,
"CertUnansweredRate": 1.0,
"GroupKey": "7c7fedcd-f04a-4f5b-ba13-ed1097f449a9",
"GroupSignOffState": "Inprocess",
"GroupAllAnswered": false,
"GroupQuestionCount": 3,
"GroupUnansweredCount": 3,
"GroupUnansweredRate": 1.0,
"QuestionUniqueID": "78e102c2-cda5-4c07-b853-416d83de5706",
"QuestionCategory": "ExternalAudit",
"QuestionRiskLevel": "High",
"QuestionFrequency": "AllTimePeriods",
"TimeFilterForReqtFreq": "",
"QuestionText":
"Any transactions to be reviewed by external audit? If so, explain. ",
"QuestionResponse": "-1",
"QuestionComments": "",
"QuestionResponseOptional": false,
"QuestionDeactivated": false,
"QuestionDeactivationDate": "1900-01-01T00:00:00",
"QuestionDisplayOrder": 20
},
"ProfileName": "Houston",
"ProfileKey": "2f3a719e-8e26-4d8c-8cc7-4544a4812673",
"ProfileOrder": 1,
"ScenarioName": "Actual",
"ScenarioKey": 0,
"TimeKey": 2018003000,
"TimeName": "2018M1",
"CertProfileKey": "003e0a15-6c9a-412c-90ba-64d31040c314",
"CertSignOffState": "Inprocess",
"CertIsCertified": false,
"CertCanCertify": false,
"CertIsParentCertified": false,
"CertAreDependantsCertified": false,
"CertAllAnswered": false,
"CertQuestionCount": 3,
"CertUnansweredCount": 3,
"CertUnansweredRate": 1.0,
"GroupKey": "7c7fedcd-f04a-4f5b-ba13-ed1097f449a9",
"GroupSignOffState": "Inprocess",
"GroupAllAnswered": false,
"GroupQuestionCount": 3,
"GroupUnansweredCount": 3,
"GroupUnansweredRate": 1.0,
"QuestionUniqueID": "3d9c4dcc-75fd-4568-b224-f7e428622917",
"QuestionCategory": "FinancialStatementReview",
"QuestionRiskLevel": "MediumLow",
"QuestionFrequency": "AllTimePeriods",
"TimeFilterForReqtFreq": "",
"QuestionResponse": "-1",
"QuestionComments": "",
"QuestionResponseOptional": false,
"QuestionDeactivated": false,
"QuestionDeactivationDate": "1900-01-01T00:00:00",
"QuestionDisplayOrder": 30
],
"MyResultsTable_SignOffCert": [
"ProfileKey": "2f3a719e-8e26-4d8c-8cc7-4544a4812673",
"ScenarioKey": 0,
"TimeKey": 2018003000,
"CertProfileKey": "003e0a15-6c9a-412c-90ba-64d31040c314",
"SignOffState": "Inprocess",
"UserKey": "2b61ed59-63ae-46f2-89aa-a8ee9f14bacd",
"UserName": "TestUserOkta",
"UserIPAddress": "8d3d857e-cd62-4fd9-a2ec-43b46217a036",
"TimeStamp": "2019-11-18T14:45:00.007"
],
"MyResultsTable_SignOffGroups": [
"ProfileKey": "2f3a719e-8e26-4d8c-8cc7-4544a4812673",
"ScenarioKey": 0,
"TimeKey": 2018003000,
"CertProfileKey": "003e0a15-6c9a-412c-90ba-64d31040c314",
"GroupKey": "7c7fedcd-f04a-4f5b-ba13-ed1097f449a9",
"SignOffState": "Inprocess",
"UserKey": "2b61ed59-63ae-46f2-89aa-a8ee9f14bacd",
"UserName": "TestUserOkta",
"UserIPAddress": "8d3d857e-cd62-4fd9-a2ec-43b46217a036",
"TimeStamp": "2019-11-18T14:45:00.2"
2. Url= http(s)://[servername]:
[port]/OneStreamApi/api/Authentication/LogonAndReturnCookie?api-version=5.2.0
4. Headers: Content-Type=application/json
Arguments:
"BaseWebServerUrl": [OneStream Server Logon URL],
"ApplicationName" : [name of Application attempted to access]
Click Send and observe the response at the bottom pane. If successful, a message that
indicates authentication state will be returned. Otherwise the error message will be shown.
More details will be logged in the Error and Activity logs.
l Okta Configuration
l PingFederate Configuration
If you use the Modern Browser Experience, you must enter a REST API key in both the
OneStream Application Server Configuration and Web Server Configuration to enter OneStream
and browser clients. See the Installation and Configuration Guide.
For customers in a OneStream-hosted environment, see the Identity and Access Management
Guide for information about authentication with OneStream IdentityServer and using personal
access tokens (PATs).
1. Configure the REST API Application Registration in Azure AD (Microsoft Entra ID).
To enable single sign-on with Azure AD (Microsoft Entra ID) for the OneStream Desktop
application, which includes the Windows Client application and the Excel Add-In, using OIDC
protocol, see the Installation and Configuration Guide.
6. On the page for the application, in the Manage list on the left, select Authentication.
7. In the Advanced settings, under Allow public client flows, set the Enable the following
mobile and desktop flows option to Yes.
11. In the Add a client secret dialog box, enter a description and select an expiration time in
the drop-down menu. Click the Add button.
12. On the Certificates & secrets page, copy the value for the client secret.
IMPORTANT: The client secret value may only be available to copy for a limited
time, so copy it immediately after it is created.
15. In the Add a scope dialog box, the application ID URI is automatically generated. Click the
Save and continue button.
3. In the Web Server Configuration Settings section, click the ellipsis to the right of Single
Sign On Identity Provider.
4. In the User Name Lookup field, type aud to include this claim in the ordered lookups.
NOTE: The claim aud indicates the intended audience for the token.
6. In the Azure Identity Provider dialog box, in the REST API Settings section, complete the
following fields :
l OneStream Web Api Client ID: Enter the application (client) ID from Azure AD. See
Configure the REST API Application Registration in Azure AD (Microsoft Entra ID)
step 16.
TIP: To view the application (client) ID in Azure AD, go to the page for the
application and select Overview in the list on the left.
l OneStream Web Api App Custom Scopes: Enter custom scopes, or leave as
default (blank).
NOTE: Reset IIS after you save any changes to the Application Server
Configuration or Web Server Configuration.
2. In the Authentication properties, complete the following fields for REST API authentication
through Azure AD.
l External Provider User Name: Enter the application (client) ID from Azure AD. See
Configure the REST API Application Registration in Azure AD (Microsoft Entra ID)
step 16.
TIP: To view the application (client) ID in Azure AD, go to the page for the
application and select Overview in the list on the left.
3. Click Save.
TIP: To view the directory (tenant) ID in Azure AD, go to the page for the
application and select Overview in the list on the left.
2. In the Authorization tab, select Basic Auth for type. In the Username and Password fields,
enter the client ID and client secret from the application registration, respectively. See
Configure the REST API Application Registration in Azure AD (Microsoft Entra ID) step 12.
TIP: To view the application (client) ID in Azure AD, go to the page for the
application and select Overview in the list on the left.
l Accept: application/json
l Authorization: Basic
l Content-Type: application/x-www-form-urlencoded
a. Option 1:
i. grant_type: client_credentials
b. Option 2:
i. grant_type: password
Okta Configuration
To configure OneStream REST API to support Okta authentication for M2M application
registration (grant_type = client_credentials), follow these steps:
To enable single sign-on with Okta for the OneStream Desktop application, which includes the
Windows Client application and the Excel Add-In, using OIDC protocol, see the Installation and
Configuration Guide.
4. In the Create a new app integration dialog box, for Sign-in method, select
API Services.
6. On the New API Services App Integration page, in the App integration name field,
enter the name of the Okta API application.
8. Copy the client ID. You will need to paste this into the Web Server Configuration in
OneStream.
4. Enter a name and, in the Audience field, enter the client ID from the Okta application. See
Configure the REST API Application Registration in Okta step 8.
5. Click the Save button. The API page displays the list of authorization servers and the
corresponding issuer URIs. You will need to paste the authorization server ID from the
issuer URI into the Web Server Configuration in OneStream.
6. To add a custom scope to support the Machine-to-Machine scenario, on the API page,
select the authorization server.
9. Enter the information and click the Create button. You will need to paste these custom
scopes into the Web Server Configuration in OneStream.
3. In the Web Server Configuration Settings section, click the ellipsis to the right of Single
Sign On Identity Provider.
5. In the Okta Identity Provider dialog box, in the General and REST API Settings sections,
complete the following fields:
l Okta Authorization Server ID: Enter the authorization server ID from the issuer
URI in Okta. See Add Authorization Servers and Scopes in Okta step 5. Alternatively,
use the default value by either typing default or leaving as default (blank).
TIP: To view the list of authorization servers and the corresponding issuer
URIs in Okta, in the Security list on the left, select API.
l Okta Web Api Client ID: Enter the client ID from the Okta application. See Configure
the REST API Application Registration in Okta step 8.
l Okta Web Api Custom Scopes: Enter custom scopes, or leave as default (blank).
See Add Authorization Servers and Scopes in Okta step 9.
l Okta Web Api Authorization Server ID: Enter the server ID if using a custom
authentication server, or leave as default (blank).
NOTE: Reset IIS after you save any changes to the Application Server
Configuration or Web Server Configuration.
2. In the Authentication properties, complete the following fields for REST API authentication
through Okta.
l External Provider User Name: Enter the client ID from Okta. See Configure the
REST API Application Registration in Okta step 8.
PingFederate Configuration
To configure OneStream REST API to support PingFederate authentication, follow these steps:
To enable single sign-on with PingFederate for the OneStream Desktop application, which
includes the Windows Client application and the Excel Add-In, using OIDC protocol, see the
Installation and Configuration Guide.
l CLIENT ID: Enter a client ID, which is a unique name or identifier for the application
registration.
l CLIENT SECRET: Select CHANGE SECRET and then click the Generate Secret
button.
4. In the User Name Lookup field, type client_id to include this claim in the ordered lookups.
6. In the PingFederate Identity Provider dialog box, in the REST API Settings section,
complete the following fields :
l OneStream Web Api Client ID: Enter the client ID you entered in PingFederate.
See Configure the REST API Application Registration in PingFederate step 4.
l OneStream Web Api JWKS Path: Enter the path on the PingFederate server to
publish a JSON Web Key Set with the keys and certificates used for signature
verification.
NOTE: Reset IIS after you save any changes to the Application Server
Configuration or Web Server Configuration.
2. In the Authentication properties, complete the following fields for REST API authentication
through PingFederate.
l External Provider User Name: Enter the client ID you entered in PingFederate.
See Configure the REST API Application Registration in PingFederate step 4.
By default, this setting is True, which means the audience will be validated.
3. Find the Web Server Configuration file and click the Open button.