Skip to content

RESTful Gateway

The RESTful Gateway is a RESTful ASP.NET WebApi which can be used to interact with the system. The underlying files will reside by default in 'C:\inetpub\wwwroot\IFSSchedulingRESTfulGateway\'.

The interactive Swagger documentation is hidden by default. In order to view it you must enable the parameter EnableSwaggerUI.

Interactive Swagger documentation is available at: https://MyHost/IFSSchedulingRESTfulGateway/swagger/ui/index.html

Note

POST to the session endpoint to get a session token. Set this as the authorisation bearer token in Postman, or set as the api key in Swagger. Unauthenticated requests result in a 401 unauthorized response.

Note

If the organisation identifier is not explicitly required in the input parameters of an endpoint, then it is implied from the session token.

Gateway user permissions

The Gateway is only accessible by a user with the relevant permissions, which differ based on what method is called. The minimum user permission requirements for each method group are shown below:

Method GroupPermissions
Data Request MethodsGatewayQueryData, GatewayQueryReportingData, GatewaySubmitData
Session Management MethodsGateway
System Management MethodsGatewaySystemManagement

A user can only interact with their viewable datasets (by default this is none), these can be specified in the Administration Workspace by the administrator user (see Scheduling Administration Guide). Furthermore, granting the permission ViewAllDatasets to a user allows them to view all datasets.

A user can not send in a new dataset unless it is viewable by them. The administrator user is able to create a new dataset with a state of no data and specify which users are able to view that dataset (see Scheduling Administration Guide).

Content type for requests and responses

Data is returned in either JSON or XML format. Specify the accepted type in the Accept request headers as either: "application/json", "text/json", "application/xml", "text/xml".

When making a request to the scheduling data or appointment endpoints, the Content-Type header can be set to "application/json" or "application/xml" to tell the RESTful Gateway that the request body is either json or xml, respectively. The default value is "application/xml".

Compressing data

Sending data

When sending data include the 'Content-Encoding: gzip' header to gzip the body.

Requesting data

When requesting data include the 'Accept-Encoding: gzip' header to gzip the response body. The deflate compression-decompression algorithm is also supported.

Authentication

Using user credentials to create a session

To authenticate with the RESTful gateway endpoints a session token is used. This session token can be created by making a POST request to the session endpoint. See the 'System Endpoints - Session' section for more information.

Once created the session token can be provided in the 'X-IFS-Session' or 'apikey' header of subsequent requests. Example:

GET {BASE_ADDRESS}/api/v1/scheduling/systemstatus
Host: {HOSTNAME}
X-IFS-Session: {SESSION_TOKEN}

Note

Using standard user credentials along with OpenID also requires the GatewayOpenIdAllowStandardAuthentication permission be given to the user. This allows the user to authenticate using credentials stored in the system rather than the OpenID credentials.

OpenID with IFS Cloud

When using the RESTful Gateway with an IFS Cloud install, all calls must be authenticated using an access token. A client must be setup with a secret in IFS Cloud which can then be used with the client_credentials grant type to generate an access token.

Setting up a client

A new client can be created from the IAM Clients screen in IFS Cloud:

  • On the IAM Clients screen click the add button.
  • Specify a Client ID
  • Enable the Service Accounts option
  • Enable the Direct Access Grants option
  • Add a Redirect Uri as the base address of the cluster plus a ''. E.g. 'https://{HOST_NAME}/'
  • Click OK to create the client
  • From the table of clients make note of the Client ID, Secret and Service Account User.

Once complete the client ID and secret can be used to authenticate. The login will be done as the service account user which must exist in the System Database and have the relevant permissions to connect to the RESTful Gateway. E.g. if the created client ID is 'My_Example_Client' then the user 'service-account-my_example_client' must be created.

Getting an access token

To get an access token the following request can be made to the token endpoint which is normally made available at https://{HOST_NAME}/auth/realms/{REALM}/protocol/openid-connect/token.

POST /auth/realms/{REALM}/protocol/openid-connect/token
Host: {HOST_NAME}
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials&client_id={CLIENT_ID}&client_secret={CLIENT_SECRET}

If successful the response will return a JSON object which will include an 'access_token' property.

Sending requests

The RESTful Gateway is available at https://{HOST_NAME}/pso/gateway/. A request can be made by setting the 'Authorization' header to 'Bearer {ACCESS_TOKEN}' and setting the 'X-IFS-Account' header to the organizations account ID. E.g:

GET {BASE_ADDRESS}/api/v1/scheduling/systemstatus
Host: {HOSTNAME}
Authorization: Bearer {ACCESS_TOKEN}
X-IFS-Account: {ORGANISATION_ACCOUNT}

A session token can be requested and provided in the 'X-IFS-Session' rather than specifying the organization account. This allows the same session to be used for multiple requests instead of creating a temporary session for each request:

GET {BASE_ADDRESS}/api/v1/scheduling/systemstatus
Host: {HOSTNAME}
X-IFS-Session: {SESSION_TOKEN}

Basic HTTP Authentication

Some external clients may have limited support for authentication options when connecting to the RESTful gateway (e.g. Power BI Desktop). For these situations Basic HTTP authentication can be enabled for a user by allowing the GatewayBasicHttpAuthentication permission.

When using Basic HTTP authentication the login credentials are sent in the request Authorization header. The account ID and username are both sent in the Basic Authorization username section separated by a '\'. For example: with an account ID of 'Default' and a username of 'ReportingDataReader' the login would be 'Default\ReportingDataReader'.

Warning

Take care when enabling this for a user and ensure to limit access where possible. E.g. only allowing query access. Basic HTTP authentication sends the user credentials in every request and is generally considered less secure than the other options available.

An example user setup would be creating a 'ReportingDataReader' user and giving the user only the Gateway, GatewayBasicHttpAuthentication and GatewayQueryReportingData permissions.

Note

Using Basic HTTP authentication along with OpenID also requires the GatewayOpenIdAllowStandardAuthentication permission be given to the user. This allows the user to authenticate using credentials stored in the system rather than the OpenID credentials.

System Endpoints

By default, after installation, the RESTful Gateway scheduling endpoints will have the following root address: https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling. The following endpoints are supported by RESTful Gateway.

Events

GET

Retrieve events raised against the PSO system.

Parameters:

  • languageId - The language code of the language to return the events in
  • maximumRows - The maximum number of rows to return
  • minimumSeverity - The lowest severity of events to return (I = information, W = warning, E = error) (optional, default I)
  • minimumEventId - The minimum event Id to return (optional)
  • maximumEventId - The maximum event Id to return (optional)
  • earliestTime - The earliest event time to return events for (optional)
  • latestTime - The latest event time to return events for (optional)

Response elements:

  • A document element containing the system events. This will be gzip compressed if 'Accept-Encoding: gzip' is included in the request headers.

Example Curl request:

curl -X GET
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Accept: application/json"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/events?
        languageId=en&maximumRows=10"
Example Curl request with all input parameters:
curl -X GET
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Accept: application/json"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/events?
        languageId=en&
        maximumRows=10&
        minimumSeverity=I&
        minimumEventId=1&
        maximumEventId=100&
        earliestTime=2021-01-01T08%3A00%3A00&
        latestTime=2021-01-05T12%3A30%3A00"

Note

The "%3A" encoding in the date time inputs above indicates a ":" character.

Example Request URL:

https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/events?
        languageId=en
        maximumRows=10
Example JSON Response Body:
{
  "Events": [
    {
      "Id": 23548,
      "EventTime": "2020-12-11T10:43:26.37+00:00",
      "Severity": "I",
      "EventTypeId": 2056,
      "ApplicationTypeId": "SRG",
      "ApplicationInstanceId": "MACHINE1",
      "DatasetId": null,
      "AccountId": "Default",
      "Message": "System events requested from gateway",
      "ExceptionDetail": null
    }
  ],
  "MaximumEventId": 23548
}

Health

HEAD

Returns the health of the gateway. The status code returned will be 200 OK if the gateway is healthy and 503 Service Unavailable if the gateway is not healthy.

Example Curl request:

curl -X HEAD "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/healthz"

Example Request URL:

https://MyHost/IFSSchedulingRESTfulGateway/api/v1/healthz

Installations

GET

Gets the installations in the system.

Response elements:

  • GetInstallationsResponse:
    • Installations - a list of installations (See GET by name)

Example Curl request:

curl -X GET
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/system/installations"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/system/installations

Example Response Body:

{
    "Installations": [
        {
            "Name": "install-northwest01",
            "CreatedAt": "2025-05-21T08:12:05Z",
            "UpdatedAt": "2025-05-21T09:13:09Z",
            "Version": "6.15.0.8",
            "State": "INSTALLING",
            "InstallingVersion": "6.16.0.27",
            "Role": "ACTIVE",
            "IsIdle": false
        },
        {
            "Name": "install-northeast02",
            "CreatedAt": "2025-05-21T08:12:05Z",
            "UpdatedAt": "2025-05-21T09:13:09Z",
            "Version": "6.16.0.27",
            "State": "READY",
            "InstallingVersion": null,
            "Role": "STANDBY",
            "IsIdle": true
        }
    ]
}
GET by name

Gets an installation in the system by name.

Response elements:

  • GetInstallationResponse:
    • Name - The installation Name
    • CreatedAt - The time the installation was created
    • UpdatedAt - The time the installation was last updated
    • Version - The installation version
    • State - The installation status (WAITING_TO_INSTALL, INSTALLING, FAILED, READY, UNINSTALLING, UNINSTALLED)
    • InstallingVersion - The version being installed
    • Role - The installation role (ACTIVE, PASSIVE, STANDBY)
    • IsIdle - Is the installation currently idle with no primary datasets assigned. Useful for knowing when a STANDBY or PASSIVE installation is ready to be uninstalled.

Example Curl request:

curl -X GET
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/system/installations/install-northwest01"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/system/installations/install-northwest01

Example Response Body:

{
    "Name": "install-northwest01",
    "CreatedAt": "2025-05-21T08:12:05Z",
    "UpdatedAt": "2025-05-21T09:13:09Z",
    "Version": "6.15.0.8",
    "State": "INSTALLING",
    "InstallingVersion": "6.16.0.27",
    "Role": "ACTIVE",
    "IsIdle": false
}
PATCH

Updates the role of an installation between ACTIVE, PASSIVE and STANDBY.

Request elements:

  • PatchInstallationRequest:
    • Role - The new role of the installation. (ACTIVE, PASSIVE or STANDBY)

Response elements:

  • PatchInstallationResponse:
    • Result - The success of the call.

Example Curl request:

