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 Group | Permissions |
|---|---|
| Data Request Methods | GatewayQueryData, GatewayQueryReportingData, GatewaySubmitData |
| Session Management Methods | Gateway |
| System Management Methods | GatewaySystemManagement |
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"
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
{
"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"
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
}
]
}
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"
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
}
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"""}"
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/system/installations/install-northwest01
Example Request Body:
{
"Role": "STANDBY"
}
{
"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"
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/organisation?
accountId=ChildAccount
{
"Id": 8,
"AccountId": "ChildAccount",
"Name": "Example ChildAccount",
"Status": "ACTIVE"
}
<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>
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"
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/organisation
Example JSON Response Body:
{
"InternalId": "2"
}
<CreateOrganisationResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://schemas.datacontract.org/2004/07/GatewayApi.ResponseObjects">
<InternalId>2</InternalId>
</CreateOrganisationResponse>
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"""}"
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/organisation?
accountId=ChildAccount
{
"Status": "INACTIVE"
}
{
"Result": "SUCCESS"
}
<PatchOrganisationResponse
xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://schemas.datacontract.org/2004/07/RESTfulGateway.ResponseObjects">
<Result>SUCCESS</Result>
</PatchOrganisationResponse>
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"
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/organisation?
organisationId=2
{
"Result": "SUCCESS"
}
<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"
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/system/organisation/data
?tableFilter=Users,User_Group
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"
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"
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/session
Example JSON Response Body:
{
"SessionToken": "2c061a86c4a6424d9f1b4ed954c1bc04Standard"
}
<LogoffResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://schemas.datacontract.org/2004/07/GatewayApi.ResponseObjects">
<SessionToken>2c061a86c4a6424d9f1b4ed954c1bc04Standard</SessionToken>
</LogoffResponse>
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"
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>
{
"SessionToken": "d9ab94237cb74487b91f8be2a6a63248Standard<"
}
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"
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>
{
"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"
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
}
]
}
<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"
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
}
<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
{
"ScheduleDataUsages": [
{
"Id": 1,
"ScheduleDataUsageType": 0,
"OrganisationId": 1,
"Value": 0,
"DatetimeStamp": "2021-11-29T15:58:06+00:00"
}
]
}
<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"
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/activity?
datasetId=Default&
activityId=1&
includeOutput=true
{
"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"
}
]
}
}
<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"
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"
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"
}
]
}
}
<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"
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/data?
datasetId=Default&
includeInput=true&
includeOutput=true
{
"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
}
]
}
}
<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>
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"
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"
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/data?
dataType=SCHEDULE
{
"InternalId": "0"
}
<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"
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/datasetstatus?
datasetId=Default
{
"OutputAvailable": true,
"ProcessingStatus": 20
}
<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"
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/resource?
datasetId=Default&
resourceId=1000&
includeOutput=true
{
"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
}
]
}
}
<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"
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/exceptionType?
exceptionTypeId=40&languageId=en&includeExceptionTypeData=true
{
"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"
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/scheduling/exceptionTypes?
languageId=en&activeOnly=true&includeExceptionTypeData=true
[
{
"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"
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"
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations?
description=MyInvestigation
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"
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
}
]
}
}
<?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 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"
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"
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"
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"
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
}
]
}
}
<?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>
{
"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"
}
]
}
}
<?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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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
}
]
}
}
<?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"
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
}
]
}
}
<?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"
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"
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"
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"
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/target?
statisticType=ResourceUtilisation&
simulationOperator=GreaterThan&
statisticValue=0.85&
summary=Target 85% Utilisation&
focus=Region=North
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"
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"
https://MyHost/IFSSchedulingRESTfulGateway/api/v1/simulation/investigations/1/resourcing/10/automation-template?
description=Automation Template
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"
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 code | Name | Description |
|---|---|---|
| 200 | Success | The request was processed successfully. |
| 204 | No Content | There is no data in the response (e.g. if requesting an output before it is ready). |
| 400 | Bad Request | There is a problem with the data in the request. |
| 401 | Unauthorised | There is a problem with the session token or login credentials. |
| 404 | Not Found | There is a problem with the URL, it could not be found. |
| 500 | Internal Server Error | There 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 code | Name | Description |
|---|---|---|
| 15 | INVALID_TASKID | The dataset specified does not exist or the current user does not have permission to access it. |
| 20 | INVALID_CLOUD_BROADCAST_TYPE | The data contains a broadcast that is not supported in the cloud. E.g. FILE |