curl -X PATCH
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Content-Type: application/json"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/system/installations/install-northwest01"
    --data "{"""Role""": """STANDBY"""}"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/system/installations/install-northwest01

Example Request Body:

{
    "Role": "STANDBY"
}
Example Response Body:
{
    "Result": "SUCCESS"
}

Organisation

GET

Gets the details of an organisation.

Parameters:

  • organisationId - The internal organisation identifier. Specify this if no accountId is specified.
  • accountId - The organisation account identifier linked to the organisation identifier. Specify this if no organisation identifier is specified.

Response elements:

  • GetOrganisationResponse:
    • AccountId - The organisation account ID
    • Id - The internal organisation ID
    • Name - The name of the organisation
    • Status - The status of the organisation. (ACTIVE, INACTIVE, DELETING)

Example Curl request:

curl -X GET
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/organisation?
        accountId=ChildAccount"
Example Request URL:

https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/organisation?
accountId=ChildAccount
Example JSON Response Body:

{
    "Id": 8,
    "AccountId": "ChildAccount",
    "Name": "Example ChildAccount",
    "Status": "ACTIVE"
}
Example XML Response Body:

<GetOrganisationResponse
  xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
  xmlns="http://schemas.datacontract.org/2004/07/RESTfulGateway.ResponseObjects">
    <AccountId>ChildAccount</AccountId>
    <Id>8</Id>
    <Name>Example ChildAccount</Name>
    <Status>ACTIVE</Status>
</GetOrganisationResponse>
POST

Creates a new organisation.

Warning

Please remember to license each newly created organisation.

Parameters:

  • accountId - The organisation account identifier linked to the organisation identifier.
  • organisationName - A descriptive name for the organisation.
  • createAdminUser - Should an administrator be created for the organisation.
  • adminUsername - Username to be used by administrator. Set if createAdminUser is true.
  • adminPassword - Password to be used by administrator. Set if createAdminUser is true.

Note

Note that common usernames such as 'Administrator' are easy to guess and should be avoided.

Note

Request parameters should be passed as x-www-form-urlencoded data in the content of the POST request rather than in the query string to ensure sensitive data is not written to any request logs. To allow passing credentials in the URL query string the GatewayAllowURLCredentials permission can be altered.

Response elements:

  • CreateOrganisationResponse:
    • InternalId - The internal identifier of the created organisation.

Example Curl Request:

curl -X POST
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Content-Type: application/x-www-form-urlencoded"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/organisation"
    --data "accountId=MyOrgAccountId&organisationName=MyOrg&createAdminUser=true
            &adminUsername=AdminUsername&adminPassword=AdminPassword"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/organisation

Example JSON Response Body:

{
    "InternalId": "2"
}
Example XML Response Body:

<CreateOrganisationResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://schemas.datacontract.org/2004/07/GatewayApi.ResponseObjects">
    <InternalId>2</InternalId>
</CreateOrganisationResponse>
PATCH

Updates the status of an organisation between ACTIVE and INACTIVE. When an organisation is made inactive all the datasets will be expired and all sessions ended.

Parameters:

  • organisationId - The internal organisation identifier. Specify this if no accountId is specified.
  • accountId - The organisation account identifier linked to the organisation identifier. Specify this if no organisation identifier is specified.

Request elements:

  • PatchOrganisationRequest:
    • Status - The new status of the organisation. (ACTIVE or INACTIVE)

Response elements:

  • PatchOrganisationResponse:
    • Result - The success of the call.

Example Curl request:

curl -X PATCH
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Content-Type: application/json"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/organisation?
accountId=ChildAccount"
    --data "{"""Status""": """INACTIVE"""}"
Example Request URL:

https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/organisation?
accountId=ChildAccount
Example Request Body:

{
    "Status": "INACTIVE"
}
Example JSON Response Body:

{
    "Result": "SUCCESS"
}
Example XML Response Body:

<PatchOrganisationResponse
  xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
  xmlns="http://schemas.datacontract.org/2004/07/RESTfulGateway.ResponseObjects">
    <Result>SUCCESS</Result>
</PatchOrganisationResponse>
DELETE

Performs the following actions for the specified organisation: mark all datasets as expired, end all sessions and mark the organisation for deletion.

Note

In earlier versions of the software (6.12 and below) this endpoint only marked the organisation as inactive rather than deleting. The PATCH endpoint should be used to set an organisation to inactive.

Parameters:

  • organisationId - The internal organisation identifier. Specify this if no accountId is specified.
  • accountId - The organisation account identifier linked to the organisation identifier. Specify this if no organisation identifier is specified.

Response elements:

  • DeleteOrganisationResponse:
    • Result - The success of the call.

Example Curl request:

curl -X DELETE
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/organisation?
        organisationId=2"
Example Request URL:

https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/organisation?
organisationId=2
Example JSON Response Body:

{
    "Result": "SUCCESS"
}
Example XML Response Body:
<DeleteOrganisationResponse
  xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
  xmlns="http://schemas.datacontract.org/2004/07/RESTfulGateway.ResponseObjects">
    <Result>SUCCESS</Result>
</DeleteOrganisationResponse>

Organisation Data

Warning

The system organisation data endpoints should only be used under consultation with IFS.

GET

Gets the organisations system data.

Parameters:

  • tableFilter - Specify which tables to return as a comma separated list. Leave unspecified to return all tables.

Example Curl request:

curl -X GET
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/system/organisation/data
        ?tableFilter=Users,User_Group"
Example Request URL:

https://MyHost/IFSSchedulingRESTfulGateway/api/v1/system/organisation/data
?tableFilter=Users,User_Group
POST

Updates organisation system data.

Parameters:

  • waitForCompletion (default true) - If set to true the gateway will wait for the input manager to insert the data into the database and then return the internal id of the data.

Example Curl request:

curl -X POST
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Content-Type: application/json"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/system/organisation/data"
     --data "SystemData element"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/system/organisation/data

Session

DELETE

Log off from the PSO Gateway.

Parameters:

  • No parameters are required for this call.

Response elements:

  • LogOffResponse:
    • Result - The success of the call.

Example Curl request:

curl -X DELETE
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Accept: application/json"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/session"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/session

Example JSON Response Body:

{
    "SessionToken": "2c061a86c4a6424d9f1b4ed954c1bc04Standard"
}
Example XML Response Body:

<LogoffResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://schemas.datacontract.org/2004/07/GatewayApi.ResponseObjects">
    <SessionToken>2c061a86c4a6424d9f1b4ed954c1bc04Standard</SessionToken>
</LogoffResponse>
POST

Log on to the PSO gateway.

Request Parameters:

  • accountId - The identifier of the account that is used to process the data set.
  • userName - The name of a user that is authorised to use the system.
  • password - The password for the supplied user.

Note

Request parameters should be passed as x-www-form-urlencoded data in the content of the POST request rather than in the query string to ensure sensitive data is not written to any request logs. To allow passing credentials in the URL query string the GatewayAllowURLCredentials permission can be altered.

Response elements:

  • LogOnResponse:
    • SessionToken - The session token that is to be used in other calls to the PSO Gateway.

Example Curl Request:

curl -X POST
    --header "Accept: application/json"
    --header "Content-Type: application/x-www-form-urlencoded"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/session"
    --data "accountId=Default&userName=Administrator&password=Sausage"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/session

Example Request Body:

accountId=Default&userName=Administrator&password=Sausage

Example XML Response Body:

<LogonResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://schemas.datacontract.org/2004/07/GatewayApi.ResponseObjects">
    <SessionToken>d9ab94237cb74487b91f8be2a6a63248Standard</SessionToken>
</LogonResponse>
Example JSON Response Body:

{
    "SessionToken": "d9ab94237cb74487b91f8be2a6a63248Standard<"
}
GET

Checks to see whether the current session is valid based on the session token.

Parameters:

  • No parameters are required for this call.

Response elements:

  • ValidateSessionResponse
    • Message - indicates whether the session is valid.

Example Curl request:

curl -X GET
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Accept: application/json"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/session"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/session

Example XML Response Body:

<ValidateSessionResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://schemas.datacontract.org/2004/07/GatewayApi.ResponseObjects">
    <Message>SUCCESS</Message>
</ValidateSessionResponse>
Example JSON Response Body:
{
    "Message": "SUCCESS"
}

Statistic

GET

Returns the latest statistics for each service. For more information about statistic logging, see the Administration Guide.

Parameters:

  • serverInstanceId - Specifies the server instance the logging should be gathered from. Can be left as null to get statistics from all servers.
  • languageId - The language for statistic messages. Leave blank to use your default language. For a full list of possible values please consult the Interactive Swagger documentation.

Response elements:

  • GetApplicationInstanceStatisticsResponse:
    • Result - indicates whether the session is valid.
    • ApplicationInstanceStatistics:
      • ApplicationInstanceId - The application instance that logged the statistic.
      • ApplicationTypeId - The type of application that logged the statistic.
      • StatisticType - The name for the type of statistic.
      • DateStamp - The time at which the statistic was logged.
      • Value - The numerical value for the statistic.
      • ServerInstanceId - The id for the server instance the statistic was logged from.

Example Curl request:

curl -X GET
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Accept: application/json"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/statistics"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/statistics

Example JSON Response Body:

{
    "Statistics": [
        {
            "ApplicationTypeId": "ABE",
            "StatisticType": "CPU Usage",
            "DateStamp": "2020-10-12T15:26:28.72+01:00",
            "Value": 0.006510427221655846,
            "ServerInstanceId": 1
        },
        {
            "ApplicationTypeId": "DSE",
            "StatisticType": "CPU Usage",
            "DateStamp": "2020-10-12T15:26:29.33+01:00",
            "Value": 13.180383682250977,
            "ServerInstanceId": 1
        }
    ]
}
Example XML Response Body:
<ApplicationInstanceStatistics xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://schemas.datacontract.org/2004/07/RESTfulGateway.ResponseObjects">
    <Statistics>
        <ApplicationInstanceStatistic>
            <ApplicationTypeId>ABE</ApplicationTypeId>
            <DateStamp>2020-10-12T15:28:28.72+01:00</DateStamp>
            <ServerInstanceId>1</ServerInstanceId>
            <StatisticType>CPU Usage</StatisticType>
            <Value>0.01627551205456257</Value>
        </ApplicationInstanceStatistic>
        <ApplicationInstanceStatistic>
            <ApplicationTypeId>DSE</ApplicationTypeId>
            <DateStamp>2020-10-12T15:28:29.33+01:00</DateStamp>
            <ServerInstanceId>1</ServerInstanceId>
            <StatisticType>CPU Usage</StatisticType>
            <Value>13.255167007446289</Value>
        </ApplicationInstanceStatistic>
    </Statistics>
</ApplicationInstanceStatistics>

SystemStatus

GET

This method returns the latest system status logged in the system database.

Parameters:

  • No parameters are required for this call.

Response elements:

  • SystemStatus:
    • Id - A unique integer id for the status update (ids are increasing).
    • LastStatusTime - The time that the last update occurred.
    • LastSystemTestQueryDuration - The time taken to query the schedule query manager for the plan during the last system test run.
    • LastSystemTestSuccessful - A true/false value indicating the success of the last system test run.
    • LastSystemTestTime - The time that the last system test was completed (or minimum datetime if no system test has been run).
    • LastSystemTestTimeTaken - The total time taken for the last system test run. Note that this may vary quite significantly due to variable delays in starting to process the new dataset.
    • LastSystemTestTimeTakenDSE - The time taken internally by the DSE to generate a plan for the last system test run.
    • LicencedCustomerName - The name of the customer appearing in the main system licence.
    • RecentErrorCount - The number of recent errors logged in the system.
    • RecentWarningCount - The number of recent warnings logged in the system.
    • TotalDSECapability - The total capability of all DSEs running on the system, including overload factor.
    • TotalLiveDatasetFootprint - The total footprint of all scheduling datasets running live on the system.
    • TotalWaitingDatasetFootprint - The total footprint of all scheduling datasets in waiting state on the system.

Example Curl request:

curl -X GET
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Accept: text/json"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/systemstatus"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/systemstatus

Example JSON Response Body:

{
  "Id": 229,
  "LastStatusTime": "2019-06-11T01:00:00+01:00",
  "LastSystemTestQueryDuration": "PT11M18S",
  "LastSystemTestSuccessful": true,
  "LastSystemTestTime": "2019-06-11T11:20:12+01:00",
  "LastSystemTestTimeTaken": "PT2M3S",
  "LastSystemTestTimeTakenDSE": "PT3M54S",
  "LicencedCustomerName": "234243",
  "RecentErrorCount": 3,
  "RecentWarningCount": 2,
  "TotalDSECapability": 765,
  "TotalLiveDatasetFootprint": 987,
  "TotalWaitingDatasetFootprint": 876
}
Example XML Response Body:
<SystemStatus xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://schemas.datacontract.org/2004/07/GatewayApi.ResponseObjects">
    <Id>1</Id>
    <LastStatusTime>2019-06-11T01:00:00+01:00</LastStatusTime>
    <LastSystemTestQueryDuration>PT11M18S</LastSystemTestQueryDuration>
    <LastSystemTestSuccessful>true</LastSystemTestSuccessful>
    <LastSystemTestTime>2019-06-11T11:20:12+01:00</LastSystemTestTime>
    <LastSystemTestTimeTaken>PT2M3S</LastSystemTestTimeTaken>
    <LastSystemTestTimeTakenDSE>PT3M54S</LastSystemTestTimeTakenDSE>
    <LicencedCustomerName>234243</LicencedCustomerName>
    <RecentErrorCount>3</RecentErrorCount>
    <RecentWarningCount>2</RecentWarningCount>
    <TotalDSECapability>765</TotalDSECapability>
    <TotalLiveDatasetFootprint>987</TotalLiveDatasetFootprint>
    <TotalWaitingDatasetFootprint>876</TotalWaitingDatasetFootprint>
</SystemStatus>

Usage

GET

Returns the usage data for the current organisation (as defined in the session token).

Parameters:

  • minimumDateTime - The minimum date/time that usage information is returned for.
  • maximumDateTime - The maximum date/time that usage information is returned for.

Response elements:

  • ScheduleDataUsages:
    • id - an internal identifier that uniquely identifies the usage row.
    • organisation_id - the identifier of the organisation that the usage applies to.
    • datetime_stamp - the date/time that the usage was calculated.
    • usage_type_id - a number identifying the usage. See below for a list of possible values.
    • value - the usage value.

Note

Response structure has changed. Set parameter GetUsageLegacyResponse to true to recieve old structered response with 'DocumentElement' as root tag.

Usage Type Values:

  • 0 - The total number of resources across all data sets.
  • 1 - The total number of activities across all data sets.
  • 2 - The schedule window length in days.
  • 3 - The appointment booking window length in days.
  • 4 - The number of datasets owned by the organisation.

Example Curl request:

curl -X GET
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Accept: application/json"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/usage?
        minimumDateTime=2021-01-01T08%3A00%3A00&
        maximumDateTime=2021-01-05T17%3A30%3A00"

Note

The "%3A" encoding in the date time inputs above indicates a ":" character.

Example Request URL:

https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/usage?
minimumDateTime=2021-04-15T08%3A00%3A00&
maximumDateTime=2021-04-17T17%3A30%3A00
Example JSON Response Body:

{
  "ScheduleDataUsages": [
    {
      "Id": 1,
      "ScheduleDataUsageType": 0,
      "OrganisationId": 1,
      "Value": 0,
      "DatetimeStamp": "2021-11-29T15:58:06+00:00"
    }
  ]
}
Example XML Response Body:
<ScheduleDataUsagesResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="RESTfulGateway.ResponseObjects">
    <ScheduleDataUsages>
        <ScheduleDataUsage>
            <DatetimeStamp>2021-11-29T15:58:06+00:00</DatetimeStamp>
            <Id>1</Id>
            <OrganisationId>1</OrganisationId>
            <ScheduleDataUsageType>ResourceCount</ScheduleDataUsageType>
            <Value>0</Value>
        </ScheduleDataUsage>
    </ScheduleDataUsages>
</ScheduleDataUsagesResponse>

Scheduling Endpoints

Activity

GET

Get the data for the specified activity.

Parameters:

  • datasetId - The identifier of the dataset containing the activity specified in activityId.
  • activityId - The identifier of the activity.
  • includeOutput - A flag indicating whether to include output tables related to the activity.
  • tableFilter - Specify which Activity related tables to return as a comma separated list. Or use null to return all related tables. These are: Activity, SLA_Type, Allocation, Location, Activity_Status, Schedule_Exception, Plan_Travel, Allocation_Data.

Response elements:

  • Scheduling data in the schema data format. See the 'Schema Definition' section for more information. This will be compressed if 'Accept-Encoding: gzip' is included in the request headers.

Example Curl request:

curl -X GET
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Accept: application/json"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/activity?
        datasetId=Default&
        activityId=1&
        includeOutput=true"
Example Request URL:

https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/activity?
    datasetId=Default&
    activityId=1&
    includeOutput=true
Example JSON Response Body:

{
  "ScheduleData": {
    "Activity": [
      {
        "id": "1",
        "activity_class_id": "CALL",
        "activity_type_id": "Default",
        "location_id": "1",
        "priority": 1,
        "split_allowed": false,
        "do_on_site": false,
        "base_value": 1000,
        "interrupt": false,
        "cost_of_split": 0
      }
    ],
    "Activity_Status": [
      {
        "activity_id": "1",
        "status_id": 0,
        "date_time_status": "2006-01-01T09:00:00Z",
        "visit_id": 1,
        "fixed": false,
        "date_time_stamp": "2006-01-01T09:00:00Z",
        "duration": "PT1H"
      }
    ],
    "Allocation": [
      {
        "activity_id": "1",
        "resource_id": "1001",
        "visit_id": 1,
        "activity_start": "2006-01-01T12:23:55Z",
        "activity_end": "2006-01-01T13:23:55Z",
        "visit_status": 10,
        "plan_id": 1,
        "visit_type": "CALL",
        "date_time_fixed": false,
        "duration": "PT1H",
        "fixed_resource": false,
        "shift_id": "1001_0_shift",
        "rank": 3,
        "shift_start_datetime": "2006-01-01T09:00:00Z",
        "same_location": false,
        "allocation_source": 0,
        "location_id": "1"
      }
    ],
    "Allocation_Data": [
      {
        "activity_id": "1",
        "visit_id": 1,
        "plan_id": 1,
        "expected_duration": "PT1H",
        "sla_start_time": "2006-01-01T09:00:00Z",
        "sla_jeopardy_time": "2006-01-31T17:00:00Z"
      }
    ],
    "Location": [
      {
        "id": "1",
        "latitude": 52.04472584321936,
        "longitude": -1.0010889395426406
      }
    ],
    "Plan_Travel": [
      {
        "plan_id": 1,
        "resource_id": "1001",
        "shift_id": "1001_0_shift",
        "distance": 10586,
        "end_time": "2006-01-01T12:23:55Z",
        "start_time": "2006-01-01T12:11:57Z",
        "start_location_id": "78",
        "end_location_id": "1",
        "activity_id": "1",
        "previous_activity_id": "78",
        "visit_id": 1,
        "previous_visit_id": 1,
        "shift_start_datetime": "2006-01-01T09:00:00Z",
        "expected_travel_time": "PT11M58S"
      }
    ]
  }
}
Example XML Response Body:
<dsScheduleData xmlns="http://360Scheduling.com/Schema/dsScheduleData.xsd">
    <Activity>
        <id>1</id>
        <activity_class_id>CALL</activity_class_id>
        <activity_type_id>Default</activity_type_id>
        <location_id>1</location_id>
        <priority>1</priority>
        <split_allowed>false</split_allowed>
        <do_on_site>false</do_on_site>
        <base_value>1000</base_value>
        <interrupt>false</interrupt>
        <cost_of_split>0</cost_of_split>
    </Activity>
    <Allocation>
        <activity_id>1</activity_id>
        <resource_id>1001</resource_id>
        <visit_id>1</visit_id>
        <activity_start>2006-01-01T12:23:55+00:00</activity_start>
        <activity_end>2006-01-01T13:23:55+00:00</activity_end>
        <visit_status>10</visit_status>
        <plan_id>1</plan_id>
        <visit_type>CALL</visit_type>
        <date_time_fixed>false</date_time_fixed>
        <duration>PT1H</duration>
        <fixed_resource>false</fixed_resource>
        <shift_id>1001_0_shift</shift_id>
        <rank>3</rank>
        <shift_start_datetime>2006-01-01T09:00:00+00:00</shift_start_datetime>
        <same_location>false</same_location>
        <allocation_source>0</allocation_source>
        <location_id>1</location_id>
    </Allocation>
    <Location>
        <id>1</id>
        <latitude>52.04472584321936</latitude>
        <longitude>-1.0010889395426406</longitude>
    </Location>
    <Activity_Status>
        <activity_id>1</activity_id>
        <status_id>0</status_id>
        <date_time_status>2006-01-01T09:00:00+00:00</date_time_status>
        <visit_id>1</visit_id>
        <fixed>false</fixed>
        <date_time_stamp>2006-01-01T09:00:00+00:00</date_time_stamp>
        <duration>PT1H</duration>
    </Activity_Status>
    <Plan_Travel>
        <plan_id>1</plan_id>
        <resource_id>1001</resource_id>
        <shift_id>1001_0_shift</shift_id>
        <distance>10586</distance>
        <end_time>2006-01-01T12:23:55+00:00</end_time>
        <start_time>2006-01-01T12:11:57+00:00</start_time>
        <start_location_id>78</start_location_id>
        <end_location_id>1</end_location_id>
        <activity_id>1</activity_id>
        <previous_activity_id>78</previous_activity_id>
        <visit_id>1</visit_id>
        <previous_visit_id>1</previous_visit_id>
        <shift_start_datetime>2006-01-01T09:00:00+00:00</shift_start_datetime>
        <expected_travel_time>PT11M58S</expected_travel_time>
    </Plan_Travel>
    <Allocation_Data>
        <activity_id>1</activity_id>
        <visit_id>1</visit_id>
        <plan_id>1</plan_id>
        <expected_duration>PT1H</expected_duration>
        <sla_start_time>2006-01-01T09:00:00+00:00</sla_start_time>
        <sla_jeopardy_time>2006-01-31T17:00:00+00:00</sla_jeopardy_time>
    </Allocation_Data>
</dsScheduleData>

Appointment

POST

Request appointments from the ABE. Works in synchronous mode only. Requires the Appointment Booking and Schedule Broadcast Manager services.

Note

The Appointment endpoint can be used with both blocking and non-blocking appointment booking. In particular, this endpoint can be used for both the request and confirmation steps involved in non-blocking appointment booking. For further details of the steps involved in blocking and non-blocking appointment booking, please consult the Scheduling Concepts - Appointment Booking guide.

Message Body:

  • The UTF8 encoded scheduling data JSON or XML in the schema data format.

Response elements:

  • Scheduling data in the schema data format. See the 'Schema Definition' section for more information. This will be compressed if 'Accept-Encoding: gzip' is included in the request headers.

Example Curl request for JSON Message Body:

curl -X POST
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Content-Type: application/json"
    --header "Accept: application/json"
    --data "ScheduleData Element"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/appointment"
Example Curl request for XML Message Body:

curl -X POST
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Content-Type: application/xml"
    --header "Accept: application/xml"
    --data "dsScheduleData Element"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/appointment"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/appointment

Example JSON Response Body:

{
  "ScheduleData": {
    "Appointment_Offer": [
      {
        "appointment_request_id": "2609_001",
        "id": 0,
        "offer_start_datetime": "2020-09-19T08:00:00Z",
        "offer_end_datetime": "2020-09-19T15:00:00Z",
        "offer_value": 9087.522916666669,
        "plan_id": 11,
        "available": true,
        "reason_type_id": 0,
        "window_start_datetime": "2020-09-19T08:00:00Z",
        "window_end_datetime": "2020-09-19T15:00:00Z"
      },
      {
        "appointment_request_id": "2609_001",
        "id": 1,
        "offer_start_datetime": "2020-09-20T06:00:00Z",
        "offer_end_datetime": "2020-09-20T15:00:00Z",
        "offer_value": 8666.494027777779,
        "plan_id": 11,
        "available": true,
        "reason_type_id": 0,
        "window_start_datetime": "2020-09-20T06:00:00Z",
        "window_end_datetime": "2020-09-20T15:00:00Z"
      }
    ],
    "Plan": [
      {
        "id": 11,
        "time_taken": "PT0S",
        "plan_type": "CHANGE",
        "output_datetime": "2020-10-12T13:44:37.963Z",
        "input_reference_internal_id": 5,
        "travel_type": "Lat/Long",
        "schedule_from": "2020-09-18T11:03:21Z",
        "schedule_to": "2020-09-23T23:00:00Z",
        "input_reference_date_time": "2020-09-18T11:03:21Z",
        "input_reference_id": "2609_001",
        "organisation_id": 1,
        "dataset_id": "Default",
        "broadcast_id": "ac1df4f18b1c46b59956d6c7bc0ab588",
        "allocation_type": 2,
        "profile_id": "DEFAULT",
        "load_status": 0,
        "appointment_window_end": "2020-10-14T23:00:00Z",
        "application_type_id": "ABE"
      }
    ]
  }
}
Example XML Response Body:
<dsScheduleData xmlns="http://360Scheduling.com/Schema/dsScheduleData.xsd">
    <Plan>
        <id>4</id>
        <time_taken>PT0S</time_taken>
        <plan_type>CHANGE</plan_type>
        <output_datetime>2020-10-12T14:39:54.133+01:00</output_datetime>
        <input_reference_internal_id>3</input_reference_internal_id>
        <travel_type>Lat/Long</travel_type>
        <schedule_from>2020-09-18T12:03:21+01:00</schedule_from>
        <schedule_to>2020-09-24T00:00:00+01:00</schedule_to>
        <input_reference_date_time>2020-09-18T12:03:21+01:00</input_reference_date_time>
        <input_reference_id>2609_001</input_reference_id>
        <organisation_id>1</organisation_id>
        <dataset_id>Default</dataset_id>
        <broadcast_id>0df67ac4310a46019a106586354be988</broadcast_id>
        <allocation_type>2</allocation_type>
        <profile_id>DEFAULT</profile_id>
        <load_status>0</load_status>
        <appointment_window_end>2020-10-15T00:00:00+01:00</appointment_window_end>
        <application_type_id>ABE</application_type_id>
    </Plan>
    <Appointment_Offer>
        <appointment_request_id>2609_001</appointment_request_id>
        <id>0</id>
        <offer_start_datetime>2020-09-19T09:00:00+01:00</offer_start_datetime>
        <offer_end_datetime>2020-09-19T16:00:00+01:00</offer_end_datetime>
        <offer_value>9087.522916666669</offer_value>
        <plan_id>4</plan_id>
        <available>true</available>
        <reason_type_id>0</reason_type_id>
        <window_start_datetime>2020-09-19T09:00:00+01:00</window_start_datetime>
        <window_end_datetime>2020-09-19T16:00:00+01:00</window_end_datetime>
    </Appointment_Offer>
    <Appointment_Offer>
        <appointment_request_id>2609_001</appointment_request_id>
        <id>1</id>
        <offer_start_datetime>2020-09-20T07:00:00+01:00</offer_start_datetime>
        <offer_end_datetime>2020-09-20T16:00:00+01:00</offer_end_datetime>
        <offer_value>8666.494027777779</offer_value>
        <plan_id>4</plan_id>
        <available>true</available>
        <reason_type_id>0</reason_type_id>
        <window_start_datetime>2020-09-20T07:00:00+01:00</window_start_datetime>
        <window_end_datetime>2020-09-20T16:00:00+01:00</window_end_datetime>
    </Appointment_Offer>
</dsScheduleData>

Data

GET

Use this endpoint to get the output data from the scheduling system.

Parameters:

  • datasetId - The identifier of the dataset containing the activity (case sensitive).
  • includeInput - A flag indicating whether to include input result tables.
  • includeOutput - A flag indicating whether to include output result tables.
  • broadcastId - The broadcast identifier.

Response elements:

  • Scheduling data in the schema data format. See the 'Schema Definition' section for more information. This will be compressed if 'Accept-Encoding: gzip' is included in the request headers.

Example Curl request:

curl -X GET
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Accept: application/json"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/data?
        datasetId=Default&
        includeInput=true&
        includeOutput=true"
Example Request URL:

https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/data?
datasetId=Default&
includeInput=true&
includeOutput=true
Example JSON Response Body:

{
  "ScheduleData": {
    "Activity": [
      {
        "id": "1",
        "activity_class_id": "CALL",
        "activity_type_id": "Default",
        "location_id": "1",
        "priority": 1,
        "split_allowed": false,
        "do_on_site": false,
        "base_value": 1000,
        "interrupt": false,
        "cost_of_split": 0
      }
    ],
    "Activity_Status": [
      {
        "activity_id": "1",
        "status_id": 0,
        "date_time_status": "2006-01-01T09:00:00Z",
        "visit_id": 1,
        "fixed": false,
        "date_time_stamp": "2006-01-01T09:00:00Z",
        "duration": "PT1H"
      }
    ],
    "Allocation": [
      {
        "activity_id": "1",
        "resource_id": "1001",
        "visit_id": 1,
        "activity_start": "2006-01-01T12:23:55Z",
        "activity_end": "2006-01-01T13:23:55Z",
        "visit_status": 10,
        "plan_id": 1,
        "visit_type": "CALL",
        "date_time_fixed": false,
        "duration": "PT1H",
        "fixed_resource": false,
        "shift_id": "1001_0_shift",
        "rank": 3,
        "shift_start_datetime": "2006-01-01T09:00:00Z",
        "same_location": false,
        "allocation_source": 0,
        "location_id": "1"
      }
    ],
    "Location": [
      {
        "id": "1",
        "latitude": 52.04472584321936,
        "longitude": -1.0010889395426406
      },
      {
        "id": "1001_end",
        "latitude": 52.21886905700928,
        "longitude": -0.15535261048762505
      },
      {
        "id": "1001_start",
        "latitude": 52.21886905700928,
        "longitude": -0.15535261048762505
      }
    ],
    "Plan": [
      {
        "id": 1,
        "time_taken": "PT2S",
        "plan_type": "COMPLETE",
        "plan_margin": 69358.2146481399,
        "output_datetime": "2020-10-12T13:24:07.43Z",
        "total_allocations": 82,
        "quality": 80.87383177570094,
        "input_reference_internal_id": 1,
        "total_travel_time": "P3DT18H50M24S",
        "total_travel_distance": 5235862,
        "travel_type": "Lat/Long",
        "schedule_from": "2006-01-01T09:00:00Z",
        "schedule_to": "2006-01-06T00:00:00Z",
        "input_reference_date_time": "2006-01-01T09:00:00Z",
        "input_reference_id": "Smoke Test",
        "average_travel_time": "PT1H6M28S",
        "average_travel_distance": 63851.9756097561,
        "utilisation": 86.42,
        "total_on_site_time": "P3DT10H",
        "total_break_time": "PT0S",
        "total_private_time": "PT0S",
        "total_unutilised_time": "P1DT3H9M36S",
        "organisation_id": 1,
        "dataset_id": "Default",
        "allocation_type": 1,
        "profile_id": "DEFAULT",
        "load_status": 1,
        "application_type_id": "DSE"
      }
    ],
    "Resources": [
      {
        "id": "1001",
        "location_id_start": "1001_start",
        "location_id_end": "1001_end",
        "resource_type_id": "Default"
      }
    ],
    "Shift": [
      {
        "id": "1001_0_shift",
        "resource_id": "1001",
        "start_datetime": "2006-01-01T09:00:00Z",
        "end_datetime": "2006-01-01T17:00:00Z",
        "actual": true,
        "split_allowed": true
      }
    ]
  }
}
Example XML Response Body:

<dsScheduleData xmlns="http://360Scheduling.com/Schema/dsScheduleData.xsd">
    <Activity>
        <id>1</id>
        <activity_class_id>CALL</activity_class_id>
        <activity_type_id>Default</activity_type_id>
        <location_id>1</location_id>
        <priority>1</priority>
        <split_allowed>false</split_allowed>
        <do_on_site>false</do_on_site>
        <base_value>1000</base_value>
        <interrupt>false</interrupt>
        <cost_of_split>0</cost_of_split>
    </Activity>
    <Plan>
        <id>1</id>
        <time_taken>PT2S</time_taken>
        <plan_type>COMPLETE</plan_type>
        <plan_margin>69358.2146481399</plan_margin>
        <output_datetime>2020-10-12T14:24:07.43+01:00</output_datetime>
        <total_allocations>82</total_allocations>
        <quality>80.87383177570094</quality>
        <input_reference_internal_id>1</input_reference_internal_id>
        <total_travel_time>P3DT18H50M24S</total_travel_time>
        <total_travel_distance>5235862</total_travel_distance>
        <travel_type>Lat/Long</travel_type>
        <schedule_from>2006-01-01T09:00:00+00:00</schedule_from>
        <schedule_to>2006-01-06T00:00:00+00:00</schedule_to>
        <input_reference_date_time>2006-01-01T09:00:00+00:00</input_reference_date_time>
        <input_reference_id>Smoke Test</input_reference_id>
        <average_travel_time>PT1H6M28S</average_travel_time>
        <average_travel_distance>63851.9756097561</average_travel_distance>
        <utilisation>86.42</utilisation>
        <total_on_site_time>P3DT10H</total_on_site_time>
        <total_break_time>PT0S</total_break_time>
        <total_private_time>PT0S</total_private_time>
        <total_unutilised_time>P1DT3H9M36S</total_unutilised_time>
        <organisation_id>1</organisation_id>
        <dataset_id>Default</dataset_id>
        <allocation_type>1</allocation_type>
        <profile_id>DEFAULT</profile_id>
        <load_status>1</load_status>
        <application_type_id>DSE</application_type_id>
    </Plan>
    <Allocation>
        <activity_id>1</activity_id>
        <resource_id>1001</resource_id>
        <visit_id>1</visit_id>
        <activity_start>2006-01-01T12:23:55+00:00</activity_start>
        <activity_end>2006-01-01T13:23:55+00:00</activity_end>
        <visit_status>10</visit_status>
        <plan_id>1</plan_id>
        <visit_type>CALL</visit_type>
        <date_time_fixed>false</date_time_fixed>
        <duration>PT1H</duration>
        <fixed_resource>false</fixed_resource>
        <shift_id>1001_0_shift</shift_id>
        <rank>3</rank>
        <shift_start_datetime>2006-01-01T09:00:00+00:00</shift_start_datetime>
        <same_location>false</same_location>
        <allocation_source>0</allocation_source>
        <location_id>1</location_id>
    </Allocation>
    <Location>
        <id>1</id>
        <latitude>52.04472584321936</latitude>
        <longitude>-1.0010889395426406</longitude>
    </Location>
    <Location>
        <id>1001_end</id>
        <latitude>52.21886905700928</latitude>
        <longitude>-0.15535261048762505</longitude>
    </Location>
    <Location>
        <id>1001_start</id>
        <latitude>52.21886905700928</latitude>
        <longitude>-0.15535261048762505</longitude>
    </Location>
    <Resources>
        <id>1001</id>
        <location_id_start>1001_start</location_id_start>
        <location_id_end>1001_end</location_id_end>
        <resource_type_id>Default</resource_type_id>
    </Resources>
    <Shift>
        <id>1001_0_shift</id>
        <resource_id>1001</resource_id>
        <start_datetime>2006-01-01T09:00:00+00:00</start_datetime>
        <end_datetime>2006-01-01T17:00:00+00:00</end_datetime>
        <actual>true</actual>
        <split_allowed>true</split_allowed>
    </Shift>
    <Activity_Status>
        <activity_id>1</activity_id>
        <status_id>0</status_id>
        <date_time_status>2006-01-01T09:00:00+00:00</date_time_status>
        <visit_id>1</visit_id>
        <fixed>false</fixed>
        <date_time_stamp>2006-01-01T09:00:00+00:00</date_time_stamp>
        <duration>PT1H</duration>
    </Activity_Status>
</dsScheduleData>
POST

Submit scheduling data to the PSO system.

Note

Additional user permissions are required to submit data to the system. Integration users can be placed into the IntegrationUsers group to allow them to submit data. This provides them with the GatewaySubmitData, GatewaySubmitSystemData, GatewayQuerySystemData and ViewAllDatasets permissions.

Parameters:

  • dataType - The type of data being submitted. If this is null, then the data type is determined from the input - which will take a little longer. For a full list of possible values please consult the Interactive Swagger documentation.
  • waitForCompletion (default true) - If set to true the gateway will wait for the input manager to insert the data into the database and then return the internal id of the data.
  • childAccountId (default null) - The child organisation Account ID if submitting data for a managed child organisation. Requires the GatewaySubmitChildOrganisationData and related permissions instead of GatewaySubmitData.

Message Body:

  • The UTF8 encoded input JSON or XML dataset containing the data to be processed.

Response elements:

  • SubmitDataResponse:
    • InternalId - The internal identifier of the dataset being processed.

When sending scheduling data the Input_Reference.load_id attribute can be used to specify which LOAD a CHANGE was intended for.

  • In the event that the load ID is for a previous no longer relevant LOAD the service will accept the request with 'HTTP OK' returning an InternalId of -1. The change will be discarded and not processed.
  • In the event that the load ID is unknown, the service will return 'HTTP 424 Failed Dependency' to signify the change should be tried again later under the assumption that the LOAD has not yet made it into the system.

Example Curl request for JSON Message Body:

curl -X POST
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Accept: application/json"
    --header "Content-Type: application/json"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/data?dataType=SCHEDULE"
    --data "ScheduleData element"
Example Curl request for XML Message Body:

curl -X POST
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Accept: application/xml"
    --header "Content-Type: application/xml"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/data?dataType=SCHEDULE"
    --data "dsScheduleData element"
Example Request URL:

https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/data?
dataType=SCHEDULE
Example JSON Response Body:

{
    "InternalId": "0"
}
Example XML Response Body:
<SubmitDataResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://schemas.datacontract.org/2004/07/GatewayApi.ResponseObjects">
    <InternalId>0</InternalId>
</SubmitDataResponse>

DatasetStatus

GET

Get the processing status of the specified dataset.

Parameters:

  • datasetId - The dataset identifier.
  • broadcastId - The broadcast identifier (if querying for a specific broadcast).

Response elements:

  • DatasetStatus:
    • OutputAvailable - Has a plan been generated for this dataset (and broadcast if applicable).
    • ProcessingStatus - The status of the dataset processing.

Processing Status Values:

  • WAITING = 0
  • ASSIGNED = 10
  • PROCESSING = 20
  • COMPLETING = 30
  • COMPLETE = 40
  • FAILED = 50
  • REDUNDANT = 55
  • UNKNOWN = 60

Example Curl request:

curl -X GET
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Accept: application/json"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/datasetstatus?
        datasetId=Default"
Example Request URL:

https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/datasetstatus?
datasetId=Default
Example JSON Response Body:

{
    "OutputAvailable": true,
    "ProcessingStatus": 20
}
Example XML Response Body:
<DatasetStatus xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://schemas.datacontract.org/2004/07/GatewayApi.ResponseObjects">
    <OutputAvailable>true</OutputAvailable>
    <ProcessingStatus>20</ProcessingStatus>
</DatasetStatus>

Resource

GET

Get data for the specified resource.

Parameters:

  • datasetId - The identifier of the dataset containing the resource.
  • resourceId - The identifier of the resource.
  • includeOutput - A flag indicating whether to include output tables related to the resource.
  • tableFilter - Specify which resource related tables to return as a comma separated list. Or use null to return all related tables. These tables are: Allocation, Location, Resources, Shift, Schedule_Exception, Plan_Resource, Plan_Route, Plan_Travel and Allocation_Data associated with the resource.

Response elements:

  • Scheduling data in the schema data format. See the 'Schema Definition' section for more information. This will be compressed if 'Accept-Encoding: gzip' is included in the request headers.

Example Curl request:

curl -X GET
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Accept: application/json"
    --header "Accept-Encoding: gzip"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/resource?
        datasetId=Default&
        resourceId=1000&
        includeOutput=true"
Example Request URL:

https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/resource?
    datasetId=Default&
    resourceId=1000&
    includeOutput=true
Example JSON Response Body:

{
  "ScheduleData": {
    "Allocation": [
      {
        "activity_id": "1",
        "resource_id": "1001",
        "visit_id": 1,
        "activity_start": "2006-01-01T12:23:55Z",
        "activity_end": "2006-01-01T13:23:55Z",
        "visit_status": 10,
        "plan_id": 1,
        "visit_type": "CALL",
        "date_time_fixed": false,
        "duration": "PT1H",
        "fixed_resource": false,
        "shift_id": "1001_0_shift",
        "rank": 3,
        "shift_start_datetime": "2006-01-01T09:00:00Z",
        "same_location": false,
        "allocation_source": 0,
        "location_id": "1"
      }
    ],
    "Location": [
      {
        "id": "1001_end",
        "latitude": 52.21886905700928,
        "longitude": -0.15535261048762505
      },
      {
        "id": "1001_start",
        "latitude": 52.21886905700928,
        "longitude": -0.15535261048762505
      }
    ],
    "Resources": [
      {
        "id": "1001",
        "location_id_start": "1001_start",
        "location_id_end": "1001_end",
        "resource_type_id": "Default"
      }
    ],
    "Shift": [
      {
        "id": "1001_0_shift",
        "resource_id": "1001",
        "start_datetime": "2006-01-01T09:00:00Z",
        "end_datetime": "2006-01-01T17:00:00Z",
        "actual": true,
        "split_allowed": true
      }
    ]
  }
}
Example XML Response Body:
<dsScheduleData xmlns="http://360Scheduling.com/Schema/dsScheduleData.xsd">
    <Allocation>
        <activity_id>1</activity_id>
        <resource_id>1001</resource_id>
        <visit_id>1</visit_id>
        <activity_start>2006-01-01T12:23:55+00:00</activity_start>
        <activity_end>2006-01-01T13:23:55+00:00</activity_end>
        <visit_status>10</visit_status>
        <plan_id>1</plan_id>
        <visit_type>CALL</visit_type>
        <date_time_fixed>false</date_time_fixed>
        <duration>PT1H</duration>
        <fixed_resource>false</fixed_resource>
        <shift_id>1001_0_shift</shift_id>
        <rank>3</rank>
        <shift_start_datetime>2006-01-01T09:00:00+00:00</shift_start_datetime>
        <same_location>false</same_location>
        <allocation_source>0</allocation_source>
        <location_id>1</location_id>
    </Allocation>
    <Location>
        <id>1001_end</id>
        <latitude>52.21886905700928</latitude>
        <longitude>-0.15535261048762505</longitude>
    </Location>
    <Location>
        <id>1001_start</id>
        <latitude>52.21886905700928</latitude>
        <longitude>-0.15535261048762505</longitude>
    </Location>
    <Resources>
        <id>1001</id>
        <location_id_start>1001_start</location_id_start>
        <location_id_end>1001_end</location_id_end>
        <resource_type_id>Default</resource_type_id>
    </Resources>
    <Shift>
        <id>1001_0_shift</id>
        <resource_id>1001</resource_id>
        <start_datetime>2006-01-01T09:00:00+00:00</start_datetime>
        <end_datetime>2006-01-01T17:00:00+00:00</end_datetime>
        <actual>true</actual>
        <split_allowed>true</split_allowed>
    </Shift>
</dsScheduleData>

ExceptionType

GET

Get the settings for a specified exception type.

Note

If the language code passed in is not installed, then we will use the default language installed when generating the Description value in the output response.

Parameters:

  • exceptionTypeId - The identifier of the exception type.
  • languageId - The language code of the language to return the Description value and ExceptionTypeData.Label values in.
  • includeExceptionTypeData - Set to true if exception type data should also be included in the response.
  • activeExceptionTypeDataOnly - Set to true to only include active exception type data in the response.

Response elements:

  • An ExceptionTypeInfo object containing: Id, Description, ActivationSetting, AttentionValue, Active and ExceptionTypeData.
  • Each ExceptionTypeData object consists of Sequence, Label, Active and IsDelayValue.

Example Curl request:

curl -X GET
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Accept: application/json"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/exceptionType?
        exceptionTypeId=40&languageId=en&includeExceptionTypeData=true"
Example Request URL:

https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/exceptionType?
    exceptionTypeId=40&languageId=en&includeExceptionTypeData=true
Example JSON Response Body:
{
  "Id": 50,
  "Description": "Planned Activity in Jeopardy",
  "ActivationSetting": 0,
  "AttentionValue": 50,
  "Active": true,
  "ExceptionTypeData": [
    {
      "Sequence": 0,
      "Label": "Minutes Late",
      "Active": true,
      "IsDelayValue": false
    },
    {
      "Sequence": 1,
      "Label": "External Reference",
      "Active": false,
      "IsDelayValue": false
    }
  ]
}

ExceptionTypes

GET

Get all exception types.

Note

If the language code passed in is not installed, then we will use the default language installed when generating the Description value in the output response.

Parameters:

  • languageId - The language code of the language to return the Description value in
  • activeOnly - True to only retrieve exceptions (and exception type data) which are active
  • includeExceptionTypeData - Set to true if exception type data should also be included in the response.

Response elements:

  • A list of ExceptionTypeInfo objects containing: Id, Description, ActivationSetting, AttentionValue, Active and ExceptionTypeData.
  • Each ExceptionTypeData object consists of Sequence, Label, Active and IsDelayValue.

Example Curl request:

curl -X GET
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Accept: application/json"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/exceptionTypes?
        languageId=en&activeOnly=true&includeExceptionTypeData=true"
Example Request URL:

https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/exceptionTypes?
        languageId=en&activeOnly=true&includeExceptionTypeData=true
Example JSON Response Body:
[
  {
    "Id": 10,
    "Description": "Failed To Logon",
    "ActivationSetting": 600,
    "AttentionValue": 1,
    "Active": true,
    "ExceptionTypeData": [
      {
        "Sequence": 0,
        "Label": "Minutes Late",
        "Active": true,
        "IsDelayValue": true
      }
    ]
  },
  {
    "Id": 20,
    "Description": "Activity Duration Exceeded",
    "ActivationSetting": 10,
    "AttentionValue": 10,
    "Active": true,
    "ExceptionTypeData": [
      {
        "Sequence": 0,
        "Label": "Minutes Late",
        "Active": true,
        "IsDelayValue": true
      }
    ]
  },
  {
    "Id": 30,
    "Description": "Travel Delayed",
    "ActivationSetting": 10,
    "AttentionValue": 10,
    "Active": true,
    "ExceptionTypeData": [
      {
        "Sequence": 0,
        "Label": "Minutes Late",
        "Active": true,
        "IsDelayValue": true
      }
    ]
  },
  {
    "Id": 40,
    "Description": "Unable to Complete Activity",
    "ActivationSetting": null,
    "AttentionValue": 50,
    "Active": true,
    "ExceptionTypeData": []
  },
  {
    "Id": 50,
    "Description": "Planned Activity in Jeopardy",
    "ActivationSetting": 0,
    "AttentionValue": 50,
    "Active": true,
    "ExceptionTypeData": [
      {
        "Sequence": 0,
        "Label": "Minutes Late",
        "Active": true,
        "IsDelayValue": false
      }
    ]
  }
]

Simulation Endpoints

Investigations

GET

Get a list of all available investigations for the requesting user.

Response elements:

  • InvestigationResponse containing a list of investigation Ids with their description.

Example Curl request:

curl -X GET
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Accept: application/json"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations

POST

Create a new basic investigation without loading any demand or resourcing data.

Parameters:

  • description - A description for the investigation.

Response elements:

  • NumericIDResponse:
    • Id - The identifier of the created investigation.

Example Curl request:

curl -X POST
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Accept: application/json"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations?
        description=MyInvestigation"
Example Request URL:

https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations?
    description=MyInvestigation
GET

Retrieve all investigation data for the specified investigation.

Parameters:

  • id - The unique identifier of the investigation to retrieve.

Response elements:

  • Simulation data in the schema data format. See the 'Schema Definition' section for more information. This will be compressed if 'Accept-Encoding: gzip' is included in the request headers.

Example Curl request:

curl -X GET
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Accept: application/json"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1

Example JSON Response Body:

{
  "SimulationData": {
    "SIM_Demand": [
      {
        "id": 3,
        "description": "Demand",
        "sim_investigation_id": 2,
        "sim_input_data_id": 8,
        "activity_count": 1,
        "schedule_datetime": "2020-02-24T00:00:00Z",
        "schedule_days": 3,
        "creation_method": "Simulation"
      }
    ],
    "SIM_Filter_Option": [
      {
        "sim_investigation_id": 2,
        "filter_type": "Activity_Type",
        "option_id": "Default"
      },
      {
        "sim_investigation_id": 2,
        "filter_type": "Primary_SLA_Type",
        "option_id": "Normal"
      },
      {
        "sim_investigation_id": 2,
        "filter_type": "Region",
        "option_id": "R2Region"
      },
      {
        "sim_investigation_id": 2,
        "filter_type": "Skill",
        "option_id": "Skill1"
      }
    ],
    "SIM_Inv_Run": [
      {
        "sim_investigation_id": 2,
        "id": 5,
        "description": "testrun",
        "test_datetime": "2026-03-03T03:53:31Z",
        "test_type": "manual",
        "sim_demand_id": 3,
        "dse_version": "6.17.0.3",
        "sim_resourcing_id": 5,
        "maximum_run_time": "PT1H",
        "minimum_quality": 95,
        "allow_early_finish": false,
        "current_status": 60
      }
    ],
    "SIM_Inv_Run_Statistic": [
      {
        "id": "11e1c7cb2c924813bf69802d2e335513",
        "sim_investigation_run_id": 5,
        "statistic_type_id": 43,
        "statistic_sample_id": "0",
        "statistic_value": 0,
        "sim_investigation_id": 2
      },
      {
        "id": "38b3f1fd0d1f4a76bbba9371e52f574c",
        "sim_investigation_run_id": 5,
        "statistic_type_id": 4,
        "statistic_sample_id": "0",
        "statistic_value": 2,
        "sim_investigation_id": 2
      },
      {
        "id": "57f02749dd754da4bc37d25cd4065de9",
        "sim_investigation_run_id": 5,
        "statistic_type_id": 54,
        "statistic_sample_id": "0",
        "statistic_value": 0,
        "sim_investigation_id": 2
      },
      {
        "id": "5e6d6578366341bc81f56f627564b664",
        "sim_investigation_run_id": 5,
        "statistic_type_id": 5,
        "statistic_sample_id": "0",
        "statistic_value": 1,
        "sim_investigation_id": 2
      },
      {
        "id": "668c28a0a2a04f0397f61c2d45a2f47a",
        "sim_investigation_run_id": 5,
        "statistic_type_id": 51,
        "statistic_sample_id": "0",
        "statistic_value": 97,
        "sim_investigation_id": 2
      },
      {
        "id": "78e88adb61c945b9b0aea103a04c5201",
        "sim_investigation_run_id": 5,
        "statistic_type_id": 50,
        "statistic_sample_id": "0",
        "statistic_value": 999.90625,
        "sim_investigation_id": 2
      },
      {
        "id": "7ca266cab9364f41b5ff4ade2943b4d8",
        "sim_investigation_run_id": 5,
        "statistic_type_id": 32,
        "statistic_sample_id": "0",
        "statistic_value": 0,
        "sim_investigation_id": 2
      },
      {
        "id": "93bd34e347174d19ab2740e0879103b9",
        "sim_investigation_run_id": 5,
        "statistic_type_id": 45,
        "statistic_sample_id": "0",
        "statistic_value": 0,
        "sim_investigation_id": 2
      },
      {
        "id": "a0b86048f7a4425192df6807ea58d649",
        "sim_investigation_run_id": 5,
        "statistic_type_id": 33,
        "statistic_sample_id": "0",
        "statistic_value": 100,
        "sim_investigation_id": 2
      },
      {
        "id": "a87fa13431834431a7f75674b634d1fd",
        "sim_investigation_run_id": 5,
        "statistic_type_id": 44,
        "statistic_sample_id": "0",
        "statistic_value": 0,
        "sim_investigation_id": 2
      },
      {
        "id": "c26bbcc3975b41089cf246ffaf986441",
        "sim_investigation_run_id": 5,
        "statistic_type_id": 30,
        "statistic_sample_id": "0",
        "statistic_value": 1,
        "sim_investigation_id": 2
      },
      {
        "id": "f94a524dc42c4130baf85f7c935947dc",
        "sim_investigation_run_id": 5,
        "statistic_type_id": 31,
        "statistic_sample_id": "0",
        "statistic_value": 0,
        "sim_investigation_id": 2
      }
    ],
    "SIM_Investigation": [
      {
        "id": 2,
        "description": "inv1",
        "user_id": "Administrator"
      }
    ],
    "SIM_Resourcing": [
      {
        "id": 5,
        "description": "ResourceSkillAndRegion",
        "sim_investigation_id": 2,
        "sim_input_data_id": 7,
        "is_auto": false,
        "resource_count": 2,
        "schedule_datetime": "2020-02-24T00:00:00Z",
        "schedule_days": 3,
        "creation_method": "DataSet"
      }
    ],
    "SIM_Target": [
      {
        "id": 2,
        "statistic_type_id": 33,
        "target_operator": 3,
        "sim_investigation_id": 2,
        "is_active": true
      },
      {
        "id": 3,
        "statistic_type_id": 32,
        "target_operator": 3,
        "sim_investigation_id": 2,
        "is_active": true
      }
    ]
  }
}
Example XML Response Body:

<?xml version="1.0" encoding="UTF-8" ?>
<SimulationData>
    <SIM_Demand>
        <id>3</id>
        <description>Demand</description>
        <sim_investigation_id>2</sim_investigation_id>
        <sim_input_data_id>8</sim_input_data_id>
        <activity_count>1</activity_count>
        <schedule_datetime>2020-02-24T00:00:00Z</schedule_datetime>
        <schedule_days>3</schedule_days>
        <creation_method>Simulation</creation_method>
    </SIM_Demand>
    <SIM_Filter_Option>
        <sim_investigation_id>2</sim_investigation_id>
        <filter_type>Activity_Type</filter_type>
        <option_id>Default</option_id>
    </SIM_Filter_Option>
    <SIM_Filter_Option>
        <sim_investigation_id>2</sim_investigation_id>
        <filter_type>Primary_SLA_Type</filter_type>
        <option_id>Normal</option_id>
    </SIM_Filter_Option>
    <SIM_Filter_Option>
        <sim_investigation_id>2</sim_investigation_id>
        <filter_type>Region</filter_type>
        <option_id>R2Region</option_id>
    </SIM_Filter_Option>
    <SIM_Filter_Option>
        <sim_investigation_id>2</sim_investigation_id>
        <filter_type>Skill</filter_type>
        <option_id>Skill1</option_id>
    </SIM_Filter_Option>
    <SIM_Inv_Run>
        <sim_investigation_id>2</sim_investigation_id>
        <id>5</id>
        <description>testrun</description>
        <test_datetime>2026-03-03T03:53:31Z</test_datetime>
        <test_type>manual</test_type>
        <sim_demand_id>3</sim_demand_id>
        <dse_version>6.17.0.3</dse_version>
        <sim_resourcing_id>5</sim_resourcing_id>
        <maximum_run_time>PT1H</maximum_run_time>
        <minimum_quality>95</minimum_quality>
        <allow_early_finish>false</allow_early_finish>
        <current_status>60</current_status>
    </SIM_Inv_Run>
    <SIM_Inv_Run_Statistic>
        <id>11e1c7cb2c924813bf69802d2e335513</id>
        <sim_investigation_run_id>5</sim_investigation_run_id>
        <statistic_type_id>43</statistic_type_id>
        <statistic_sample_id>0</statistic_sample_id>
        <statistic_value>0</statistic_value>
        <sim_investigation_id>2</sim_investigation_id>
    </SIM_Inv_Run_Statistic>
    <SIM_Inv_Run_Statistic>
        <id>38b3f1fd0d1f4a76bbba9371e52f574c</id>
        <sim_investigation_run_id>5</sim_investigation_run_id>
        <statistic_type_id>4</statistic_type_id>
        <statistic_sample_id>0</statistic_sample_id>
        <statistic_value>2</statistic_value>
        <sim_investigation_id>2</sim_investigation_id>
    </SIM_Inv_Run_Statistic>
    <SIM_Inv_Run_Statistic>
        <id>57f02749dd754da4bc37d25cd4065de9</id>
        <sim_investigation_run_id>5</sim_investigation_run_id>
        <statistic_type_id>54</statistic_type_id>
        <statistic_sample_id>0</statistic_sample_id>
        <statistic_value>0</statistic_value>
        <sim_investigation_id>2</sim_investigation_id>
    </SIM_Inv_Run_Statistic>
    <SIM_Inv_Run_Statistic>
        <id>5e6d6578366341bc81f56f627564b664</id>
        <sim_investigation_run_id>5</sim_investigation_run_id>
        <statistic_type_id>5</statistic_type_id>
        <statistic_sample_id>0</statistic_sample_id>
        <statistic_value>1</statistic_value>
        <sim_investigation_id>2</sim_investigation_id>
    </SIM_Inv_Run_Statistic>
    <SIM_Inv_Run_Statistic>
        <id>668c28a0a2a04f0397f61c2d45a2f47a</id>
        <sim_investigation_run_id>5</sim_investigation_run_id>
        <statistic_type_id>51</statistic_type_id>
        <statistic_sample_id>0</statistic_sample_id>
        <statistic_value>97</statistic_value>
        <sim_investigation_id>2</sim_investigation_id>
    </SIM_Inv_Run_Statistic>
    <SIM_Inv_Run_Statistic>
        <id>78e88adb61c945b9b0aea103a04c5201</id>
        <sim_investigation_run_id>5</sim_investigation_run_id>
        <statistic_type_id>50</statistic_type_id>
        <statistic_sample_id>0</statistic_sample_id>
        <statistic_value>999.90625</statistic_value>
        <sim_investigation_id>2</sim_investigation_id>
    </SIM_Inv_Run_Statistic>
    <SIM_Inv_Run_Statistic>
        <id>7ca266cab9364f41b5ff4ade2943b4d8</id>
        <sim_investigation_run_id>5</sim_investigation_run_id>
        <statistic_type_id>32</statistic_type_id>
        <statistic_sample_id>0</statistic_sample_id>
        <statistic_value>0</statistic_value>
        <sim_investigation_id>2</sim_investigation_id>
    </SIM_Inv_Run_Statistic>
    <SIM_Inv_Run_Statistic>
        <id>93bd34e347174d19ab2740e0879103b9</id>
        <sim_investigation_run_id>5</sim_investigation_run_id>
        <statistic_type_id>45</statistic_type_id>
        <statistic_sample_id>0</statistic_sample_id>
        <statistic_value>0</statistic_value>
        <sim_investigation_id>2</sim_investigation_id>
    </SIM_Inv_Run_Statistic>
    <SIM_Inv_Run_Statistic>
        <id>a0b86048f7a4425192df6807ea58d649</id>
        <sim_investigation_run_id>5</sim_investigation_run_id>
        <statistic_type_id>33</statistic_type_id>
        <statistic_sample_id>0</statistic_sample_id>
        <statistic_value>100</statistic_value>
        <sim_investigation_id>2</sim_investigation_id>
    </SIM_Inv_Run_Statistic>
    <SIM_Inv_Run_Statistic>
        <id>a87fa13431834431a7f75674b634d1fd</id>
        <sim_investigation_run_id>5</sim_investigation_run_id>
        <statistic_type_id>44</statistic_type_id>
        <statistic_sample_id>0</statistic_sample_id>
        <statistic_value>0</statistic_value>
        <sim_investigation_id>2</sim_investigation_id>
    </SIM_Inv_Run_Statistic>
    <SIM_Inv_Run_Statistic>
        <id>c26bbcc3975b41089cf246ffaf986441</id>
        <sim_investigation_run_id>5</sim_investigation_run_id>
        <statistic_type_id>30</statistic_type_id>
        <statistic_sample_id>0</statistic_sample_id>
        <statistic_value>1</statistic_value>
        <sim_investigation_id>2</sim_investigation_id>
    </SIM_Inv_Run_Statistic>
    <SIM_Inv_Run_Statistic>
        <id>f94a524dc42c4130baf85f7c935947dc</id>
        <sim_investigation_run_id>5</sim_investigation_run_id>
        <statistic_type_id>31</statistic_type_id>
        <statistic_sample_id>0</statistic_sample_id>
        <statistic_value>0</statistic_value>
        <sim_investigation_id>2</sim_investigation_id>
    </SIM_Inv_Run_Statistic>
    <SIM_Investigation>
        <id>2</id>
        <description>inv1</description>
        <user_id>Administrator</user_id>
    </SIM_Investigation>
    <SIM_Resourcing>
        <id>5</id>
        <description>ResourceSkillAndRegion</description>
        <sim_investigation_id>2</sim_investigation_id>
        <sim_input_data_id>7</sim_input_data_id>
        <is_auto>false</is_auto>
        <resource_count>2</resource_count>
        <schedule_datetime>2020-02-24T00:00:00Z</schedule_datetime>
        <schedule_days>3</schedule_days>
        <creation_method>DataSet</creation_method>
    </SIM_Resourcing>
    <SIM_Target>
        <id>2</id>
        <statistic_type_id>33</statistic_type_id>
        <target_operator>3</target_operator>
        <sim_investigation_id>2</sim_investigation_id>
        <is_active>true</is_active>
    </SIM_Target>
    <SIM_Target>
        <id>3</id>
        <statistic_type_id>32</statistic_type_id>
        <target_operator>3</target_operator>
        <sim_investigation_id>2</sim_investigation_id>
        <is_active>true</is_active>
    </SIM_Target>
</SimulationData>
DELETE

Delete an investigation.

Parameters:

  • id - The unique identifier of the investigation to delete.

Response elements:

  • No content on success.

Example Curl request:

curl -X DELETE
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1

Investigation Export

GET

Export full investigation data as a byte array.

Parameters:

  • id - The unique identifier of the investigation to export.

Response elements:

  • Investigation export data as application/octet-stream.

Example Curl request:

curl -X GET
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --output investigation_export.dat
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/export"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/export

Investigation Import

POST

Import investigation data into a new investigation.

Note

Request size limit is disabled for this endpoint to support large file uploads.

Parameters:

  • description - A description for the investigation.

Message Body:

  • Binary investigation data.

Response elements:

  • NumericIDResponse:
    • Id - The identifier of the created investigation.

Example Curl request:

curl -X POST
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Accept: application/json"
    --data-binary @investigation_data.sim
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/import?
        description=Imported%20Investigation"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/import?
    description=Imported Investigation

Investigation Raw Data

GET

Get the raw data for a specific demand or resourcing.

Parameters:

  • id - The unique identifier of the investigation.
  • dataId - The unique identifier for a specific data to retrieve within the specified investigation.

Response elements:

  • Scheduling data in the schema data format. See the 'Schema Definition' section for more information. This will be compressed if 'Accept-Encoding: gzip' is included in the request headers.

Example Curl request:

curl -X GET
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Accept: application/json"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/2/data/8"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/2/data/8

Example JSON Response Body for demand data:

{
  "ScheduleData": {
    "Activity": [
      {
        "id": "A4",
        "activity_class_id": "CALL",
        "activity_type_id": "Default",
        "location_id": "R2",
        "priority": 1,
        "split_allowed": false,
        "do_on_site": false,
        "base_value": 1000,
        "duration": "PT6H"
      }
    ],
    "Activity_SLA": [
      {
        "sla_type_id": "Normal",
        "activity_id": "A4",
        "datetime_start": "2020-02-24T00:00:00Z",
        "datetime_end": "2020-02-28T00:00:00Z",
        "priority": 1,
        "start_based": true
      }
    ],
    "Activity_Status": [
      {
        "activity_id": "A4",
        "status_id": 0,
        "date_time_status": "2020-02-24T00:00:00Z",
        "visit_id": 1,
        "fixed": false,
        "date_time_stamp": "2020-02-24T00:00:00Z"
      }
    ],
    "Activity_Type": [
      {
        "id": "Default",
        "base_value": 1000,
        "split_allowed": false,
        "min_split": "PT1H",
        "interrupt": false,
        "cost_of_split": 0,
        "priority": 1,
        "on_location_duration_factor": 1,
        "remote_fulfillment": false
      }
    ],
    "Input_Reference": [
      {
        "datetime": "2020-02-24T00:00:00Z",
        "id": "resource skill and region test",
        "input_type": "LOAD",
        "organisation_id": 1,
        "dataset_id": "ResourceSkillAndRegion",
        "schedule_data": "CONTINUOUS",
        "load_status": 0,
        "duration": "P3D",
        "process_type": "DYNAMIC",
        "schedule_end_datetime": "2020-02-27T00:00:00Z",
        "input_datetime": "2026-02-26T16:25:00.453Z",
        "enacting_app_type_id": "SIM",
        "enacting_app_instance_id": "NAPRCA2",
        "row_count": 29,
        "object_deletion_count": 0
      }
    ],
    "Location": [
      {
        "id": "R2",
        "latitude": 51.3119511460491,
        "longitude": -2.248687073527327
      }
    ],
    "Location_Region": [
      {
        "region_id": "R2Region",
        "location_id": "R2"
      }
    ],
    "Region": [
      {
        "id": "R2Region"
      }
    ],
    "Skill": [
      {
        "id": "Skill1"
      }
    ],
    "SLA_Type": [
      {
        "id": "Normal",
        "revenue": 1000,
        "penalty": 1000,
        "cost": 0,
        "early_sla_benefit": 0,
        "mechanism_type": "POWER_BASED",
        "end_proportion": 0.999,
        "curve_shape": 1,
        "activity_ageing_factor": 1,
        "start_proportion": 1,
        "generate_jeopardy_exceptions": true
      }
    ]
  }
}
Example XML Response Body for demand data:

<?xml version="1.0" encoding="UTF-8" ?>
<ScheduleData>
    <Activity>
        <id>A4</id>
        <activity_class_id>CALL</activity_class_id>
        <activity_type_id>Default</activity_type_id>
        <location_id>R2</location_id>
        <priority>1</priority>
        <split_allowed>false</split_allowed>
        <do_on_site>false</do_on_site>
        <base_value>1000</base_value>
        <duration>PT6H</duration>
    </Activity>
    <Activity_SLA>
        <sla_type_id>Normal</sla_type_id>
        <activity_id>A4</activity_id>
        <datetime_start>2020-02-24T00:00:00Z</datetime_start>
        <datetime_end>2020-02-28T00:00:00Z</datetime_end>
        <priority>1</priority>
        <start_based>true</start_based>
    </Activity_SLA>
    <Activity_Status>
        <activity_id>A4</activity_id>
        <status_id>0</status_id>
        <date_time_status>2020-02-24T00:00:00Z</date_time_status>
        <visit_id>1</visit_id>
        <fixed>false</fixed>
        <date_time_stamp>2020-02-24T00:00:00Z</date_time_stamp>
    </Activity_Status>
    <Activity_Type>
        <id>Default</id>
        <base_value>1000</base_value>
        <split_allowed>false</split_allowed>
        <min_split>PT1H</min_split>
        <interrupt>false</interrupt>
        <cost_of_split>0</cost_of_split>
        <priority>1</priority>
        <on_location_duration_factor>1</on_location_duration_factor>
        <remote_fulfillment>false</remote_fulfillment>
    </Activity_Type>
    <Input_Reference>
        <datetime>2020-02-24T00:00:00Z</datetime>
        <id>resource skill and region test</id>
        <input_type>LOAD</input_type>
        <organisation_id>1</organisation_id>
        <dataset_id>ResourceSkillAndRegion</dataset_id>
        <schedule_data>CONTINUOUS</schedule_data>
        <load_status>0</load_status>
        <duration>P3D</duration>
        <process_type>DYNAMIC</process_type>
        <schedule_end_datetime>2020-02-27T00:00:00Z</schedule_end_datetime>
        <input_datetime>2026-02-26T16:25:00.453Z</input_datetime>
        <enacting_app_type_id>SIM</enacting_app_type_id>
        <enacting_app_instance_id>NAPRCA2</enacting_app_instance_id>
        <row_count>29</row_count>
        <object_deletion_count>0</object_deletion_count>
    </Input_Reference>
    <Location>
        <id>R2</id>
        <latitude>51.3119511460491</latitude>
        <longitude>-2.248687073527327</longitude>
    </Location>
    <Location_Region>
        <region_id>R2Region</region_id>
        <location_id>R2</location_id>
    </Location_Region>
    <Region>
        <id>R2Region</id>
    </Region>
    <Skill>
        <id>Skill1</id>
    </Skill>
    <SLA_Type>
        <id>Normal</id>
        <revenue>1000</revenue>
        <penalty>1000</penalty>
        <cost>0</cost>
        <early_sla_benefit>0</early_sla_benefit>
        <mechanism_type>POWER_BASED</mechanism_type>
        <end_proportion>0.999</end_proportion>
        <curve_shape>1</curve_shape>
        <activity_ageing_factor>1</activity_ageing_factor>
        <start_proportion>1</start_proportion>
        <generate_jeopardy_exceptions>true</generate_jeopardy_exceptions>
    </SLA_Type>
</ScheduleData>
Example JSON Response Body for resourcing data:

{
  "ScheduleData": {
    "Input_Reference": [
      {
        "datetime": "2020-02-24T00:00:00Z",
        "id": "resource skill and region test",
        "input_type": "LOAD",
        "organisation_id": 1,
        "dataset_id": "ResourceSkillAndRegion",
        "schedule_data": "CONTINUOUS",
        "load_status": 0,
        "duration": "P3D",
        "process_type": "DYNAMIC",
        "schedule_end_datetime": "2020-02-27T00:00:00Z",
        "input_datetime": "2026-02-26T16:25:00.453Z",
        "enacting_app_type_id": "SIM",
        "enacting_app_instance_id": "NAPRCA2",
        "row_count": 29,
        "object_deletion_count": 0
      }
    ],
    "Location": [
      {
        "id": "R1",
        "latitude": 51.5411115076334,
        "longitude": -2.248687073527327
      },
      {
        "id": "R2",
        "latitude": 51.3119511460491,
        "longitude": -2.248687073527327
      }
    ],
    "Location_Region": [
      {
        "region_id": "R2Region",
        "location_id": "R2"
      }
    ],
    "Region": [
      {
        "id": "R2Region"
      }
    ],
    "Resource_Region": [
      {
        "region_id": "R2Region",
        "resource_id": "R2",
        "override_priority": 1
      }
    ],
    "Resource_Skill": [
      {
        "skill_id": "Skill1",
        "resource_id": "R1"
      }
    ],
    "Resource_Type": [
      {
        "id": "Default",
        "cost_ph": 20,
        "cost_phot": 30,
        "cost_km": 0.25,
        "utilisation": 100,
        "out_of_region_multiplier": 0,
        "resource_class_id": "STANDARD"
      }
    ],
    "Resource_Type_Skill": [
      {
        "resource_type_id": "Skill1",
        "skill_id": "Skill1"
      }
    ],
    "Resources": [
      {
        "id": "R1",
        "location_id_start": "R1",
        "location_id_end": "R1",
        "resource_type_id": "Default",
        "max_travel": "PT4H",
        "travel_to": "PT0S",
        "travel_from": "PT0S",
        "cost_ph": 0,
        "cost_km": 0
      },
      {
        "id": "R2",
        "location_id_start": "R2",
        "location_id_end": "R2",
        "resource_type_id": "Default",
        "max_travel": "PT4H",
        "travel_to": "PT0S",
        "travel_from": "PT0S",
        "cost_ph": 0,
        "cost_km": 0
      }
    ],
    "Shift": [
      {
        "id": "R1_S1",
        "resource_id": "R1",
        "start_datetime": "2020-02-24T09:00:00Z",
        "end_datetime": "2020-02-24T17:00:00Z",
        "actual": true
      },
      {
        "id": "R2_S1",
        "resource_id": "R2",
        "start_datetime": "2020-02-24T09:00:00Z",
        "end_datetime": "2020-02-24T17:00:00Z",
        "actual": true
      }
    ],
    "Skill": [
      {
        "id": "Skill1"
      }
    ]
  }
}
Example XML Response Body for resourcing data:
<?xml version="1.0" encoding="UTF-8" ?>
<ScheduleData>
    <Input_Reference>
        <datetime>2020-02-24T00:00:00Z</datetime>
        <id>resource skill and region test</id>
        <input_type>LOAD</input_type>
        <organisation_id>1</organisation_id>
        <dataset_id>ResourceSkillAndRegion</dataset_id>
        <schedule_data>CONTINUOUS</schedule_data>
        <load_status>0</load_status>
        <duration>P3D</duration>
        <process_type>DYNAMIC</process_type>
        <schedule_end_datetime>2020-02-27T00:00:00Z</schedule_end_datetime>
        <input_datetime>2026-02-26T16:25:00.453Z</input_datetime>
        <enacting_app_type_id>SIM</enacting_app_type_id>
        <enacting_app_instance_id>NAPRCA2</enacting_app_instance_id>
        <row_count>29</row_count>
        <object_deletion_count>0</object_deletion_count>
    </Input_Reference>
    <Location>
        <id>R1</id>
        <latitude>51.5411115076334</latitude>
        <longitude>-2.248687073527327</longitude>
    </Location>
    <Location>
        <id>R2</id>
        <latitude>51.3119511460491</latitude>
        <longitude>-2.248687073527327</longitude>
    </Location>
    <Location_Region>
        <region_id>R2Region</region_id>
        <location_id>R2</location_id>
    </Location_Region>
    <Region>
        <id>R2Region</id>
    </Region>
    <Resource_Region>
        <region_id>R2Region</region_id>
        <resource_id>R2</resource_id>
        <override_priority>1</override_priority>
    </Resource_Region>
    <Resource_Skill>
        <skill_id>Skill1</skill_id>
        <resource_id>R1</resource_id>
    </Resource_Skill>
    <Resource_Type>
        <id>Default</id>
        <cost_ph>20</cost_ph>
        <cost_phot>30</cost_phot>
        <cost_km>0.25</cost_km>
        <utilisation>100</utilisation>
        <out_of_region_multiplier>0</out_of_region_multiplier>
        <resource_class_id>STANDARD</resource_class_id>
    </Resource_Type>
    <Resource_Type_Skill>
        <resource_type_id>Skill1</resource_type_id>
        <skill_id>Skill1</skill_id>
    </Resource_Type_Skill>
    <Resources>
        <id>R1</id>
        <location_id_start>R1</location_id_start>
        <location_id_end>R1</location_id_end>
        <resource_type_id>Default</resource_type_id>
        <max_travel>PT4H</max_travel>
        <travel_to>PT0S</travel_to>
        <travel_from>PT0S</travel_from>
        <cost_ph>0</cost_ph>
        <cost_km>0</cost_km>
    </Resources>
    <Resources>
        <id>R2</id>
        <location_id_start>R2</location_id_start>
        <location_id_end>R2</location_id_end>
        <resource_type_id>Default</resource_type_id>
        <max_travel>PT4H</max_travel>
        <travel_to>PT0S</travel_to>
        <travel_from>PT0S</travel_from>
        <cost_ph>0</cost_ph>
        <cost_km>0</cost_km>
    </Resources>
    <Shift>
        <id>R1_S1</id>
        <resource_id>R1</resource_id>
        <start_datetime>2020-02-24T09:00:00Z</start_datetime>
        <end_datetime>2020-02-24T17:00:00Z</end_datetime>
        <actual>true</actual>
    </Shift>
    <Shift>
        <id>R2_S1</id>
        <resource_id>R2</resource_id>
        <start_datetime>2020-02-24T09:00:00Z</start_datetime>
        <end_datetime>2020-02-24T17:00:00Z</end_datetime>
        <actual>true</actual>
    </Shift>
    <Skill>
        <id>Skill1</id>
    </Skill>
</ScheduleData>

Demand from Dataset

POST

Create new demand data from an active scheduling dataset.

Parameters:

  • id - The unique identifier of the investigation.
  • description - Description for the new demand.
  • datasetId - The id of the dataset to load (should be an active scheduling dataset).
  • resetDynamicStatuses (default false) - If true, the status of activities will be reset to the start of day state.

Response elements:

  • NumericIDResponse:
    • Id - The identifier of the created demand.

Example Curl request:

curl -X POST
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Accept: application/json"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/demand/dataset?
        description=DemandFromDefault&
        datasetId=Default&
        resetDynamicStatuses=false"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/demand/dataset?
    description=DemandFromDefault&
    datasetId=Default&
    resetDynamicStatuses=false

Demand Direct

POST

Create new demand data from data contained in the request body.

Parameters:

  • id - The unique identifier of the investigation.
  • description - Description for the new demand.
  • resetDynamicStatuses (default false) - If true, the status of activities will be reset to the start of day state.

Message Body:

  • The UTF8 encoded scheduling data JSON or XML in the schema data format.

Response elements:

  • NumericIDResponse:
    • Id - The identifier of the created demand.

Example Curl request for JSON Message Body:

curl -X POST
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Content-Type: application/json"
    --header "Accept: application/json"
    --data "ScheduleData element"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/demand/direct?
        description=Direct%20Demand&
        resetDynamicStatuses=false"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/demand/direct?
    description=Direct Demand&
    resetDynamicStatuses=false

Demand Scenario

POST

Create new demand data by adjusting existing demand data.

Parameters:

  • id - The unique identifier of the investigation.
  • demandId - The unique identifier of the demand to modify.
  • description - Description for the new demand.
  • changeAmount - The amount to change the data by. A negative value will remove data.
  • isPercentage - If true, the change amount will be applied as a percentage of the existing total.
  • focus (optional) - The focus to apply when modifying the data. (e.g. Activity_Type=Default). Focuses can be combined with & and | operators, and brackets () can be used to create child focus groups. Available FilterTypes: Activity_Type, Customer, Contract, Service_Level, Primary_SLA_Type, Region, Skill.
  • summary (optional) - Optional summary of the action.

Response elements:

  • NumericIDResponse:
    • Id - The identifier of the created demand.

Example Curl request:

curl -X POST
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Accept: application/json"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/demand/5/scenario?
        description=Increased%20Demand&
        changeAmount=10&
        isPercentage=true&
        focus=Region=North"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/demand/5/scenario?
    description=Increased Demand&
    changeAmount=10&
    isPercentage=true&
    focus=Region=North

Combine Demands

POST

Combines multiple demands into a single demand.

Parameters:

  • id - The unique identifier of the investigation.
  • demandIds - Comma-separated list of demand IDs to combine (minimum 2 required).
  • description - Description for the combined demand.
  • changeSummary (optional) - Optional summary of the action.
  • allowDuplicates (default false) - Whether to allow duplicate activities when combining.

Response elements:

  • NumericIDResponse:
    • Id - The identifier of the combined demand.

Example Curl request:

curl -X POST
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Accept: application/json"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/demand/combine?
        demandIds=5,6,7&
        description=Combined%20Demand&
        allowDuplicates=false"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/demand/combine?
    demandIds=5,6,7&
    description=Combined Demand&
    allowDuplicates=false

Delete Demand

DELETE

Delete a specific demand.

Parameters:

  • id - The unique identifier of the investigation.
  • demandId - The unique identifier of the demand.

Response elements:

  • No content on success.

Example Curl request:

curl -X DELETE
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/demand/5"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/demand/5

Resourcing from Dataset

POST

Create new resourcing data from an active scheduling dataset.

Parameters:

  • id - The unique identifier of the investigation.
  • description - Description for the new resourcing.
  • datasetId - The id of the dataset to load (should be an active scheduling dataset).
  • resetDynamicStatuses (default false) - If true, the status of activities will be reset to the start of day state.

Response elements:

  • NumericIDResponse:
    • Id - The identifier of the created resourcing.

Example Curl request:

curl -X POST
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Accept: application/json"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/resourcing/dataset?
        description=Resourcing%20from%20Default&
        datasetId=Default&
        resetDynamicStatuses=false"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/resourcing/dataset?
    description=Resourcing from Default&
    datasetId=Default&
    resetDynamicStatuses=false

Resourcing from Planning

POST

Create new resourcing data from an active planning dataset.

Parameters:

  • id - The unique identifier of the investigation.
  • description - Description for the new resourcing.
  • datasetId - The id of the planning dataset to load.
  • includeResources - If true, loads data with resources and shifts planned in the rota within specified dates; else just loads resource types from planner.
  • planningStartDate - The start date from which to include data (required when includeResources is true).
  • planningEndDate - The end date up to which to include data (required when includeResources is true).

Response elements:

  • NumericIDResponse:
    • Id - The identifier of the created resourcing.

Example Curl request:

curl -X POST
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Accept: application/json"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/resourcing/planning?
        description=Resourcing%20from%20Planning&
        datasetId=PlanningDataset&
        includeResources=true&
        planningStartDate=2024-01-01T00:00:00Z&
        planningEndDate=2024-01-31T23:59:59Z"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/resourcing/planning?
    description=Resourcing from Planning&
    datasetId=PlanningDataset&
    includeResources=true&
    planningStartDate=2024-01-01T00:00:00Z&
    planningEndDate=2024-01-31T23:59:59Z

Resourcing Direct

POST

Create new resourcing data from data contained in the request body.

Parameters:

  • id - The unique identifier of the investigation.
  • description - Description for the new resourcing.
  • resetDynamicStatuses (default false) - If true, the status of activities will be reset to the start of day state.

Message Body:

  • The UTF8 encoded scheduling data JSON or XML in the schema data format.

Response elements:

  • NumericIDResponse:
    • Id - The identifier of the created resourcing.

Example Curl request for JSON Message Body:

curl -X POST
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Content-Type: application/json"
    --header "Accept: application/json"
    --data "ScheduleData element"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/resourcing/direct?
        description=Direct%20Resourcing&
        resetDynamicStatuses=false"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/resourcing/direct?
    description=Direct Resourcing&
    resetDynamicStatuses=false

Combine Resourcings

POST

Combines multiple resourcings into a single resourcing.

Parameters:

  • id - The unique identifier of the investigation.
  • resourcingIds - Comma-separated list of resourcing IDs to combine (minimum 2 required).
  • description - Description for the combined resourcing.
  • changeSummary (optional) - Optional summary of the action.
  • allowDuplicates (default false) - Whether to allow duplicate resources when combining.

Response elements:

  • NumericIDResponse:
    • Id - The identifier of the combined resourcing.

Example Curl request:

curl -X POST
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Accept: application/json"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/resourcing/combine?
        resourcingIds=10,11,12&
        description=Combined%20Resourcing&
        allowDuplicates=false"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/resourcing/combine?
    resourcingIds=10,11,12&
    description=Combined Resourcing&
    allowDuplicates=false

Edit Resourcing

POST

Create a resourcing by editing an existing resourcing.

Parameters:

  • id - The unique identifier of the investigation.
  • resourcingId - The unique identifier of the resourcing being edited.
  • description - Description for the edited resourcing.
  • changeSummary (optional) - A summary of changes made in the edited resourcing.

Message Body:

  • EditResourcingRequest object containing:
    • RemovedResources - Array of resource IDs to remove.
    • AddedResources - Array of ResourceChange objects for new resources.
    • EditedResources - Array of ResourceChange objects for modified resources.

Response elements:

  • NumericIDResponse:
    • Id - The identifier of the new edited resourcing.

Example Curl request for JSON Message Body:

curl -X POST
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Content-Type: application/json"
    --header "Accept: application/json"
    --data "{\"RemovedResources\":[\"RES001\"],\"AddedResources\":[]}"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/resourcing/10/edit?
        description=Edited%20Resourcing&
        changeSummary=Removed%20resource%20RES001"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/resourcing/10/edit?
    description=Edited Resourcing&
    changeSummary=Removed resource RES001

Delete Resourcing

DELETE

Delete a specific resourcing.

Parameters:

  • id - The unique identifier of the investigation.
  • resourcingId - The unique identifier of the resourcing.

Response elements:

  • No content on success.

Example Curl request:

curl -X DELETE
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/resourcing/10"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/resourcing/10

Baseline from Dataset

POST

Add a baseline schedule to the investigation by loading data from an active scheduling dataset.

Parameters:

  • id - The unique identifier of the investigation.
  • description - Description for the new baseline run.
  • datasetId - The id of the dataset to load (should be an active scheduling dataset).

Response elements:

  • NumericIDResponse:
    • Id - The identifier of the created investigation run.

Example Curl request:

curl -X POST
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Accept: application/json"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/baseline/dataset?
        description=Baseline%20Schedule&
        datasetId=Default"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/baseline/dataset?
    description=Baseline Schedule&
    datasetId=Default

Baseline Direct

POST

Add a baseline schedule to the investigation by loading data from data contained in the request body.

Note

Request size limit is disabled for this endpoint to support large file uploads.

Parameters:

  • id - The unique identifier of the investigation.
  • description - Description for the baseline run.

Message Body:

  • The UTF8 encoded scheduling data JSON or XML in the schema data format.

Response elements:

  • NumericIDResponse:
    • Id - The identifier of the created investigation run.

Example Curl request for JSON Message Body:

curl -X POST
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Content-Type: application/json"
    --header "Accept: application/json"
    --data "ScheduleData element"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/baseline/direct?
        description=Baseline%20Schedule"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/baseline/direct?
    description=Baseline Schedule

Test Runs

GET

Get a list of all test run results for the specified investigation.

Parameters:

  • id - The unique identifier of the investigation.

Response elements:

  • InvestigationRunsResponse containing all test runs.

Example Curl request:

curl -X GET
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Accept: application/json"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/test-runs"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/test-runs

Test Run Data

GET

Get results for a specific test run including all related data.

Parameters:

  • id - The unique identifier of the investigation.
  • runId - The unique identifier of the test run.

Response elements:

  • Simulation data containing investigation run data in the schema data format. See the 'Schema Definition' section for more information. This will be compressed if 'Accept-Encoding: gzip' is included in the request headers.

Example Curl request:

curl -X GET
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Accept: application/json"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/test-run/20"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/test-run/20

Example JSON Response Body:

{
  "SimulationData": {
    "SIM_Demand": [
      {
        "id": 3,
        "description": "Demand",
        "sim_investigation_id": 2,
        "sim_input_data_id": 8,
        "activity_count": 1,
        "schedule_datetime": "2020-02-24T00:00:00Z",
        "schedule_days": 3,
        "creation_method": "Simulation"
      }
    ],
    "SIM_Filter_Option": [
      {
        "sim_investigation_id": 2,
        "filter_type": "Activity_Type",
        "option_id": "Default"
      },
      {
        "sim_investigation_id": 2,
        "filter_type": "Primary_SLA_Type",
        "option_id": "Normal"
      },
      {
        "sim_investigation_id": 2,
        "filter_type": "Region",
        "option_id": "R2Region"
      },
      {
        "sim_investigation_id": 2,
        "filter_type": "Skill",
        "option_id": "Skill1"
      }
    ],
    "SIM_Inv_Run": [
      {
        "sim_investigation_id": 2,
        "id": 5,
        "description": "testrun",
        "test_datetime": "2026-03-03T03:53:31Z",
        "test_type": "manual",
        "sim_demand_id": 3,
        "dse_version": "6.17.0.3",
        "sim_resourcing_id": 5,
        "maximum_run_time": "PT1H",
        "minimum_quality": 95,
        "allow_early_finish": false,
        "current_status": 60
      }
    ],
    "SIM_Inv_Run_Statistic": [
      {
        "id": "11e1c7cb2c924813bf69802d2e335513",
        "sim_investigation_run_id": 5,
        "statistic_type_id": 43,
        "statistic_sample_id": "0",
        "statistic_value": 0,
        "sim_investigation_id": 2
      },
      {
        "id": "38b3f1fd0d1f4a76bbba9371e52f574c",
        "sim_investigation_run_id": 5,
        "statistic_type_id": 4,
        "statistic_sample_id": "0",
        "statistic_value": 2,
        "sim_investigation_id": 2
      },
      {
        "id": "57f02749dd754da4bc37d25cd4065de9",
        "sim_investigation_run_id": 5,
        "statistic_type_id": 54,
        "statistic_sample_id": "0",
        "statistic_value": 0,
        "sim_investigation_id": 2
      },
      {
        "id": "5e6d6578366341bc81f56f627564b664",
        "sim_investigation_run_id": 5,
        "statistic_type_id": 5,
        "statistic_sample_id": "0",
        "statistic_value": 1,
        "sim_investigation_id": 2
      },
      {
        "id": "668c28a0a2a04f0397f61c2d45a2f47a",
        "sim_investigation_run_id": 5,
        "statistic_type_id": 51,
        "statistic_sample_id": "0",
        "statistic_value": 97,
        "sim_investigation_id": 2
      },
      {
        "id": "78e88adb61c945b9b0aea103a04c5201",
        "sim_investigation_run_id": 5,
        "statistic_type_id": 50,
        "statistic_sample_id": "0",
        "statistic_value": 999.90625,
        "sim_investigation_id": 2
      },
      {
        "id": "7ca266cab9364f41b5ff4ade2943b4d8",
        "sim_investigation_run_id": 5,
        "statistic_type_id": 32,
        "statistic_sample_id": "0",
        "statistic_value": 0,
        "sim_investigation_id": 2
      },
      {
        "id": "93bd34e347174d19ab2740e0879103b9",
        "sim_investigation_run_id": 5,
        "statistic_type_id": 45,
        "statistic_sample_id": "0",
        "statistic_value": 0,
        "sim_investigation_id": 2
      },
      {
        "id": "a0b86048f7a4425192df6807ea58d649",
        "sim_investigation_run_id": 5,
        "statistic_type_id": 33,
        "statistic_sample_id": "0",
        "statistic_value": 100,
        "sim_investigation_id": 2
      },
      {
        "id": "a87fa13431834431a7f75674b634d1fd",
        "sim_investigation_run_id": 5,
        "statistic_type_id": 44,
        "statistic_sample_id": "0",
        "statistic_value": 0,
        "sim_investigation_id": 2
      },
      {
        "id": "c26bbcc3975b41089cf246ffaf986441",
        "sim_investigation_run_id": 5,
        "statistic_type_id": 30,
        "statistic_sample_id": "0",
        "statistic_value": 1,
        "sim_investigation_id": 2
      },
      {
        "id": "f94a524dc42c4130baf85f7c935947dc",
        "sim_investigation_run_id": 5,
        "statistic_type_id": 31,
        "statistic_sample_id": "0",
        "statistic_value": 0,
        "sim_investigation_id": 2
      }
    ],
    "SIM_Investigation": [
      {
        "id": 2,
        "description": "inv1",
        "user_id": "Administrator"
      }
    ],
    "SIM_Resourcing": [
      {
        "id": 5,
        "description": "ResourceSkillAndRegion",
        "sim_investigation_id": 2,
        "sim_input_data_id": 7,
        "is_auto": false,
        "resource_count": 2,
        "schedule_datetime": "2020-02-24T00:00:00Z",
        "schedule_days": 3,
        "creation_method": "DataSet"
      }
    ],
    "SIM_Target": [
      {
        "id": 2,
        "statistic_type_id": 33,
        "target_operator": 3,
        "sim_investigation_id": 2,
        "is_active": true
      },
      {
        "id": 3,
        "statistic_type_id": 32,
        "target_operator": 3,
        "sim_investigation_id": 2,
        "is_active": true
      }
    ]
  }
}
Example XML Response Body:
<?xml version="1.0" encoding="UTF-8" ?>
<SimulationData>
    <SIM_Demand>
        <id>3</id>
        <description>Demand</description>
        <sim_investigation_id>2</sim_investigation_id>
        <sim_input_data_id>8</sim_input_data_id>
        <activity_count>1</activity_count>
        <schedule_datetime>2020-02-24T00:00:00Z</schedule_datetime>
        <schedule_days>3</schedule_days>
        <creation_method>Simulation</creation_method>
    </SIM_Demand>
    <SIM_Filter_Option>
        <sim_investigation_id>2</sim_investigation_id>
        <filter_type>Activity_Type</filter_type>
        <option_id>Default</option_id>
    </SIM_Filter_Option>
    <SIM_Filter_Option>
        <sim_investigation_id>2</sim_investigation_id>
        <filter_type>Primary_SLA_Type</filter_type>
        <option_id>Normal</option_id>
    </SIM_Filter_Option>
    <SIM_Filter_Option>
        <sim_investigation_id>2</sim_investigation_id>
        <filter_type>Region</filter_type>
        <option_id>R2Region</option_id>
    </SIM_Filter_Option>
    <SIM_Filter_Option>
        <sim_investigation_id>2</sim_investigation_id>
        <filter_type>Skill</filter_type>
        <option_id>Skill1</option_id>
    </SIM_Filter_Option>
    <SIM_Inv_Run>
        <sim_investigation_id>2</sim_investigation_id>
        <id>5</id>
        <description>testrun</description>
        <test_datetime>2026-03-03T03:53:31Z</test_datetime>
        <test_type>manual</test_type>
        <sim_demand_id>3</sim_demand_id>
        <dse_version>6.17.0.3</dse_version>
        <sim_resourcing_id>5</sim_resourcing_id>
        <maximum_run_time>PT1H</maximum_run_time>
        <minimum_quality>95</minimum_quality>
        <allow_early_finish>false</allow_early_finish>
        <current_status>60</current_status>
    </SIM_Inv_Run>
    <SIM_Inv_Run_Statistic>
        <id>11e1c7cb2c924813bf69802d2e335513</id>
        <sim_investigation_run_id>5</sim_investigation_run_id>
        <statistic_type_id>43</statistic_type_id>
        <statistic_sample_id>0</statistic_sample_id>
        <statistic_value>0</statistic_value>
        <sim_investigation_id>2</sim_investigation_id>
    </SIM_Inv_Run_Statistic>
    <SIM_Inv_Run_Statistic>
        <id>38b3f1fd0d1f4a76bbba9371e52f574c</id>
        <sim_investigation_run_id>5</sim_investigation_run_id>
        <statistic_type_id>4</statistic_type_id>
        <statistic_sample_id>0</statistic_sample_id>
        <statistic_value>2</statistic_value>
        <sim_investigation_id>2</sim_investigation_id>
    </SIM_Inv_Run_Statistic>
    <SIM_Inv_Run_Statistic>
        <id>57f02749dd754da4bc37d25cd4065de9</id>
        <sim_investigation_run_id>5</sim_investigation_run_id>
        <statistic_type_id>54</statistic_type_id>
        <statistic_sample_id>0</statistic_sample_id>
        <statistic_value>0</statistic_value>
        <sim_investigation_id>2</sim_investigation_id>
    </SIM_Inv_Run_Statistic>
    <SIM_Inv_Run_Statistic>
        <id>5e6d6578366341bc81f56f627564b664</id>
        <sim_investigation_run_id>5</sim_investigation_run_id>
        <statistic_type_id>5</statistic_type_id>
        <statistic_sample_id>0</statistic_sample_id>
        <statistic_value>1</statistic_value>
        <sim_investigation_id>2</sim_investigation_id>
    </SIM_Inv_Run_Statistic>
    <SIM_Inv_Run_Statistic>
        <id>668c28a0a2a04f0397f61c2d45a2f47a</id>
        <sim_investigation_run_id>5</sim_investigation_run_id>
        <statistic_type_id>51</statistic_type_id>
        <statistic_sample_id>0</statistic_sample_id>
        <statistic_value>97</statistic_value>
        <sim_investigation_id>2</sim_investigation_id>
    </SIM_Inv_Run_Statistic>
    <SIM_Inv_Run_Statistic>
        <id>78e88adb61c945b9b0aea103a04c5201</id>
        <sim_investigation_run_id>5</sim_investigation_run_id>
        <statistic_type_id>50</statistic_type_id>
        <statistic_sample_id>0</statistic_sample_id>
        <statistic_value>999.90625</statistic_value>
        <sim_investigation_id>2</sim_investigation_id>
    </SIM_Inv_Run_Statistic>
    <SIM_Inv_Run_Statistic>
        <id>7ca266cab9364f41b5ff4ade2943b4d8</id>
        <sim_investigation_run_id>5</sim_investigation_run_id>
        <statistic_type_id>32</statistic_type_id>
        <statistic_sample_id>0</statistic_sample_id>
        <statistic_value>0</statistic_value>
        <sim_investigation_id>2</sim_investigation_id>
    </SIM_Inv_Run_Statistic>
    <SIM_Inv_Run_Statistic>
        <id>93bd34e347174d19ab2740e0879103b9</id>
        <sim_investigation_run_id>5</sim_investigation_run_id>
        <statistic_type_id>45</statistic_type_id>
        <statistic_sample_id>0</statistic_sample_id>
        <statistic_value>0</statistic_value>
        <sim_investigation_id>2</sim_investigation_id>
    </SIM_Inv_Run_Statistic>
    <SIM_Inv_Run_Statistic>
        <id>a0b86048f7a4425192df6807ea58d649</id>
        <sim_investigation_run_id>5</sim_investigation_run_id>
        <statistic_type_id>33</statistic_type_id>
        <statistic_sample_id>0</statistic_sample_id>
        <statistic_value>100</statistic_value>
        <sim_investigation_id>2</sim_investigation_id>
    </SIM_Inv_Run_Statistic>
    <SIM_Inv_Run_Statistic>
        <id>a87fa13431834431a7f75674b634d1fd</id>
        <sim_investigation_run_id>5</sim_investigation_run_id>
        <statistic_type_id>44</statistic_type_id>
        <statistic_sample_id>0</statistic_sample_id>
        <statistic_value>0</statistic_value>
        <sim_investigation_id>2</sim_investigation_id>
    </SIM_Inv_Run_Statistic>
    <SIM_Inv_Run_Statistic>
        <id>c26bbcc3975b41089cf246ffaf986441</id>
        <sim_investigation_run_id>5</sim_investigation_run_id>
        <statistic_type_id>30</statistic_type_id>
        <statistic_sample_id>0</statistic_sample_id>
        <statistic_value>1</statistic_value>
        <sim_investigation_id>2</sim_investigation_id>
    </SIM_Inv_Run_Statistic>
    <SIM_Inv_Run_Statistic>
        <id>f94a524dc42c4130baf85f7c935947dc</id>
        <sim_investigation_run_id>5</sim_investigation_run_id>
        <statistic_type_id>31</statistic_type_id>
        <statistic_sample_id>0</statistic_sample_id>
        <statistic_value>0</statistic_value>
        <sim_investigation_id>2</sim_investigation_id>
    </SIM_Inv_Run_Statistic>
    <SIM_Investigation>
        <id>2</id>
        <description>inv1</description>
        <user_id>Administrator</user_id>
    </SIM_Investigation>
    <SIM_Resourcing>
        <id>5</id>
        <description>ResourceSkillAndRegion</description>
        <sim_investigation_id>2</sim_investigation_id>
        <sim_input_data_id>7</sim_input_data_id>
        <is_auto>false</is_auto>
        <resource_count>2</resource_count>
        <schedule_datetime>2020-02-24T00:00:00Z</schedule_datetime>
        <schedule_days>3</schedule_days>
        <creation_method>DataSet</creation_method>
    </SIM_Resourcing>
    <SIM_Target>
        <id>2</id>
        <statistic_type_id>33</statistic_type_id>
        <target_operator>3</target_operator>
        <sim_investigation_id>2</sim_investigation_id>
        <is_active>true</is_active>
    </SIM_Target>
    <SIM_Target>
        <id>3</id>
        <statistic_type_id>32</statistic_type_id>
        <target_operator>3</target_operator>
        <sim_investigation_id>2</sim_investigation_id>
        <is_active>true</is_active>
    </SIM_Target>
</SimulationData>

Test Run Output Data

GET

Get the scheduling data for the test run.

Parameters:

  • id - The unique identifier of the investigation.
  • runId - The unique identifier of the test run.

Response elements:

  • Scheduling data in the schema data format. See the 'Schema Definition' section for more information. This will be compressed if 'Accept-Encoding: gzip' is included in the request headers.

Example Curl request:

curl -X GET
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Accept: application/json"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/test-run/20/data"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/test-run/20/data

Example JSON Response Body:

{
  "ScheduleData": {
    "Activity": [
      {
        "id": "A4",
        "activity_class_id": "CALL",
        "activity_type_id": "Default",
        "location_id": "R2",
        "priority": 1,
        "split_allowed": false,
        "do_on_site": false,
        "base_value": 1000,
        "duration": "PT6H"
      }
    ],
    "Activity_SLA": [
      {
        "sla_type_id": "Normal",
        "activity_id": "A4",
        "datetime_start": "2020-02-24T00:00:00Z",
        "datetime_end": "2020-02-28T00:00:00Z",
        "priority": 1,
        "start_based": true
      }
    ],
    "Activity_Status": [
      {
        "activity_id": "A4",
        "status_id": 0,
        "date_time_status": "2020-02-24T00:00:00Z",
        "visit_id": 1,
        "fixed": false,
        "date_time_stamp": "2020-02-24T00:00:00Z"
      }
    ],
    "Activity_Type": [
      {
        "id": "Default",
        "base_value": 1000,
        "split_allowed": false,
        "min_split": "PT1H",
        "interrupt": false,
        "cost_of_split": 0,
        "priority": 1,
        "on_location_duration_factor": 1,
        "remote_fulfillment": false
      }
    ],
    "Allocation": [
      {
        "activity_id": "A4",
        "resource_id": "R2",
        "visit_id": 1,
        "activity_start": "2020-02-24T09:00:00Z",
        "activity_end": "2020-02-24T15:00:00Z",
        "visit_status": 10,
        "plan_id": 35,
        "visit_type": "CALL",
        "date_time_fixed": false,
        "duration": "PT6H",
        "fixed_resource": false,
        "shift_id": "R2_S1",
        "rank": 1,
        "shift_start_datetime": "2020-02-24T09:00:00Z",
        "same_location": true,
        "allocation_source": 0,
        "location_id": "R2"
      }
    ],
    "Allocation_Data": [
      {
        "activity_id": "A4",
        "visit_id": 1,
        "plan_id": 35,
        "expected_duration": "PT6H",
        "sla_start_time": "2020-02-24T00:00:00Z",
        "sla_jeopardy_time": "2020-02-28T00:00:00Z"
      }
    ],
    "Allocation_Hint": [
      {
        "activity_id": "A4",
        "visit_id": 1,
        "resource_id": "R2",
        "activity_start": "2020-02-24T09:33:16Z"
      }
    ],
    "Broadcast": [
      {
        "id": "b110c66552e447aaa5771b76d33c077c",
        "active": true,
        "broadcast_type_id": "POLLING",
        "plan_type": "COMPLETE",
        "minimum_plan_quality": 95,
        "minimum_step_interval": 1,
        "once_only": true,
        "maximum_wait": "PT1H",
        "allocation_type": 1
      }
    ],
    "Dataset": [
      {
        "organisation_id": 1,
        "id": "5fd726c530004543b9c3cdd5673806ad",
        "description": "(WISE) testrun",
        "dataset_type": "COMPLETE",
        "dataset_class": "WISE",
        "running_state": "RUNNING"
      }
    ],
    "Input_Reference": [
      {
        "datetime": "2020-02-24T00:00:00Z",
        "id": "8fe2a961299a4fa0919f19d7b1edc858",
        "input_type": "LOAD",
        "user_id": "Administrator",
        "organisation_id": 1,
        "dataset_id": "5fd726c530004543b9c3cdd5673806ad",
        "application_type_id": "SML",
        "application_instance_id": "NAPRCA2",
        "schedule_data": "CONTINUOUS",
        "load_status": 0,
        "process_type": "STATIC",
        "schedule_end_datetime": "2020-02-27T00:00:00Z"
      }
    ],
    "Location": [
      {
        "id": "R2",
        "latitude": 51.3119511460491,
        "longitude": -2.248687073527327
      },
      {
        "id": "R1",
        "latitude": 51.5411115076334,
        "longitude": -2.248687073527327
      }
    ],
    "Location_Region": [
      {
        "region_id": "R2Region",
        "location_id": "R2"
      }
    ],
    "Plan": [
      {
        "id": 35,
        "time_taken": "PT1S",
        "plan_type": "COMPLETE",
        "plan_margin": 999.90625,
        "output_datetime": "2026-03-03T03:53:36.83Z",
        "total_allocations": 1,
        "quality": 97,
        "input_reference_internal_id": 35,
        "load_input_ref_internal_id": 35,
        "total_travel_time": "PT0S",
        "total_travel_distance": 0,
        "travel_type": "Lat/Long",
        "schedule_from": "2020-02-24T00:00:00Z",
        "schedule_to": "2020-02-27T00:00:00Z",
        "input_reference_date_time": "2020-02-24T00:00:00Z",
        "input_reference_id": "8fe2a961299a4fa0919f19d7b1edc858",
        "average_travel_time": "PT0S",
        "average_travel_distance": 0,
        "utilisation": 42.857142857142854,
        "total_on_site_time": "PT6H",
        "total_break_time": "PT0S",
        "total_private_time": "PT0S",
        "total_unutilised_time": "PT8H",
        "organisation_id": 1,
        "dataset_id": "5fd726c530004543b9c3cdd5673806ad",
        "broadcast_id": "b110c66552e447aaa5771b76d33c077c",
        "software_version": "6.17.0.3",
        "allocation_type": 1,
        "profile_id": "DEFAULT",
        "load_status": 0,
        "application_type_id": "DSE",
        "application_instance_id": "NAPRCA2",
        "dataset_type": "COMPLETE"
      }
    ],
    "Plan_Resource": [
      {
        "plan_id": 35,
        "resource_id": "R1",
        "resource_margin": 0,
        "average_travel_time": "PT0S",
        "average_travel_distance": 0,
        "total_allocations": 0,
        "utilisation": 0,
        "total_travel_time": "PT0S",
        "total_on_site_time": "PT0S",
        "total_break_time": "PT0S",
        "total_private_time": "PT0S",
        "total_unutilised_time": "PT8H"
      },
      {
        "plan_id": 35,
        "resource_id": "R2",
        "resource_margin": 999.90625,
        "average_travel_time": "PT0S",
        "average_travel_distance": 0,
        "total_allocations": 1,
        "utilisation": 75,
        "total_travel_time": "PT0S",
        "total_on_site_time": "PT6H",
        "total_break_time": "PT0S",
        "total_private_time": "PT0S",
        "total_unutilised_time": "PT2H"
      }
    ],
    "Plan_Route": [
      {
        "plan_id": 35,
        "resource_id": "R1",
        "shift_id": "R1_S1",
        "route_margin": 0,
        "average_travel_time": "PT0S",
        "average_travel_distance": 0,
        "total_allocations": 0,
        "utilisation": 0,
        "shift_start_datetime": "2020-02-24T09:00:00Z",
        "shift_end_datetime": "2020-02-24T17:00:00Z",
        "shift_overtime_end": "2020-02-24T17:00:00Z",
        "total_travel_time": "PT0S",
        "total_on_site_time": "PT0S",
        "total_break_time": "PT0S",
        "total_private_time": "PT0S",
        "total_unutilised_time": "PT8H"
      },
      {
        "plan_id": 35,
        "resource_id": "R2",
        "shift_id": "R2_S1",
        "route_margin": 999.90625,
        "average_travel_time": "PT0S",
        "average_travel_distance": 0,
        "total_allocations": 1,
        "utilisation": 75,
        "shift_start_datetime": "2020-02-24T09:00:00Z",
        "shift_end_datetime": "2020-02-24T17:00:00Z",
        "shift_overtime_end": "2020-02-24T17:00:00Z",
        "total_travel_time": "PT0S",
        "total_on_site_time": "PT6H",
        "total_break_time": "PT0S",
        "total_private_time": "PT0S",
        "total_unutilised_time": "PT2H"
      }
    ],
    "Region": [
      {
        "id": "R2Region"
      }
    ],
    "Resource_Region": [
      {
        "region_id": "R2Region",
        "resource_id": "R2",
        "override_priority": 1
      }
    ],
    "Resource_Skill": [
      {
        "skill_id": "Skill1",
        "resource_id": "R1"
      }
    ],
    "Resource_Type": [
      {
        "id": "Default",
        "cost_ph": 20,
        "cost_phot": 30,
        "cost_km": 0.25,
        "utilisation": 100,
        "out_of_region_multiplier": 0,
        "resource_class_id": "STANDARD"
      }
    ],
    "Resource_Type_Skill": [
      {
        "resource_type_id": "Skill1",
        "skill_id": "Skill1"
      }
    ],
    "Resources": [
      {
        "id": "R1",
        "location_id_start": "R1",
        "location_id_end": "R1",
        "resource_type_id": "Default",
        "max_travel": "PT4H",
        "travel_to": "PT0S",
        "travel_from": "PT0S",
        "cost_ph": 0,
        "cost_km": 0
      },
      {
        "id": "R2",
        "location_id_start": "R2",
        "location_id_end": "R2",
        "resource_type_id": "Default",
        "max_travel": "PT4H",
        "travel_to": "PT0S",
        "travel_from": "PT0S",
        "cost_ph": 0,
        "cost_km": 0
      }
    ],
    "Schedule_Exception": [
      {
        "id": "1df3762da5f63a0df4c2884729f486fb",
        "schedule_exception_type_id": 220,
        "plan_id": 35,
        "resource_id": "R1",
        "datetime_generated": "2020-02-24T00:00:00Z"
      }
    ],
    "Shift": [
      {
        "id": "R1_S1",
        "resource_id": "R1",
        "start_datetime": "2020-02-24T09:00:00Z",
        "end_datetime": "2020-02-24T17:00:00Z",
        "actual": true
      },
      {
        "id": "R2_S1",
        "resource_id": "R2",
        "start_datetime": "2020-02-24T09:00:00Z",
        "end_datetime": "2020-02-24T17:00:00Z",
        "actual": true
      }
    ],
    "Skill": [
      {
        "id": "Skill1"
      }
    ],
    "SLA_Type": [
      {
        "id": "Normal",
        "revenue": 1000,
        "penalty": 1000,
        "cost": 0,
        "early_sla_benefit": 0,
        "mechanism_type": "POWER_BASED",
        "end_proportion": 0.999,
        "curve_shape": 1,
        "activity_ageing_factor": 1,
        "start_proportion": 1,
        "generate_jeopardy_exceptions": true
      }
    ]
  }
}
Example XML Response Body:
<?xml version="1.0" encoding="UTF-8" ?>
<ScheduleData>
    <Activity>
        <id>A4</id>
        <activity_class_id>CALL</activity_class_id>
        <activity_type_id>Default</activity_type_id>
        <location_id>R2</location_id>
        <priority>1</priority>
        <split_allowed>false</split_allowed>
        <do_on_site>false</do_on_site>
        <base_value>1000</base_value>
        <duration>PT6H</duration>
    </Activity>
    <Activity_SLA>
        <sla_type_id>Normal</sla_type_id>
        <activity_id>A4</activity_id>
        <datetime_start>2020-02-24T00:00:00Z</datetime_start>
        <datetime_end>2020-02-28T00:00:00Z</datetime_end>
        <priority>1</priority>
        <start_based>true</start_based>
    </Activity_SLA>
    <Activity_Status>
        <activity_id>A4</activity_id>
        <status_id>0</status_id>
        <date_time_status>2020-02-24T00:00:00Z</date_time_status>
        <visit_id>1</visit_id>
        <fixed>false</fixed>
        <date_time_stamp>2020-02-24T00:00:00Z</date_time_stamp>
    </Activity_Status>
    <Activity_Type>
        <id>Default</id>
        <base_value>1000</base_value>
        <split_allowed>false</split_allowed>
        <min_split>PT1H</min_split>
        <interrupt>false</interrupt>
        <cost_of_split>0</cost_of_split>
        <priority>1</priority>
        <on_location_duration_factor>1</on_location_duration_factor>
        <remote_fulfillment>false</remote_fulfillment>
    </Activity_Type>
    <Allocation>
        <activity_id>A4</activity_id>
        <resource_id>R2</resource_id>
        <visit_id>1</visit_id>
        <activity_start>2020-02-24T09:00:00Z</activity_start>
        <activity_end>2020-02-24T15:00:00Z</activity_end>
        <visit_status>10</visit_status>
        <plan_id>35</plan_id>
        <visit_type>CALL</visit_type>
        <date_time_fixed>false</date_time_fixed>
        <duration>PT6H</duration>
        <fixed_resource>false</fixed_resource>
        <shift_id>R2_S1</shift_id>
        <rank>1</rank>
        <shift_start_datetime>2020-02-24T09:00:00Z</shift_start_datetime>
        <same_location>true</same_location>
        <allocation_source>0</allocation_source>
        <location_id>R2</location_id>
    </Allocation>
    <Allocation_Data>
        <activity_id>A4</activity_id>
        <visit_id>1</visit_id>
        <plan_id>35</plan_id>
        <expected_duration>PT6H</expected_duration>
        <sla_start_time>2020-02-24T00:00:00Z</sla_start_time>
        <sla_jeopardy_time>2020-02-28T00:00:00Z</sla_jeopardy_time>
    </Allocation_Data>
    <Allocation_Hint>
        <activity_id>A4</activity_id>
        <visit_id>1</visit_id>
        <resource_id>R2</resource_id>
        <activity_start>2020-02-24T09:33:16Z</activity_start>
    </Allocation_Hint>
    <Broadcast>
        <id>b110c66552e447aaa5771b76d33c077c</id>
        <active>true</active>
        <broadcast_type_id>POLLING</broadcast_type_id>
        <plan_type>COMPLETE</plan_type>
        <minimum_plan_quality>95</minimum_plan_quality>
        <minimum_step_interval>1</minimum_step_interval>
        <once_only>true</once_only>
        <maximum_wait>PT1H</maximum_wait>
        <allocation_type>1</allocation_type>
    </Broadcast>
    <Dataset>
        <organisation_id>1</organisation_id>
        <id>5fd726c530004543b9c3cdd5673806ad</id>
        <description>(WISE) testrun</description>
        <dataset_type>COMPLETE</dataset_type>
        <dataset_class>WISE</dataset_class>
        <running_state>RUNNING</running_state>
    </Dataset>
    <Input_Reference>
        <datetime>2020-02-24T00:00:00Z</datetime>
        <id>8fe2a961299a4fa0919f19d7b1edc858</id>
        <input_type>LOAD</input_type>
        <user_id>Administrator</user_id>
        <organisation_id>1</organisation_id>
        <dataset_id>5fd726c530004543b9c3cdd5673806ad</dataset_id>
        <application_type_id>SML</application_type_id>
        <application_instance_id>NAPRCA2</application_instance_id>
        <schedule_data>CONTINUOUS</schedule_data>
        <load_status>0</load_status>
        <process_type>STATIC</process_type>
        <schedule_end_datetime>2020-02-27T00:00:00Z</schedule_end_datetime>
    </Input_Reference>
    <Location>
        <id>R2</id>
        <latitude>51.3119511460491</latitude>
        <longitude>-2.248687073527327</longitude>
    </Location>
    <Location>
        <id>R1</id>
        <latitude>51.5411115076334</latitude>
        <longitude>-2.248687073527327</longitude>
    </Location>
    <Location_Region>
        <region_id>R2Region</region_id>
        <location_id>R2</location_id>
    </Location_Region>
    <Plan>
        <id>35</id>
        <time_taken>PT1S</time_taken>
        <plan_type>COMPLETE</plan_type>
        <plan_margin>999.90625</plan_margin>
        <output_datetime>2026-03-03T03:53:36.83Z</output_datetime>
        <total_allocations>1</total_allocations>
        <quality>97</quality>
        <input_reference_internal_id>35</input_reference_internal_id>
        <load_input_ref_internal_id>35</load_input_ref_internal_id>
        <total_travel_time>PT0S</total_travel_time>
        <total_travel_distance>0</total_travel_distance>
        <travel_type>Lat/Long</travel_type>
        <schedule_from>2020-02-24T00:00:00Z</schedule_from>
        <schedule_to>2020-02-27T00:00:00Z</schedule_to>
        <input_reference_date_time>2020-02-24T00:00:00Z</input_reference_date_time>
        <input_reference_id>8fe2a961299a4fa0919f19d7b1edc858</input_reference_id>
        <average_travel_time>PT0S</average_travel_time>
        <average_travel_distance>0</average_travel_distance>
        <utilisation>42.857142857142854</utilisation>
        <total_on_site_time>PT6H</total_on_site_time>
        <total_break_time>PT0S</total_break_time>
        <total_private_time>PT0S</total_private_time>
        <total_unutilised_time>PT8H</total_unutilised_time>
        <organisation_id>1</organisation_id>
        <dataset_id>5fd726c530004543b9c3cdd5673806ad</dataset_id>
        <broadcast_id>b110c66552e447aaa5771b76d33c077c</broadcast_id>
        <software_version>6.17.0.3</software_version>
        <allocation_type>1</allocation_type>
        <profile_id>DEFAULT</profile_id>
        <load_status>0</load_status>
        <application_type_id>DSE</application_type_id>
        <application_instance_id>NAPRCA2</application_instance_id>
        <dataset_type>COMPLETE</dataset_type>
    </Plan>
    <Plan_Resource>
        <plan_id>35</plan_id>
        <resource_id>R1</resource_id>
        <resource_margin>0</resource_margin>
        <average_travel_time>PT0S</average_travel_time>
        <average_travel_distance>0</average_travel_distance>
        <total_allocations>0</total_allocations>
        <utilisation>0</utilisation>
        <total_travel_time>PT0S</total_travel_time>
        <total_on_site_time>PT0S</total_on_site_time>
        <total_break_time>PT0S</total_break_time>
        <total_private_time>PT0S</total_private_time>
        <total_unutilised_time>PT8H</total_unutilised_time>
    </Plan_Resource>
    <Plan_Resource>
        <plan_id>35</plan_id>
        <resource_id>R2</resource_id>
        <resource_margin>999.90625</resource_margin>
        <average_travel_time>PT0S</average_travel_time>
        <average_travel_distance>0</average_travel_distance>
        <total_allocations>1</total_allocations>
        <utilisation>75</utilisation>
        <total_travel_time>PT0S</total_travel_time>
        <total_on_site_time>PT6H</total_on_site_time>
        <total_break_time>PT0S</total_break_time>
        <total_private_time>PT0S</total_private_time>
        <total_unutilised_time>PT2H</total_unutilised_time>
    </Plan_Resource>
    <Plan_Route>
        <plan_id>35</plan_id>
        <resource_id>R1</resource_id>
        <shift_id>R1_S1</shift_id>
        <route_margin>0</route_margin>
        <average_travel_time>PT0S</average_travel_time>
        <average_travel_distance>0</average_travel_distance>
        <total_allocations>0</total_allocations>
        <utilisation>0</utilisation>
        <shift_start_datetime>2020-02-24T09:00:00Z</shift_start_datetime>
        <shift_end_datetime>2020-02-24T17:00:00Z</shift_end_datetime>
        <shift_overtime_end>2020-02-24T17:00:00Z</shift_overtime_end>
        <total_travel_time>PT0S</total_travel_time>
        <total_on_site_time>PT0S</total_on_site_time>
        <total_break_time>PT0S</total_break_time>
        <total_private_time>PT0S</total_private_time>
        <total_unutilised_time>PT8H</total_unutilised_time>
    </Plan_Route>
    <Plan_Route>
        <plan_id>35</plan_id>
        <resource_id>R2</resource_id>
        <shift_id>R2_S1</shift_id>
        <route_margin>999.90625</route_margin>
        <average_travel_time>PT0S</average_travel_time>
        <average_travel_distance>0</average_travel_distance>
        <total_allocations>1</total_allocations>
        <utilisation>75</utilisation>
        <shift_start_datetime>2020-02-24T09:00:00Z</shift_start_datetime>
        <shift_end_datetime>2020-02-24T17:00:00Z</shift_end_datetime>
        <shift_overtime_end>2020-02-24T17:00:00Z</shift_overtime_end>
        <total_travel_time>PT0S</total_travel_time>
        <total_on_site_time>PT6H</total_on_site_time>
        <total_break_time>PT0S</total_break_time>
        <total_private_time>PT0S</total_private_time>
        <total_unutilised_time>PT2H</total_unutilised_time>
    </Plan_Route>
    <Region>
        <id>R2Region</id>
    </Region>
    <Resource_Region>
        <region_id>R2Region</region_id>
        <resource_id>R2</resource_id>
        <override_priority>1</override_priority>
    </Resource_Region>
    <Resource_Skill>
        <skill_id>Skill1</skill_id>
        <resource_id>R1</resource_id>
    </Resource_Skill>
    <Resource_Type>
        <id>Default</id>
        <cost_ph>20</cost_ph>
        <cost_phot>30</cost_phot>
        <cost_km>0.25</cost_km>
        <utilisation>100</utilisation>
        <out_of_region_multiplier>0</out_of_region_multiplier>
        <resource_class_id>STANDARD</resource_class_id>
    </Resource_Type>
    <Resource_Type_Skill>
        <resource_type_id>Skill1</resource_type_id>
        <skill_id>Skill1</skill_id>
    </Resource_Type_Skill>
    <Resources>
        <id>R1</id>
        <location_id_start>R1</location_id_start>
        <location_id_end>R1</location_id_end>
        <resource_type_id>Default</resource_type_id>
        <max_travel>PT4H</max_travel>
        <travel_to>PT0S</travel_to>
        <travel_from>PT0S</travel_from>
        <cost_ph>0</cost_ph>
        <cost_km>0</cost_km>
    </Resources>
    <Resources>
        <id>R2</id>
        <location_id_start>R2</location_id_start>
        <location_id_end>R2</location_id_end>
        <resource_type_id>Default</resource_type_id>
        <max_travel>PT4H</max_travel>
        <travel_to>PT0S</travel_to>
        <travel_from>PT0S</travel_from>
        <cost_ph>0</cost_ph>
        <cost_km>0</cost_km>
    </Resources>
    <Schedule_Exception>
        <id>1df3762da5f63a0df4c2884729f486fb</id>
        <schedule_exception_type_id>220</schedule_exception_type_id>
        <plan_id>35</plan_id>
        <resource_id>R1</resource_id>
        <datetime_generated>2020-02-24T00:00:00Z</datetime_generated>
    </Schedule_Exception>
    <Shift>
        <id>R1_S1</id>
        <resource_id>R1</resource_id>
        <start_datetime>2020-02-24T09:00:00Z</start_datetime>
        <end_datetime>2020-02-24T17:00:00Z</end_datetime>
        <actual>true</actual>
    </Shift>
    <Shift>
        <id>R2_S1</id>
        <resource_id>R2</resource_id>
        <start_datetime>2020-02-24T09:00:00Z</start_datetime>
        <end_datetime>2020-02-24T17:00:00Z</end_datetime>
        <actual>true</actual>
    </Shift>
    <Skill>
        <id>Skill1</id>
    </Skill>
    <SLA_Type>
        <id>Normal</id>
        <revenue>1000</revenue>
        <penalty>1000</penalty>
        <cost>0</cost>
        <early_sla_benefit>0</early_sla_benefit>
        <mechanism_type>POWER_BASED</mechanism_type>
        <end_proportion>0.999</end_proportion>
        <curve_shape>1</curve_shape>
        <activity_ageing_factor>1</activity_ageing_factor>
        <start_proportion>1</start_proportion>
        <generate_jeopardy_exceptions>true</generate_jeopardy_exceptions>
    </SLA_Type>
</ScheduleData>

Manual Test Run

POST

Creates a new manual test run request for the specified investigation.

Parameters:

  • id - The unique identifier of the investigation.
  • description - A description of the test run.
  • demandId - The identifier of the demand (must be greater than 0).
  • resourcingId (optional) - The identifier of the resourcing (must be greater than 0 if provided).
  • maxRunTimeInMinutes - The maximum allowed run time for the test, in minutes (must be greater than 0).
  • minimumQuality (optional) - The minimum required quality threshold for the test run.

Response elements:

  • NumericIDResponse:
    • Id - The identifier of the created test run.

Example Curl request:

curl -X POST
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Accept: application/json"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/test-run/manual?
        description=Manual%20Test%20Run&
        demandId=5&
        resourcingId=10&
        maxRunTimeInMinutes=60&
        minimumQuality=0.8"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/test-run/manual?
    description=Manual Test Run&
    demandId=5&
    resourcingId=10&
    maxRunTimeInMinutes=60&
    minimumQuality=0.8

Automatic Test Run

POST

Creates a new automatic test run request for the specified investigation.

Parameters:

  • id - The unique identifier of the investigation.
  • description - A description of the test run.
  • automaticResourcingDescription - A description for automatically generated resourcing.
  • demandId - The identifier of the demand (must be greater than 0).
  • resourcingId (optional) - The identifier of the resourcing (must be greater than 0 if provided).
  • maxRunTimeInMinutes - The maximum allowed run time for the test, in minutes (must be greater than 0).
  • minimumQuality (optional) - The minimum required quality threshold for the test run.
  • resourcingChangeTemplateId (optional) - Resourcing change template identifier (must be greater than 0 if provided).
  • targetsWithImportance - Comma-separated list of target:importance pairs (e.g., "1:0.8,2:50,3:0.5").

Response elements:

  • NumericIDResponse:
    • Id - The identifier of the created test run.

Example Curl request:

curl -X POST
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Accept: application/json"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/test-run/auto?
        description=Automatic%20Test%20Run&
        automaticResourcingDescription=Auto%20Generated%20Resourcing&
        demandId=5&
        resourcingId=10&
        maxRunTimeInMinutes=60&
        minimumQuality=0.8&
        resourcingChangeTemplateId=15&
        targetsWithImportance=1:0.8,2:50"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/test-run/auto?
    description=Automatic Test Run&
    automaticResourcingDescription=Auto Generated Resourcing&
    demandId=5&
    resourcingId=10&
    maxRunTimeInMinutes=60&
    minimumQuality=0.8&
    resourcingChangeTemplateId=15&
    targetsWithImportance=1:0.8,2:50

Delete Test Run

DELETE

Delete a test run.

Parameters:

  • id - The unique identifier of the investigation.
  • testRunId - The unique identifier of the test run.

Response elements:

  • No content on success.

Example Curl request:

curl -X DELETE
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/test-run/20"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/test-run/20

Target

POST

Create a target for the specified investigation.

Parameters:

  • id - The unique identifier of the investigation.
  • statisticType - Statistic Type.
  • simulationOperator - Operator Type.
  • statisticValue (optional) - Statistic value.
  • summary - Target Summary.
  • focus (optional) - Target Focus. e.g. Activity_Type=Default. Focuses can be combined with & and | operators, and brackets () can be used to create child focus groups. Available FilterTypes: Activity_Type, Customer, Contract, Service_Level, Primary_SLA_Type, Region, Skill.

Response elements:

  • NumericIDResponse:
    • Id - The identifier of the created target.

Example Curl request:

curl -X POST
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Accept: application/json"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/target?
        statisticType=ResourceUtilisation&
        simulationOperator=GreaterThan&
        statisticValue=0.85&
        summary=Target%2085%25%20Utilisation&
        focus=Region=North"
Example Request URL:

https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/target?
    statisticType=ResourceUtilisation&
    simulationOperator=GreaterThan&
    statisticValue=0.85&
    summary=Target 85% Utilisation&
    focus=Region=North
DELETE

De-activate a target.

Parameters:

  • id - The unique identifier of the investigation.
  • targetId - The unique identifier of the target.

Response elements:

  • No content on success.

Example Curl request:

curl -X DELETE
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/target/25"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/target/25

Automation Template

POST

Creates a resourcing automation template for the specified investigation.

Parameters:

  • id - The unique identifier of the investigation.
  • resourcingId - The identifier of the base resourcing (must be greater than 0).
  • description - Description for the change template.

Message Body:

  • AutomationTemplateRequest object containing:
    • UseFixedResourceLocations - Boolean flag.
    • ResourceOptions - Array of TemplateResourceOption objects (ID and RelativeHireCost).
    • LocationOptions - Array of LocationDefinition objects (LocationID, Latitude, Longitude).
    • SkillOptions - Array of TemplateSkillOption objects (ID, RequiredSkillID, RelativeTrainingCost).

Response elements:

  • NumericIDResponse:
    • Id - The identifier of the created change template.

Example Curl request for JSON Message Body:

curl -X POST
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    --header "Content-Type: application/json"
    --header "Accept: application/json"
    --data "{\"UseFixedResourceLocations\":true,\"ResourceOptions\":[{\"ID\":\"RES_TYPE_1\",\"RelativeHireCost\":1.0}]}"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/resourcing/10/automation-template?
        description=Automation%20Template"
Example Request URL:

https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/resourcing/10/automation-template?
    description=Automation Template
DELETE

De-activate an automation template.

Parameters:

  • id - The unique identifier of the investigation.
  • templateId - The unique identifier of the automation template.

Response elements:

  • No content on success.

Example Curl request:

curl -X DELETE
    --header "X-IFS-Session: 88a4c49820ed4a14b32a2f69c028d94cStandard"
    "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/automation-template/30"
Example Request URL:
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/automation-template/30

Reporting OData Endpoints

The archive reporting fact and dimension data can be accessed by the reporting OData endpoints. Open Data Protocol (OData) is a standard that allows accessing data via REST APIs. For an introduction to OData see https://www.odata.org/getting-started/basic-tutorial/. The reporting endpoints are available at:

  • Base: /api/v1/reporting/{dataset_id}
  • Metadata: /api/v1/reporting/{dataset_id}/$metadata
  • Entity: /api/v1/reporting/{dataset_id}/{entity_name}

See the Data Archive User Guide for details of the available fact and dimension entities.

Limitations

Only a subset of the full OData features are available. The OData APIs have the following limitations:

  • $expand, $count and $search are not supported
  • $filter only supports the following operators: eq, ne, and, or, gt, lt, ge, le, in
  • $top has a default maximum of 100,000 rows. Controlled by the MaximumODataRecords system parameter. If the limit is reached the response will contain a '@odata.nextLink' entry.

Examples

Example GET Request

List the first 10 records in ARC_Allocation_Snapshot_Fact in the 'NORTH' dataset:

URL: https://MyHost/IFSSchedulingRESTfulGateway /api/v1/reporting/NORTH/ARC_Allocation_Snapshot_Fact?$top=10

Response Body:

{
    "@odata.context": "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/ reporting/NORTH/$metadata#ARC_Allocation_Snapshot_Fact",
    "value": [
        {
            "arc_snapshot_detail_key": 1,
            "arc_activity_name_key": 801,
            "visit_id": 1,
            "arc_activity_class_key": 1,
            "arc_activity_state_key": 25,
            "arc_activity_type_key": 10,
            "arc_allocation_detail_key": 36,
            "arc_contract_key": null,
            "arc_customer_key": null,
            "arc_date_key_allocated_time": 6848,
            "arc_date_key_schedule_time": 6849,
            "arc_date_key_sla_deadline": 6848,
            "arc_location_key_start": 4031,
            "arc_location_key_end": null,
            "arc_region_group_key": 288,
            "arc_skill_group_key": 41,
            "arc_resource_key": 404,
            "arc_resource_type_key": 1,
            "arc_time_zone_key": 117,
            "duration_minutes": 0.0,
            "shift_start_time": "2023-02-01T13:00:00+01:00",
            "shift_start_time_utc": "2023-02-01T12:00:00Z",
            "sla_deadline": "2023-02-01T19:00:00+01:00",
            "sla_deadline_utc": "2023-02-01T18:00:00Z",
            "start_time": "2023-02-01T17:36:12+01:00",
            "start_time_utc": "2023-02-01T16:36:12Z",
            "total_activity_visits": 1,
            "travel_hours": 0.0,
            "travel_start_time": "2023-02-01T17:36:12+01:00",
            "travel_start_time_utc": "2023-02-01T16:36:12Z"
        }
        // ...
    ],
    "@odata.nextLink": "https://MyHost/IFSSchedulingRESTfulGateway/api/v1/ reporting/NORTH/ARC_Allocation_Snapshot_Fact?$top=10&$skip=10"
}

Filter on a date time

Find allocations on or after 2020-01-01:

/api/v1/reporting/NORTH/ARC_Allocation_Snapshot_Fact?$filter=start_time ge 2020-01-01T00:00:00Z

Ordering data

List time zones ordered by windows_id:

/api/v1/reporting/NORTH/ARC_Time_Zone?$orderby=windows_id

Select specific columns

List time zones key and windows_id:

/api/v1/reporting/NORTH/ARC_Time_Zone?$select=key,windows_id

Find record

Get the ARC_Time_Zone record with key 17:

/api/v1/reporting/NORTH/ARC_Time_Zone(17)

Extract value from record

Get the iana_id value of the ARC_Time_Zone record with key 17:

/api/v1/reporting/NORTH/ARC_Time_Zone(17)/iana_id/$value

Response status codes

Below is a table of the most common HTTP status response codes that may be returned when connecting to the RESTful gateway, along with a likely reason for the response.

Status codeNameDescription
200SuccessThe request was processed successfully.
204No ContentThere is no data in the response (e.g. if requesting an output before it is ready).
400Bad RequestThere is a problem with the data in the request.
401UnauthorisedThere is a problem with the session token or login credentials.
404Not FoundThere is a problem with the URL, it could not be found.
500Internal Server ErrorThere is an internal problem processing the data.

Note

In most cases when a HTTP error response is returned additional information about the error should be available in the response content.

Note

Additional status response codes could also be returned from the web server hosting the RESTFul gateway.

Bad Request response codes

Below is a table clarifying some Bad Request response codes that may be returned when making requests to the RESTful gateway.

Status codeNameDescription
15INVALID_TASKIDThe dataset specified does not exist or the current user does not have permission to access it.
20INVALID_CLOUD_BROADCAST_TYPEThe data contains a broadcast that is not supported in the cloud. E.g. FILE