Download OpenAPI specification:
Welcome to the adiutaOpt API documentation!
This document specifies all endpoints and schema requirements. If you notice an error, please contact us.
The typical process of an optimization request looks as follows:
The overview site can be found here.
A string consisting of three parts following the pattern "YYYY-MM-DD":
While the schema does not check for validity, the optimization algorithms do. Including invalid dates (e.g. 2020-02-31) leads to a validation error.
Examples:
"2020-04-10"A string of either format "hh:mm" or "-hh:mm":
Times are always interpreted relative to a date in the same object as the Time field. This allows times to exceed 24h or even become negative, as the value gets "added" to midnight of the date. For example, the following times applied to the respective date (in Date format) are equivalent:
"07:25"Values are:
3Set preferences regarding overlap
0A numerical representation of a weekday. Values are:
6A version consisting of the date of release [0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]+, which can have a patch suffix p[0-9]+.
"1970-01-01_0p0"See https://semver.org/ for a full description of semantic versioning. The regex here is a subset of allowed semantic versions.
"v1.2.3"The authentication is performed via AWS Cognito (Developer-Guide). It is recommended to use one of the SKDs provided by AWS to simplify the authentication process considerably. Examples for SDKs:
Authentication provides three tokens: the access-token, the ID-token and the refresh-token. All three are JSON Web Tokens.
Authorization: 'ID-token'
auth_time) and when it will expire (exp). Currently, an ID-token expires after one hour and requests with expired ID-tokens are rejected automatically. You can get a new ID-token by using the refresh-token without having to re-enter your credentials.const user = ""; // your username const pw = ""; // your password const userPoolID = ""; // UserPoolID, see configuration details const clientID = ""; // ClientId, see configuration details const AmazonCognitoIdentity = require('amazon-cognito-identity-js'); module.exports.login = () => new Promise((resolve, reject) => { const userPool = new AmazonCognitoIdentity.CognitoUserPool({ UserPoolId: userPoolID, ClientId: clientID }); const authenticationDetails = new AmazonCognitoIdentity.AuthenticationDetails({ Username: user, Password: pw, }); const cognitoUser = new AmazonCognitoIdentity.CognitoUser({ Username: user, Pool: userPool }); cognitoUser.authenticateUser(authenticationDetails, { onSuccess: function (result) { const token = result.getIdToken().getJwtToken(); resolve(token); }, onFailure: function (err) { reject(); } }); })
Post a request to be solved.
If a new optimization request was received and was successfully processed, the endpoint will return 201 and the key with which the solution can be retrieved. This does not mean that calculating a solution will succeed, as logic errors, invalid ids and many other checks are performed later - these kinds of issues will result in an ErrorPlan, retrievable from the solution endpoint. Only schema violations are being checked in this request, they will result in the request being rejected with code 422.
Usually, if an optimization request was received but an identical request was already posted before, the endpoint will return 200 and the key with which the solution can be retrieved, which is identical to the key from the earlier request. This is not the case for certain errors which allow a repeat request (marked by the allowRepeat property of an ErrorPlan). Repeats for such requests are allowed after a certain amount of time has passed, trying to post before this cooldown has expired will result in rejection (code 429) where the retry-after header contains the remaining time in seconds until the request will be accepted again. If the repeat request was accepted, the endpoint returns code 201 and a new key to get the solution with.
Request to this endpoint have a content size limit which depends on the used content-type. Requests with content-type: application/json must contain a "plain-text" json payload which must be less than 6Mb in size. For sending larger requests, you must use content-type: application/vnd.adiutabyte.adiutaopt.json+[gzip,deflate,br]. These requests must contain the json data, compressed with gzip, deflate (zlib) or brotli, the payload size limit is 4.5Mb for the compressed data.
required | "application/json" (string) or "application/vnd.adiutabyte.adiutaopt.json+gzip" (string) or "application/vnd.adiutabyte.adiutaopt.json+deflate" (string) or "application/vnd.adiutabyte.adiutaopt.json+br" (string) The |
| adiutaopt-version | string (optional) A specific version to process the request under. Valid versions can be retrieved with the /packages-list endpoint ( Using a specific version is not recommended for "general" application but for testing, debugging or other developer actions. Versions represent a specific state of the application, they cannot be changed, bug-fixed or extended in any way. For that reason, support for these requests may be limited. |
object (Client) Contains information about the client which sends this request. | |
required | object (ShiftPlannerMeta) Meta information about what to consider in the optimization. |
required | object (ShiftPlannerOptimizationParameters) Parameters for the optimizer. |
required | Array of objects (ShiftPlannerInputTask) Array of Tasks to be planned by the optimizer. |
required | Array of objects (ShiftPlannerInputWorker) Array of available Workers. |
object (ShiftPlannerHistory) History data the optimizer can learn from to apply to the current request. History analysis is done differently for each of our customers, if you know what issues you want to address/ what results you want to see from such methods, please contact us so we can set up a solution. | |
| recovery | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] Deprecated List of ids. |
object (DeveloperOptions) Options for developers. Do not use! |
Basic blueprint for an optimization data set
{- "meta": {
- "dateFrom": "2019-12-01",
- "dateTo": "2019-12-10",
- "accuracyMode": 1
}, - "parameters": {
- "preset": 0
}, - "tasks": [
- {
- "date": "2019-12-03",
- "duration": 60,
- "taskID": 200,
- "timeEarliest": "0:00",
- "timeLatest": "24:00"
}, - {
- "date": "2019-12-04",
- "duration": 60,
- "taskID": 201,
- "timeEarliest": "0:00",
- "timeLatest": "24:00"
}, - {
- "date": "2019-12-05",
- "duration": 60,
- "taskID": 202,
- "timeEarliest": "06:00",
- "timeLatest": "12:00"
}, - {
- "date": "2019-12-06",
- "duration": 60,
- "taskID": 203,
- "timeEarliest": "06:00",
- "timeLatest": "12:00"
}
], - "workers": [
- {
- "workerID": 1,
- "shifts": [
- {
- "shiftDate": "2019-12-02",
- "shiftStart": "0:00",
- "shiftEnd": "24:00"
}, - {
- "shiftDate": "2019-12-03",
- "shiftStart": "0:00",
- "shiftEnd": "24:00"
}, - {
- "shiftDate": "2019-12-04",
- "shiftStart": "0:00",
- "shiftEnd": "24:00"
}, - {
- "shiftDate": "2019-12-05",
- "shiftStart": "0:00",
- "shiftEnd": "22:00"
}, - {
- "shiftDate": "2019-12-06",
- "shiftStart": "06:00",
- "shiftEnd": "12:00"
}, - {
- "shiftDate": "2019-12-06",
- "shiftStart": "15:00",
- "shiftEnd": "24:00"
}, - {
- "shiftDate": "2019-12-10",
- "shiftStart": "0:00",
- "shiftEnd": "24:00"
}
]
}
]
}"VGVzdEtleUZvckFQSURvY3VtZW50YXRpb24uYXNk=="Retrieve the solution from this endpoint with the key you got when posting the request. The solution can either be a solved request or an ErrorPlan.
Responses from this endpoint have a content size limit which depends on the used content-type of the response, which can be specified with the accept header. If the response size would exceed that limit, the endpoint returns code 409 instead. Responses of type application/json can include payloads of up to 6Mb, all other types can return up to 4.5Mb of (compressed) data.
| planID required | string Key returned in the 200/201 response of the POST request |
"application/json" (string) or "application/vnd.adiutabyte.adiutaopt.json+gzip" (string) or "application/vnd.adiutabyte.adiutaopt.json+deflate" (string) or "application/vnd.adiutabyte.adiutaopt.json+br" (string) (optional) The | |
"identity" (string) or "gzip" (string) or "deflate" (string) (optional) The |
curl \ --request GET \ --url '[see url above]/[key obtained from POST request]' \ --header 'Authorization: Bearer [ID-Token obtained from Authentication (JWT)]'
{- "requestID": "string",
- "client": {
- "clientID": "logisticscenter_a"
}, - "meta": {
- "dateFrom": "2020-04-10",
- "dateTo": "2020-04-10",
- "resCategory": false,
- "resQualification": false,
- "accuracyMode": 1.7e+308,
- "outputLanguage": 1,
- "minQualificationOfTaskCoverage": 2147483647,
- "omnipresentCategoriesOfTaskCoverage": [
- 2147483647
], - "enablePlanSplitting": true,
- "allowUnassignedTasks": false,
- "removeInvalidTasks": true,
- "followBiorhythm": false,
- "minConcurrentSolutions": 1,
- "minTaskDuration": 2147483647
}, - "parameters": {
- "preset": 0,
- "fairDistribution": 9,
- "timeliness": 9,
- "workerPrefs": 9,
- "teamPrefs": 9,
- "taskPrefs": 9,
- "worktimePrefs": 9,
- "workerReduction": 9,
- "genderPref": 9,
- "profitability": 9
}, - "tasks": [
- {
- "taskID": 2147483647,
- "externalID": "string",
- "date": "2020-04-10",
- "duration": 2147483647,
- "timeEarliest": "07:25",
- "timeLatest": "07:25",
- "timePriority": 5,
- "prefWorkers": [
- 2147483647
], - "forbWorkers": [
- 2147483647
], - "unpreferredWorkers": [
- 2147483647
], - "antiWorkers": [
- 2147483647
], - "qualification": 2147483647,
- "maxQualification": 2147483647,
- "categories": [
- 2147483647
], - "exchangeableCategories": [
- 2147483647
], - "preassignedWorker": 2147483647,
- "preassignedOrder": -2147483648,
- "desiredWorker": 2147483647,
- "prefGender": 3,
- "precedingTasks": [
- 2147483647
], - "predecessorTasks": [
- 2147483647
], - "group": 2147483647,
- "groupOrder": 2147483647,
- "revenue": 1.7e+308,
- "initassignedShift": 2147483647,
- "assignmentPriority": 5,
- "initassignedWorker": 2147483647,
- "initassignedOrder": 2147483647,
- "timeScheduled": "07:25",
- "timeWindowViolation": -2147483648,
- "assignedWorker": 2147483647,
- "assignedShift": 2147483647,
- "info": "string",
- "allowedWorkers": [
- 2147483647
], - "finalassignedOrder": 1,
- "profit": -1.7e+308
}
], - "workers": [
- {
- "workerID": 2147483647,
- "externalID": "string",
- "shifts": [
- {
- "shiftID": 2147483647,
- "shiftDate": "2020-04-10",
- "shiftStart": "07:25",
- "shiftEnd": "07:25",
- "shiftPriority": 3
}
], - "qualification": 2147483647,
- "categories": [
- 2147483647
], - "desiredCategory": 2147483647,
- "prefCategories": [
- 2147483647
], - "prefWeekCategories": [
- 2147483647
], - "prefWeekendCategories": [
- 2147483647
], - "prefWorkers": [
- 2147483647
], - "unpreferredWorkers": [
- 2147483647
], - "antiWorkers": [
- 2147483647
], - "gender": 3,
- "expectedWorkingMinutes": 2147483647,
- "minWorkingMinutes": 2147483647,
- "maxWorkingMinutes": 2147483647,
- "maxConsecutiveWorkdays": 2147483647,
- "minConsecutiveWorkdays": 2147483647,
- "prefConsecutiveWorkdays": 2147483647,
- "carryoverConsecutiveWorkdays": 2147483647,
- "maxConsecutiveOffdays": 2147483647,
- "minConsecutiveOffdays": 2147483647,
- "prefConsecutiveOffdays": 2147483647,
- "carryoverConsecutiveOffdays": 2147483647,
- "minBreakMinutesBetweenTasks": 2147483647,
- "maxDailyWorkingMinutes": 2147483647,
- "maxDailyTasks": 2147483647,
- "minFreeSaturdays": 2147483647,
- "minFreeSundays": 2147483647,
- "maxWeeklyWorkingMinutes": 2147483647,
- "carryoverWorkingMinutesLastWeek": 2147483647,
- "maxTwoWeekWorkingMinutes": 2147483647,
- "carryoverWorkingMinutesSecondLastWeek": 2147483647,
- "dontVary": true,
- "dontAlter": false,
- "allowPreassignedTasksOnly": false,
- "costsPerMinute": 1.7e+308,
- "costsInitial": 1.7e+308,
- "precTaskDate": "2020-04-10",
- "precTaskScheduled": "07:25",
- "precTaskDuration": 2147483647,
- "precNightShifts": 2147483647,
- "maxOrderedGroups": 2147483647,
- "maxDesiredOrderedGroups": 2147483647,
- "maxNightShifts": 2147483647,
- "maxDesiredNightShifts": 2147483647,
- "minFreeWeekends": 2147483647,
- "minDesiredFreeWeekends": 2147483647,
- "maxConsecutiveSameTaskStart": 2147483647,
- "maxDesiredConsecutiveSameTaskStart": 2147483647,
- "maxWeeklyWorkingDays": 2147483647,
- "prefWeeklyWorkingDays": 2147483647,
- "carryoverWorkingDaysLastWeek": 2147483647,
- "minConsecutiveFreeWeekends": 2147483647,
- "minDesiredConsecutiveFreeWeekends": 2147483647,
- "maxConsecutiveFreeWeekends": 2147483647,
- "maxDesiredConsecutiveFreeWeekends": 2147483647,
- "minConsecutiveWorkingWeekends": 2147483647,
- "minDesiredConsecutiveWorkingWeekends": 2147483647,
- "maxConsecutiveWorkingWeekends": 2147483647,
- "maxDesiredConsecutiveWorkingWeekends": 2147483647,
- "precWeekendWorkingDay": "2020-04-10",
- "carryoverConsecutiveWorkingWeekends": 2147483647,
- "consecutiveNightShiftsForOffdays": 2147483647,
- "minOffdaysAfterConsecutiveNightShifts": 2147483647,
- "workdayPattern": [
- 1,
- 1
], - "workdayCycle": {
- "cycleDuration": 1,
- "minFreeWeekends": 1,
- "minDesiredFreeWeekends": 1,
- "minOffdays": 1,
- "minDesiredOffdays": 1
}, - "fixedPresences": [
- {
- "date": "2020-04-10",
- "start": "07:25",
- "end": "07:25",
- "overlapConfig": 0
}
], - "preventSplitWeekends": false,
- "info": "string",
- "totalTaskTime": 2147483647
}
], - "statistics": {
- "impact": [
- {
- "label": "string",
- "value": 1,
- "absolute": 1.7e+308
}
], - "timeWindowViolationTaskIDs": [
- 2147483647
], - "unassignedTaskIDs": [
- 2147483647
], - "unassignableTaskIDs": [
- 2147483647
], - "history": {
- "workers": [
- {
- "workerID": 2147483647,
- "minConsecutiveWorkdays": 2147483647,
- "maxConsecutiveWorkdays": 2147483647,
- "minConsecutiveOffdays": 2147483647,
- "maxConsecutiveOffdays": 2147483647,
- "minFreeSaturdays": 2147483647,
- "minFreeSundays": 2147483647,
- "minFreeWeekends": 2147483647,
- "maxWeeklyWorkingDays": 2147483647,
- "maxNightShifts": 2147483647,
- "maxConsecutiveSameTaskStart": 2147483647,
- "weeklyShifts": [
- {
- "weekday": 6,
- "shiftStart": "07:25",
- "shiftEnd": "07:25",
- "workPreferenceFactor": -1
}
], - "preferenceFactor": 1.7e+308,
- "cycleStart": "2020-04-10"
}
]
}, - "preferredWorkers": {
- "matched": 2147483647,
- "unmatched": 2147483647,
- "unassigned": 2147483647
}, - "unpreferredWorkers": {
- "matched": 2147483647,
- "unmatched": 2147483647,
- "unassigned": 2147483647
}
}, - "info": {
- "text": "string",
- "feasible": true
}, - "anomalies": [
- {
- "anomalyKey": "string",
- "severity": "high",
- "text": "string",
- "taskID": 2147483647,
- "workerID": 2147483647
}
], - "backendVersion": {
- "version": "v1.0.0",
- "optVersion": "1970-01-01_0p0",
- "rev": "strings",
- "schema": "v1.2.3"
}, - "recovery": [
- 2147483647
], - "developerOptions": {
- "recovery": [
- 2147483647
], - "debugSolution": "string"
}
}Same behavior as the GET request but returns no content for any of the responses.
| planID required | string Key returned in the 200/201 response of the POST request |
"application/json" (string) or "application/vnd.adiutabyte.adiutaopt.json+gzip" (string) or "application/vnd.adiutabyte.adiutaopt.json+deflate" (string) or "application/vnd.adiutabyte.adiutaopt.json+br" (string) (optional) The | |
"identity" (string) or "gzip" (string) or "deflate" (string) (optional) The |
Get the currently deployed version.
Responses from this endpoint have a content size limit which depends on the used content-type of the response, which can be specified with the accept header. If the response size would exceed that limit, the endpoint returns code 409 instead. Responses of type application/json can include payloads of up to 6Mb, all other types can return up to 4.5Mb of (compressed) data.
| adiutaopt-version | string (optional) A specific version to process the request under. Valid versions can be retrieved with the /packages-list endpoint ( Using a specific version is not recommended for "general" application but for testing, debugging or other developer actions. Versions represent a specific state of the application, they cannot be changed, bug-fixed or extended in any way. For that reason, support for these requests may be limited. |
"application/json" (string) or "application/vnd.adiutabyte.adiutaopt.json+gzip" (string) or "application/vnd.adiutabyte.adiutaopt.json+deflate" (string) or "application/vnd.adiutabyte.adiutaopt.json+br" (string) (optional) The | |
"identity" (string) or "gzip" (string) or "deflate" (string) (optional) The |
curl \ --request GET \ --url '[see url above]' \ --header 'Authorization: Bearer [ID-Token obtained from Authentication (JWT)]'
{- "schema": "v1.7.0",
- "version": "2024-10-01_0",
- "meta_data": "v19",
- "api_scripts": "v1.6.2"
}Same behavior as the GET request but returns no content for any of the responses.
| adiutaopt-version | string (optional) A specific version to process the request under. Valid versions can be retrieved with the /packages-list endpoint ( Using a specific version is not recommended for "general" application but for testing, debugging or other developer actions. Versions represent a specific state of the application, they cannot be changed, bug-fixed or extended in any way. For that reason, support for these requests may be limited. |
"application/json" (string) or "application/vnd.adiutabyte.adiutaopt.json+gzip" (string) or "application/vnd.adiutabyte.adiutaopt.json+deflate" (string) or "application/vnd.adiutabyte.adiutaopt.json+br" (string) (optional) The | |
"identity" (string) or "gzip" (string) or "deflate" (string) (optional) The |
Get a list of all available packages. The Name of each package can be used in a POST request in header adiutaopt-version, the algorithm will then run on the specified version.
Responses from this endpoint have a content size limit which depends on the used content-type of the response, which can be specified with the accept header. If the response size would exceed that limit, the endpoint returns code 409 instead. Responses of type application/json can include payloads of up to 6Mb, all other types can return up to 4.5Mb of (compressed) data.
"application/json" (string) or "application/vnd.adiutabyte.adiutaopt.json+gzip" (string) or "application/vnd.adiutabyte.adiutaopt.json+deflate" (string) or "application/vnd.adiutabyte.adiutaopt.json+br" (string) (optional) The | |
"identity" (string) or "gzip" (string) or "deflate" (string) (optional) The |
curl \ --request GET \ --url '[see url above]' \ --header 'Authorization: Bearer [ID-Token obtained from Authentication (JWT)]'
[- {
- "Name": "a6b69c77bedb7",
- "LastModified": "2024-08-16T12:41:09.000Z",
- "Content": {
- "schema": "v2.7.0",
- "version": "2024-10-01_0",
- "meta_data": "v26"
}
}, - {
- "Name": "d63ca460db7bc",
- "LastModified": "2024-08-16T09:16:09.000Z",
- "Content": {
- "schema": "v2.3.0",
- "version": "2024-10-01_0p0",
- "meta_data": "v26"
}
}
]Same behavior as the GET request but returns no content for any of the responses.
"application/json" (string) or "application/vnd.adiutabyte.adiutaopt.json+gzip" (string) or "application/vnd.adiutabyte.adiutaopt.json+deflate" (string) or "application/vnd.adiutabyte.adiutaopt.json+br" (string) (optional) The | |
"identity" (string) or "gzip" (string) or "deflate" (string) (optional) The |
A string consisting of three parts following the pattern "YYYY-MM-DD":
While the schema does not check for validity, the optimization algorithms do. Including invalid dates (e.g. 2020-02-31) leads to a validation error.
Examples:
"2020-04-10"Unsigned 64bit number with the upper limit of a signed 64bit number
1.7e+308Unsigned 32 bit integer with the upper limit of a signed 32bit integer
2147483647Unsigned 32 bit integer with the upper limit of a signed 32bit integer
[- 2147483647
]Unsigned 32 bit integer (not zero) with the upper limit of a signed 32bit integer
1| dateFrom required | string (Date) ^[0-9]{4}-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2][0-9... Planning horizon start. |
| dateTo required | string (Date) ^[0-9]{4}-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2][0-9... Planning horizon end. |
| resCategory | boolean Default: false Activate/Deactivate whether category types should be considered in the optimization. |
| resQualification | boolean Default: false Activate/Deactivate whether qualifications should be considered in the optimization. |
| accuracyMode | number (Number_u64) [ 0 .. 1.7e+308 ] Default: 1 Manages a solution refinement process. An accuracy > 0.0 can improve the solution significantly but will take longer to calculate, effects increase with higher |
| outputLanguage | integer (LanguageType) [ 0 .. 1 ] Default: 0 Defines which language should be used in the output. |
| minQualificationOfTaskCoverage | integer (Integer_u32) [ 0 .. 2147483647 ] At each minute between |
| omnipresentCategoriesOfTaskCoverage | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] For each of these categories, at each minute between |
| enablePlanSplitting | boolean Deprecated Default: true |
| allowUnassignedTasks | boolean Default: false If this flag is set to false, all tasks will be assigned by the algorithm (for exceptions regarding unassignable tasks, see |
| removeInvalidTasks | boolean If this flag is set to false and the input data contains tasks that cannot be assigned to any worker (e.g. no worker has a qualification high enough for the task), an If this field is not set, it will assume the value of |
| followBiorhythm | boolean Default: false Tasks shall be spaced out so that there is at least a 24h time span between the start of consecutive tasks on the same worker. |
| minConcurrentSolutions | integer (Integer_u32_1) [ 1 .. 2147483647 ] Default: 1 Number of concurrently calculated solutions. Developer feature, use at your own risk! |
| minTaskDuration | integer (Integer_u32) [ 0 .. 2147483647 ] Default: 0 Minimum value for an input task's duration. Task durations with a lower value are being overwritten before the optimization. Profit calculations (e.g. |
{- "dateFrom": "2020-04-10",
- "dateTo": "2020-04-10",
- "resCategory": false,
- "resQualification": false,
- "accuracyMode": 1.7e+308,
- "outputLanguage": 1,
- "minQualificationOfTaskCoverage": 2147483647,
- "omnipresentCategoriesOfTaskCoverage": [
- 2147483647
], - "enablePlanSplitting": true,
- "allowUnassignedTasks": false,
- "removeInvalidTasks": true,
- "followBiorhythm": false,
- "minConcurrentSolutions": 1,
- "minTaskDuration": 2147483647
}| preset | integer [ 0 .. 0 ] Sets the parameters to a predefined preset. Additionally specified parameters will override the preset parameters. Preset descriptions: Preset 0 (Random):
Preset 0 is a dummy preset that must be used for testing only and never in production environments. Due to the random nature of the preset, we are not able to provide full support for any optimization request using this preset. |
| fairDistribution | integer (Integer_0_9) [ 0 .. 9 ] Default: 0 Distribute the tasks fairly among the workers. A fair distribution is one where every worker has the same number of tasks assigned. |
| timeliness | integer (Integer_0_9) [ 0 .. 9 ] Default: 0 Optimize towards satisfying the time windows. |
| workerPrefs | integer (Integer_0_9) [ 0 .. 9 ] Default: 0 Try to satisfy the workers' preferences. |
| teamPrefs | integer (Integer_0_9) [ 0 .. 9 ] Default: 0 Try to satisfy preferences between workers. |
| taskPrefs | integer (Integer_0_9) [ 0 .. 9 ] Default: 0 Try to satisfy preferences set in tasks. |
| worktimePrefs | integer (Integer_0_9) [ 0 .. 9 ] Default: 0 Try to satisfy the working time restrictions specified. |
| workerReduction | integer (Integer_0_9) [ 0 .. 9 ] Default: 0 Reduce the number of necessary workers by creating imbalanced schedules where as many workers as possible have as few as possible tasks. |
| genderPref | integer (Integer_0_9) [ 0 .. 9 ] Default: 0 Try to satisfy any tasks' gender preferences. Setting this parameter to 9 will force the algorithm to consider |
| profitability | integer (Integer_0_9) [ 0 .. 9 ] Default: 0 Optimize towards high profitability, requires costs to be set on the worker to have an effect. |
{- "preset": 0,
- "fairDistribution": 9,
- "timeliness": 9,
- "workerPrefs": 9,
- "teamPrefs": 9,
- "taskPrefs": 9,
- "worktimePrefs": 9,
- "workerReduction": 9,
- "genderPref": 9,
- "profitability": 9
}A string of either format "hh:mm" or "-hh:mm":
Times are always interpreted relative to a date in the same object as the Time field. This allows times to exceed 24h or even become negative, as the value gets "added" to midnight of the date. For example, the following times applied to the respective date (in Date format) are equivalent:
"07:25"Values are:
3| taskID required | integer (Integer_u32) [ 0 .. 2147483647 ] The ID of this task. IDs need to be unique among all tasks. |
| externalID | string A string to identify the task in the solution. Cannot be used for reference in the input data or the optimizer, it only serves as a helping tool for integrations. |
| date required | string (Date) ^[0-9]{4}-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2][0-9... The date this task should be planned on. |
| duration required | integer (Integer_u32) [ 0 .. 2147483647 ] The time in minutes it takes to complete this task. |
| timeEarliest required | string (Time) ^[-]?([0-9]{1,9}):([0-5][0-9]|[0-9])$ The earliest possible starting time of this task. This is a preference and can be violated for other preferences or restrictions. Its importance depends on the parameter |
| timeLatest required | string (Time) ^[-]?([0-9]{1,9}):([0-5][0-9]|[0-9])$ The latest time at which this task should be finished. This is a preference and can be violated for other preferences or restrictions. Its importance depends on the parameter |
| timePriority | integer (Integer_0_5) [ 0 .. 5 ] Default: 1 The priority of the time window:
Tasks with high time priority are more likely to get scheduled inside their given time window. Tasks with time priority 0 completely ignore their given time window. For tasks with a |
| prefWorkers | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] The IDs of preferred workers. This is a preference and can be violated for other preferences or restrictions. Its importance depends on the parameter |
| forbWorkers | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] The IDs of forbidden workers. This is a strict restriction and might fail validation if it is impossible to keep. |
| unpreferredWorkers | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] The IDs of workers to which an assignment is undesirable but not forbidden. This is a preference and can be violated for other preferences or restrictions. Its importance depends on the parameter |
| antiWorkers | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] Deprecated Alias for |
| qualification | integer (Integer_u32) [ 0 .. 2147483647 ] The minimum qualification of the worker required to perform the task (e.g. years of experience). Workers without qualification are not allowed to perform tasks of any qualification. This is a strict restriction and might fail validation if it is impossible to keep. |
| maxQualification | integer (Integer_u32) [ 0 .. 2147483647 ] The maximum qualification of the worker allowed to perform the task. Workers without qualification can carry out any task with qualification (as long as the other restrictions are not violated). This is a strict restriction and might fail validation if it is impossible to keep. |
| categories | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] A suitable worker has to fulfill all of these categories. This is a strict restriction and might fail validation if it is impossible to keep. |
| exchangeableCategories | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] A suitable worker has to fulfill at least one of these categories. This is a strict restriction and might fail validation if it is impossible to keep. |
| preassignedWorker | integer (Integer_u32) [ 0 .. 2147483647 ] The This is a strict restriction and might fail validation if it is impossible to keep. |
| preassignedOrder | integer (Integer_s32) [ -2147483648 .. 2147483647 ] Tasks with a value > 0 will be assigned as the first tasks of the This is a strict restriction and might fail validation if it is impossible to keep. |
| desiredWorker | integer (Integer_u32) [ 0 .. 2147483647 ] The ID of the worker who is desired (strong preference) to take over this task. This is a preference and can be violated for other preferences or restrictions. |
| prefGender | integer (GenderType) [ 0 .. 3 ] The preferred gender for the assigned worker. This usually is a preference and can be violated for other preferences or restrictions. Its importance depends on the parameter |
| precedingTasks | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] Tasks in this list and this task will be performed by the same worker and all listed tasks will have to be finished before this task starts. This is a strict restriction and might fail validation if it is impossible to keep. |
| predecessorTasks | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] One of these tasks has be carried out right before this task by the same worker. Putting multiple values in the array does not mean they are carried out in that order - if you want to have a predecessor-chain, you need to set the direct predecessor on each task in the chain (see examples). Do not put redundant values in here, as having more than one value in the array has negative impact on performance and solution quality. This is a strict restriction and might fail validation if it is impossible to keep. |
| group | integer (Integer_u32) [ 0 .. 2147483647 ] A group ID. Tasks with the same group get assigned to the same worker. This is a strict restriction and might fail validation if it is impossible to keep. |
| groupOrder | integer (Integer_u32) [ 0 .. 2147483647 ] Deprecated Unsigned 32 bit integer with the upper limit of a signed 32bit integer |
| revenue | number (Number_u64) [ 0 .. 1.7e+308 ] Default: 0 The revenue which will be achieved with this task. |
| initassignedShift | integer (Integer_u32) [ 0 .. 2147483647 ] Deprecated Unsigned 32 bit integer with the upper limit of a signed 32bit integer |
| assignmentPriority | integer (Integer_0_5) [ 0 .. 5 ] Default: 1 A priority for assignment (see
If For tasks with an |
| initassignedWorker | integer (Integer_u32) [ 0 .. 2147483647 ] A hint for large optimization data sets, e.g. solution data from a previous optimization request. The field can also be used for |
| initassignedOrder | integer (Integer_u32) [ 0 .. 2147483647 ] Requires |
{- "taskID": 2147483647,
- "externalID": "string",
- "date": "2020-04-10",
- "duration": 2147483647,
- "timeEarliest": "07:25",
- "timeLatest": "07:25",
- "timePriority": 5,
- "prefWorkers": [
- 2147483647
], - "forbWorkers": [
- 2147483647
], - "unpreferredWorkers": [
- 2147483647
], - "antiWorkers": [
- 2147483647
], - "qualification": 2147483647,
- "maxQualification": 2147483647,
- "categories": [
- 2147483647
], - "exchangeableCategories": [
- 2147483647
], - "preassignedWorker": 2147483647,
- "preassignedOrder": -2147483648,
- "desiredWorker": 2147483647,
- "prefGender": 3,
- "precedingTasks": [
- 2147483647
], - "predecessorTasks": [
- 2147483647
], - "group": 2147483647,
- "groupOrder": 2147483647,
- "revenue": 1.7e+308,
- "initassignedShift": 2147483647,
- "assignmentPriority": 5,
- "initassignedWorker": 2147483647,
- "initassignedOrder": 2147483647
}| shiftID | integer (Integer_u32) [ 0 .. 2147483647 ] Deprecated Unsigned 32 bit integer with the upper limit of a signed 32bit integer |
| shiftDate required | string (Date) ^[0-9]{4}-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2][0-9... The date this time slot is available on. |
| shiftStart required | string (Time) ^[-]?([0-9]{1,9}):([0-5][0-9]|[0-9])$ The time this time slot starts. |
| shiftEnd required | string (Time) ^[-]?([0-9]{1,9}):([0-5][0-9]|[0-9])$ The time this time slot ends. |
| shiftPriority | integer (Integer_0_3) [ 0 .. 3 ] Default: 1 The priority to assign tasks within the defined shift start/end times.
|
{- "shiftID": 2147483647,
- "shiftDate": "2020-04-10",
- "shiftStart": "07:25",
- "shiftEnd": "07:25",
- "shiftPriority": 3
}Set preferences regarding overlap
0| date required | string (Date) ^[0-9]{4}-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2][0-9... The date this time slot is available on. |
| start required | string (Time) ^[-]?([0-9]{1,9}):([0-5][0-9]|[0-9])$ The time this time slot starts. |
| end required | string (Time) ^[-]?([0-9]{1,9}):([0-5][0-9]|[0-9])$ The time this time slot ends. |
| overlapConfig | integer (OverlapConfigType) [ 0 .. 0 ] Modify preferences regarding this slot being overlapped by a task. |
{- "date": "2020-04-10",
- "start": "07:25",
- "end": "07:25",
- "overlapConfig": 0
}| workerID required | integer (Integer_u32) [ 0 .. 2147483647 ] The ID of the worker. Needs to be unique among all workers. |
| externalID | string A string to identify the worker in the solution. Cannot be used for reference in the input data or the optimizer, it only serves as a helping tool for integrations. |
Array of objects (ShiftPlannerShift) The time slots during which the worker can carry out tasks. | |
| qualification | integer (Integer_u32) [ 0 .. 2147483647 ] The qualification of the worker. They are able to take over tasks with the same or lower qualifications. |
| categories | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] The worker can only carry out tasks if he has each category the task requires. |
| desiredCategory | integer (Integer_u32) [ 0 .. 2147483647 ] The worker has a strong preference towards tasks with this category. The value already counts as a category and does not need to be included in This is a preference and can be violated for other preferences or restrictions. |
| prefCategories | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] The task categories preferred by the worker. Values already count as a categories and do not need to be included in This is a preference and can be violated for other preferences or restrictions. Its importance depends on the parameter |
| prefWeekCategories | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] The task categories preferred by the worker on any week day (Mon-Fri). Values already count as a categories and do not need to be included in This is a preference and can be violated for other preferences or restrictions. Its importance depends on the parameter |
| prefWeekendCategories | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] The task categories preferred by the worker on any weekend day (Sat, Sun). Values already count as a categories and do not need to be included in This is a preference and can be violated for other preferences or restrictions. Its importance depends on the parameter |
| prefWorkers | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] The workers that this worker prefers to have simultaneous shifts with. This is a preference and can be violated for other preferences or restrictions. Its importance depends on the parameter |
| unpreferredWorkers | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] The workers that this worker prefers to not have simultaneous shifts with. This is a preference and can be violated for other preferences or restrictions. Its importance depends on the parameter |
| antiWorkers | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] Deprecated Alias for |
| gender | integer (GenderType) [ 0 .. 3 ] The gender type of the worker. |
| expectedWorkingMinutes | integer (Integer_u32) [ 0 .. 2147483647 ] The preferred amount of working time minutes for this worker in the final plan, deviation in both directions will be kept as low as possible. This is a preference and can be violated for other preferences or restrictions. Its importance depends on the parameter |
| minWorkingMinutes | integer (Integer_u32) [ 0 .. 2147483647 ] Default: 0 The minimum amount of working time minutes for this worker in the final plan. This is a preference and can be violated for other preferences or restrictions. |
| maxWorkingMinutes | integer (Integer_u32) [ 0 .. 2147483647 ] The maximum amount of working time minutes for this worker in the final plan. This is a preference and can be violated for other preferences or restrictions. |
| maxConsecutiveWorkdays | integer (Integer_u32) [ 0 .. 2147483647 ] Maximum number of consecutive workdays. A day is a workday if any work is performed from 00:00 to 23:59. This is a preference and can be violated for other preferences or restrictions. |
| minConsecutiveWorkdays | integer (Integer_u32) [ 0 .. 2147483647 ] Default: 0 Minimum number of consecutive workdays. A day is a workday if any work is performed from 00:00 to 23:59. This is a preference and can be violated for other preferences or restrictions. |
| prefConsecutiveWorkdays | integer (Integer_u32) [ 0 .. 2147483647 ] The preferred number of working days in a row. This is a preference and can be violated for other preferences or restrictions. Its importance depends on the parameter |
| carryoverConsecutiveWorkdays | integer (Integer_u32) [ 0 .. 2147483647 ] Can not be used with |
| maxConsecutiveOffdays | integer (Integer_u32) [ 0 .. 2147483647 ] Maximum number of consecutive days off. A day counts as a "day off" if no work is performed from 00:00 to 23:59. This is a preference and can be violated for other preferences or restrictions. |
| minConsecutiveOffdays | integer (Integer_u32) [ 0 .. 2147483647 ] Default: 0 Minimum number of consecutive days off. A day counts as a "day off" if no work is performed from 00:00 to 23:59. This is a preference and can be violated for other preferences or restrictions. |
| prefConsecutiveOffdays | integer (Integer_u32) [ 0 .. 2147483647 ] The preferred number of non-working days in a row. This is a preference and can be violated for other preferences or restrictions. Its importance depends on the parameter |
| carryoverConsecutiveOffdays | integer (Integer_u32) [ 0 .. 2147483647 ] Can not be used with |
| minBreakMinutesBetweenTasks | integer (Integer_u32) [ 0 .. 2147483647 ] Default: 0 Minimum number of minutes break between two Tasks that start on different days. This is a strict restriction and might fail validation if it is impossible to keep. |
| maxDailyWorkingMinutes | integer (Integer_u32) [ 0 .. 2147483647 ] Maximum number of working minutes per day. This is a preference and can be violated for other preferences or restrictions. |
| maxDailyTasks | integer (Integer_u32) [ 0 .. 2147483647 ] Maximum number of tasks per day. Tasks count towards the day they start in. "Predecessor-Chains" (sets of tasks linked to a "chain" by This is a strict restriction and might fail validation if it is impossible to keep. |
| minFreeSaturdays | integer (Integer_u32) [ 0 .. 2147483647 ] Default: 0 Minimum number of work-free Saturdays for this worker. This is a strict restriction and might fail validation if it is impossible to keep. |
| minFreeSundays | integer (Integer_u32) [ 0 .. 2147483647 ] Default: 0 Minimum number of work-free Sundays for this worker. This is a strict restriction and might fail validation if it is impossible to keep. |
| maxWeeklyWorkingMinutes | integer (Integer_u32) [ 0 .. 2147483647 ] Maximum minutes working time for this worker each calendar week (Monday to Sunday). Please note that the week cycle might be independent from the planning horizon, use carryoverWorkingMinutesLastWeek in conflicting cases. This is a preference and can be violated for other preferences or restrictions. |
| carryoverWorkingMinutesLastWeek | integer (Integer_u32) [ 0 .. 2147483647 ] Minutes of worktime already performed by this worker in the week that dateFrom belongs to. The value is factored in by maxWeeklyWorkingMinutes and maxTwoWeekWorkingMinutes but not expectedWorkingMinutes! |
| maxTwoWeekWorkingMinutes | integer (Integer_u32) [ 0 .. 2147483647 ] Maximum minutes working time for this worker for every two consecutive calendar weeks (Monday to Sunday). Please note that the week cycle is independent from the planning horizon, use carryoverWorkingMinutesLastWeek and carryoverWorkingMinutesSecondLastWeek in conflicting cases. This is a preference and can be violated for other preferences or restrictions. |
| carryoverWorkingMinutesSecondLastWeek | integer (Integer_u32) [ 0 .. 2147483647 ] Minutes of worktime already performed by this worker in the week prior to the earliest shiftStart (pre v3.8.12)/ dateFrom (v3.8.12) of any Worker in this plan. The value is factored in by maxWeeklyWorkingMinutes and maxTwoWeekWorkingMinutes but not expectedWorkingMinutes! |
| dontVary | boolean A worker with dontVary set to true is "fixed" for the optimizer, meaning they get assigned all tasks (and only those tasks) that have this worker set as This is a strict restriction and might fail validation if it is impossible to keep. |
| dontAlter | boolean Default: false Workers with This is a strict restriction and might fail validation if it is impossible to keep. |
| allowPreassignedTasksOnly | boolean Default: false If this flag is true, only tasks preassigned to this worker can be assigned to it. Tasks not preassigned to this worker cannot be assigned to it. This is a strict restriction and might fail validation if it is impossible to keep. |
| costsPerMinute | number (Number_u64) [ 0 .. 1.7e+308 ] Default: 0 The costs per minute working time (carrying out tasks) for this worker (e.g. monthly salary converted to minutes). |
| costsInitial | number (Number_u64) [ 0 .. 1.7e+308 ] Default: 0 Costs that occur if there is at least one task assigned to the worker. |
| precTaskDate | string (Date) ^[0-9]{4}-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2][0-9... Date of the last task the worker carried out before the start of this plan. |
| precTaskScheduled | string (Time) ^[-]?([0-9]{1,9}):([0-5][0-9]|[0-9])$ Scheduled time of the last task the worker carried out before the start of this plan. |
| precTaskDuration | integer (Integer_u32) [ 0 .. 2147483647 ] Duration of the last task the worker carried out before the start of this plan. |
| precNightShifts | integer (Integer_u32) [ 0 .. 2147483647 ] Amount of consecutive "night shifts" the worker carried out directly before the start of this plan. Those are tasks that are scheduled in a way that they overlap with midnight. For more details see below. |
| maxOrderedGroups | integer (Integer_u32) [ 0 .. 2147483647 ] The maximum number of task sets with same group and set group order that can be assigned to this worker. |
| maxDesiredOrderedGroups | integer (Integer_u32) [ 0 .. 2147483647 ] A preference for the maximum number of task sets with same group and set group order that can be assigned to this worker. This is a strict restriction and might fail validation if it is impossible to keep. |
| maxNightShifts | integer (Integer_u32) [ 0 .. 2147483647 ] The maximum number of "night shifts" this worker can get assigned. This is a strict restriction and might fail validation if it is impossible to keep. |
| maxDesiredNightShifts | integer (Integer_u32) [ 0 .. 2147483647 ] A preference for the maximum number of "night shifts" this worker can get assigned. This is a preference and can be violated for other preferences or restrictions. |
| minFreeWeekends | integer (Integer_u32) [ 0 .. 2147483647 ] Default: 0 The minimum number of completely free weekends with no work on either Saturday or Sunday. This is a strict restriction and might fail validation if it is impossible to keep. |
| minDesiredFreeWeekends | integer (Integer_u32) [ 0 .. 2147483647 ] Default: 0 A preference for the minimum number of completely free weekends with no work on either Saturday or Sunday. This is a preference and can be violated for other preferences or restrictions. |
| maxConsecutiveSameTaskStart | integer (Integer_u32) [ 0 .. 2147483647 ] Can not be used with This is a strict restriction and might fail validation if it is impossible to keep. |
| maxDesiredConsecutiveSameTaskStart | integer (Integer_u32) [ 0 .. 2147483647 ] Can not be used with This is a preference and can be violated for other preferences or restrictions. |
| maxWeeklyWorkingDays | integer (Integer_u32) [ 0 .. 2147483647 ] The maximum number of tasks in one week. Tasks only count for the week they start in ( This is a strict restriction and might fail validation if it is impossible to keep. |
| prefWeeklyWorkingDays | integer (Integer_u32) [ 0 .. 2147483647 ] The preferred maximum number of tasks in one week. Tasks only count for the week they start in ( This is a preference and can be violated for other preferences or restrictions. |
| carryoverWorkingDaysLastWeek | integer (Integer_u32) [ 0 .. 2147483647 ] Number of already carried-out workdays in the week that |
| minConsecutiveFreeWeekends | integer (Integer_u32) [ 0 .. 2147483647 ] Default: 0 The minimum amount of consecutive weekends without any tasks assigned (task starting on either Saturday or Sunday). This restriction does not apply to the end of the planning horizon, there may be less free weekends than set here right before This is a strict restriction and might fail validation if it is impossible to keep. |
| minDesiredConsecutiveFreeWeekends | integer (Integer_u32) [ 0 .. 2147483647 ] Default: 0 The desired minimum amount of consecutive weekends without any tasks assigned (task starting on either Saturday or Sunday). This restriction does not apply to the end of the planning horizon, there may be less free weekends than set here right before This is a preference and can be violated for other preferences or restrictions. |
| maxConsecutiveFreeWeekends | integer (Integer_u32) [ 0 .. 2147483647 ] The maximum amount of consecutive weekends without any tasks assigned (task starting on either Saturday or Sunday). This is a strict restriction and might fail validation if it is impossible to keep. |
| maxDesiredConsecutiveFreeWeekends | integer (Integer_u32) [ 0 .. 2147483647 ] The desired maximum amount of consecutive weekends without any tasks assigned (task starting on either Saturday or Sunday). This is a preference and can be violated for other preferences or restrictions. |
| minConsecutiveWorkingWeekends | integer (Integer_u32) [ 0 .. 2147483647 ] Default: 0 The minimum amount of consecutive weekends with at least one task assigned (task starting on either Saturday or Sunday). This is a strict restriction and might fail validation if it is impossible to keep. |
| minDesiredConsecutiveWorkingWeekends | integer (Integer_u32) [ 0 .. 2147483647 ] Default: 0 The desired minimum amount of consecutive weekends with at least one task assigned (task starting on either Saturday or Sunday). This is a preference and can be violated for other preferences or restrictions. |
| maxConsecutiveWorkingWeekends | integer (Integer_u32) [ 0 .. 2147483647 ] The maximum amount of consecutive weekends with at least one task assigned (task starting on either Saturday or Sunday). This is a strict restriction and might fail validation if it is impossible to keep. |
| maxDesiredConsecutiveWorkingWeekends | integer (Integer_u32) [ 0 .. 2147483647 ] The desired maximum amount of consecutive weekends with at least one task assigned (task starting on either Saturday or Sunday). This is a preference and can be violated for other preferences or restrictions. |
| precWeekendWorkingDay | string (Date) ^[0-9]{4}-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2][0-9... The latest working day on a weekend before |
| carryoverConsecutiveWorkingWeekends | integer (Integer_u32) [ 0 .. 2147483647 ] The amount of consecutive weekends with at least one task performed on either Saturday or Sunday on and before the first complete weekend before |
| consecutiveNightShiftsForOffdays | integer (Integer_u32) [ 0 .. 2147483647 ] After a night shift streak consisting of this or more night shifts, there have to be a number of days off (number of days is defined in |
| minOffdaysAfterConsecutiveNightShifts | integer (Integer_u32) [ 0 .. 2147483647 ] Default: 0 The number of days off after a corresponding trigger. This is a strict restriction and might fail validation if it is impossible to keep. |
| workdayPattern | Array of integers (Integer_u32_1) >= 2 items [ items [ 1 .. 2147483647 ] ] This field can be used to define irregular workday patterns. There must be an even number of entries, where each even numbered entry (starting at zero) is the number of workdays and each odd numbered entry the number of days off. Example: The array If no history data is provided, the rhythm will start on This is a preference and can be violated for other preferences or restrictions. |
object Define workday restrictions for a smaller periods of time (e.g. 7 days, 14 days) than the whole plan. Those cycles loop until If no history data is provided, the first cycle will start on | |
Array of objects (TimeSlot) The worker will definitely work during the time slots specified here. Tasks can overlap the time slots, in which case they get "merged" onto the overlapping task. If the time slot does not get overlapped, it counts as a regular task. Time slots may not overlap each other. | |
| preventSplitWeekends | boolean Default: false If true, the algorithm will avoid scheduling tasks on only one day of the weekend - this worker should be working either on both days or none. This is a preference and can be violated for other preferences or restrictions. |
{- "workerID": 2147483647,
- "externalID": "string",
- "shifts": [
- {
- "shiftID": 2147483647,
- "shiftDate": "2020-04-10",
- "shiftStart": "07:25",
- "shiftEnd": "07:25",
- "shiftPriority": 3
}
], - "qualification": 2147483647,
- "categories": [
- 2147483647
], - "desiredCategory": 2147483647,
- "prefCategories": [
- 2147483647
], - "prefWeekCategories": [
- 2147483647
], - "prefWeekendCategories": [
- 2147483647
], - "prefWorkers": [
- 2147483647
], - "unpreferredWorkers": [
- 2147483647
], - "antiWorkers": [
- 2147483647
], - "gender": 3,
- "expectedWorkingMinutes": 2147483647,
- "minWorkingMinutes": 2147483647,
- "maxWorkingMinutes": 2147483647,
- "maxConsecutiveWorkdays": 2147483647,
- "minConsecutiveWorkdays": 2147483647,
- "prefConsecutiveWorkdays": 2147483647,
- "carryoverConsecutiveWorkdays": 2147483647,
- "maxConsecutiveOffdays": 2147483647,
- "minConsecutiveOffdays": 2147483647,
- "prefConsecutiveOffdays": 2147483647,
- "carryoverConsecutiveOffdays": 2147483647,
- "minBreakMinutesBetweenTasks": 2147483647,
- "maxDailyWorkingMinutes": 2147483647,
- "maxDailyTasks": 2147483647,
- "minFreeSaturdays": 2147483647,
- "minFreeSundays": 2147483647,
- "maxWeeklyWorkingMinutes": 2147483647,
- "carryoverWorkingMinutesLastWeek": 2147483647,
- "maxTwoWeekWorkingMinutes": 2147483647,
- "carryoverWorkingMinutesSecondLastWeek": 2147483647,
- "dontVary": true,
- "dontAlter": false,
- "allowPreassignedTasksOnly": false,
- "costsPerMinute": 1.7e+308,
- "costsInitial": 1.7e+308,
- "precTaskDate": "2020-04-10",
- "precTaskScheduled": "07:25",
- "precTaskDuration": 2147483647,
- "precNightShifts": 2147483647,
- "maxOrderedGroups": 2147483647,
- "maxDesiredOrderedGroups": 2147483647,
- "maxNightShifts": 2147483647,
- "maxDesiredNightShifts": 2147483647,
- "minFreeWeekends": 2147483647,
- "minDesiredFreeWeekends": 2147483647,
- "maxConsecutiveSameTaskStart": 2147483647,
- "maxDesiredConsecutiveSameTaskStart": 2147483647,
- "maxWeeklyWorkingDays": 2147483647,
- "prefWeeklyWorkingDays": 2147483647,
- "carryoverWorkingDaysLastWeek": 2147483647,
- "minConsecutiveFreeWeekends": 2147483647,
- "minDesiredConsecutiveFreeWeekends": 2147483647,
- "maxConsecutiveFreeWeekends": 2147483647,
- "maxDesiredConsecutiveFreeWeekends": 2147483647,
- "minConsecutiveWorkingWeekends": 2147483647,
- "minDesiredConsecutiveWorkingWeekends": 2147483647,
- "maxConsecutiveWorkingWeekends": 2147483647,
- "maxDesiredConsecutiveWorkingWeekends": 2147483647,
- "precWeekendWorkingDay": "2020-04-10",
- "carryoverConsecutiveWorkingWeekends": 2147483647,
- "consecutiveNightShiftsForOffdays": 2147483647,
- "minOffdaysAfterConsecutiveNightShifts": 2147483647,
- "workdayPattern": [
- 1,
- 1
], - "workdayCycle": {
- "cycleDuration": 1,
- "minFreeWeekends": 1,
- "minDesiredFreeWeekends": 1,
- "minOffdays": 1,
- "minDesiredOffdays": 1
}, - "fixedPresences": [
- {
- "date": "2020-04-10",
- "start": "07:25",
- "end": "07:25",
- "overlapConfig": 0
}
], - "preventSplitWeekends": false
}| date required | string (Date) ^[0-9]{4}-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2][0-9... The date of the assignment. |
| assignedWorker | integer (Integer_u32) [ 0 .. 2147483647 ] The worker ( |
| assignedWorkerAutomatically | integer (Integer_u32) [ 0 .. 2147483647 ] The worker the corresponding task was assigned to by the optimizer at the time. |
| actualWorker | integer (Integer_u32) [ 0 .. 2147483647 ] The worker the task was actually carried out by, for instance as determined by mobile tracking. |
| actualStartTime | string (Time) ^[-]?([0-9]{1,9}):([0-5][0-9]|[0-9])$ The time the task was actually started, for instance as determined by mobile tracking. |
{- "date": "2020-04-10",
- "assignedWorker": 2147483647,
- "assignedWorkerAutomatically": 2147483647,
- "actualWorker": 2147483647,
- "actualStartTime": "07:25"
}| taskID required | integer (Integer_u32) [ 0 .. 2147483647 ] The ID of this task, unique among all history tasks. Has to correspond to a |
required | Array of objects (ShiftPlannerHistoryAssignment) All historical assignments of this task. |
{- "taskID": 2147483647,
- "scheduling": [
- {
- "date": "2020-04-10",
- "assignedWorker": 2147483647,
- "assignedWorkerAutomatically": 2147483647,
- "actualWorker": 2147483647,
- "actualStartTime": "07:25"
}
]
}| workerID required | integer (Integer_u32) [ 0 .. 2147483647 ] The ID of this worker, unique among all history workers. Has to correspond to a |
| excludedDays | Array of strings (Date) [ items^[0-9]{4}-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2][0-9... ] Dates that should be disregarded for historical analysis (e.g. sick days, schooling, ...). |
| preferenceFulfilledOn | Array of strings (Date) [ items^[0-9]{4}-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2][0-9... ] Days on which a preference was fulfilled. |
| preferenceNotFulfilledOn | Array of strings (Date) [ items^[0-9]{4}-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2][0-9... ] Days on which a preference was not fulfilled. |
{- "workerID": 2147483647,
- "excludedDays": [
- "2020-04-10"
], - "preferenceFulfilledOn": [
- "2020-04-10"
], - "preferenceNotFulfilledOn": [
- "2020-04-10"
]
}required | Array of objects (ShiftPlannerHistoryTask) All historical task data. |
required | Array of objects (ShiftPlannerHistoryWorker) Historical worker data. |
Array of objects (ShiftPlannerInputTask) All tasks that are relevant for the analysis but are not part of the optimization. |
{- "tasks": [
- {
- "taskID": 2147483647,
- "scheduling": [
- {
- "date": "2020-04-10",
- "assignedWorker": 2147483647,
- "assignedWorkerAutomatically": 2147483647,
- "actualWorker": 2147483647,
- "actualStartTime": "07:25"
}
]
}
], - "workers": [
- {
- "workerID": 2147483647,
- "excludedDays": [
- "2020-04-10"
], - "preferenceFulfilledOn": [
- "2020-04-10"
], - "preferenceNotFulfilledOn": [
- "2020-04-10"
]
}
], - "additionalTasks": [
- {
- "taskID": 2147483647,
- "externalID": "string",
- "date": "2020-04-10",
- "duration": 2147483647,
- "timeEarliest": "07:25",
- "timeLatest": "07:25",
- "timePriority": 5,
- "prefWorkers": [
- 2147483647
], - "forbWorkers": [
- 2147483647
], - "unpreferredWorkers": [
- 2147483647
], - "antiWorkers": [
- 2147483647
], - "qualification": 2147483647,
- "maxQualification": 2147483647,
- "categories": [
- 2147483647
], - "exchangeableCategories": [
- 2147483647
], - "preassignedWorker": 2147483647,
- "preassignedOrder": -2147483648,
- "desiredWorker": 2147483647,
- "prefGender": 3,
- "precedingTasks": [
- 2147483647
], - "predecessorTasks": [
- 2147483647
], - "group": 2147483647,
- "groupOrder": 2147483647,
- "revenue": 1.7e+308,
- "initassignedShift": 2147483647,
- "assignmentPriority": 5,
- "initassignedWorker": 2147483647,
- "initassignedOrder": 2147483647
}
]
}| recovery | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] [developer feature] Contains recovery data that can be used to reproduce timeout behaviour. |
| debugSolution | string [developer feature] Contains data for (re-)producing specific solutions. |
{- "recovery": [
- 2147483647
], - "debugSolution": "string"
}object (Client) Contains information about the client which sends this request. | |
required | object (ShiftPlannerMeta) Meta information about what to consider in the optimization. |
required | object (ShiftPlannerOptimizationParameters) Parameters for the optimizer. |
required | Array of objects (ShiftPlannerInputTask) Array of Tasks to be planned by the optimizer. |
required | Array of objects (ShiftPlannerInputWorker) Array of available Workers. |
object (ShiftPlannerHistory) History data the optimizer can learn from to apply to the current request. History analysis is done differently for each of our customers, if you know what issues you want to address/ what results you want to see from such methods, please contact us so we can set up a solution. | |
| recovery | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] Deprecated List of ids. |
object (DeveloperOptions) Options for developers. Do not use! |
{- "client": {
- "clientID": "logisticscenter_a"
}, - "meta": {
- "dateFrom": "2020-04-10",
- "dateTo": "2020-04-10",
- "resCategory": false,
- "resQualification": false,
- "accuracyMode": 1.7e+308,
- "outputLanguage": 1,
- "minQualificationOfTaskCoverage": 2147483647,
- "omnipresentCategoriesOfTaskCoverage": [
- 2147483647
], - "enablePlanSplitting": true,
- "allowUnassignedTasks": false,
- "removeInvalidTasks": true,
- "followBiorhythm": false,
- "minConcurrentSolutions": 1,
- "minTaskDuration": 2147483647
}, - "parameters": {
- "preset": 0,
- "fairDistribution": 9,
- "timeliness": 9,
- "workerPrefs": 9,
- "teamPrefs": 9,
- "taskPrefs": 9,
- "worktimePrefs": 9,
- "workerReduction": 9,
- "genderPref": 9,
- "profitability": 9
}, - "tasks": [
- {
- "taskID": 2147483647,
- "externalID": "string",
- "date": "2020-04-10",
- "duration": 2147483647,
- "timeEarliest": "07:25",
- "timeLatest": "07:25",
- "timePriority": 5,
- "prefWorkers": [
- 2147483647
], - "forbWorkers": [
- 2147483647
], - "unpreferredWorkers": [
- 2147483647
], - "antiWorkers": [
- 2147483647
], - "qualification": 2147483647,
- "maxQualification": 2147483647,
- "categories": [
- 2147483647
], - "exchangeableCategories": [
- 2147483647
], - "preassignedWorker": 2147483647,
- "preassignedOrder": -2147483648,
- "desiredWorker": 2147483647,
- "prefGender": 3,
- "precedingTasks": [
- 2147483647
], - "predecessorTasks": [
- 2147483647
], - "group": 2147483647,
- "groupOrder": 2147483647,
- "revenue": 1.7e+308,
- "initassignedShift": 2147483647,
- "assignmentPriority": 5,
- "initassignedWorker": 2147483647,
- "initassignedOrder": 2147483647
}
], - "workers": [
- {
- "workerID": 2147483647,
- "externalID": "string",
- "shifts": [
- {
- "shiftID": 2147483647,
- "shiftDate": "2020-04-10",
- "shiftStart": "07:25",
- "shiftEnd": "07:25",
- "shiftPriority": 3
}
], - "qualification": 2147483647,
- "categories": [
- 2147483647
], - "desiredCategory": 2147483647,
- "prefCategories": [
- 2147483647
], - "prefWeekCategories": [
- 2147483647
], - "prefWeekendCategories": [
- 2147483647
], - "prefWorkers": [
- 2147483647
], - "unpreferredWorkers": [
- 2147483647
], - "antiWorkers": [
- 2147483647
], - "gender": 3,
- "expectedWorkingMinutes": 2147483647,
- "minWorkingMinutes": 2147483647,
- "maxWorkingMinutes": 2147483647,
- "maxConsecutiveWorkdays": 2147483647,
- "minConsecutiveWorkdays": 2147483647,
- "prefConsecutiveWorkdays": 2147483647,
- "carryoverConsecutiveWorkdays": 2147483647,
- "maxConsecutiveOffdays": 2147483647,
- "minConsecutiveOffdays": 2147483647,
- "prefConsecutiveOffdays": 2147483647,
- "carryoverConsecutiveOffdays": 2147483647,
- "minBreakMinutesBetweenTasks": 2147483647,
- "maxDailyWorkingMinutes": 2147483647,
- "maxDailyTasks": 2147483647,
- "minFreeSaturdays": 2147483647,
- "minFreeSundays": 2147483647,
- "maxWeeklyWorkingMinutes": 2147483647,
- "carryoverWorkingMinutesLastWeek": 2147483647,
- "maxTwoWeekWorkingMinutes": 2147483647,
- "carryoverWorkingMinutesSecondLastWeek": 2147483647,
- "dontVary": true,
- "dontAlter": false,
- "allowPreassignedTasksOnly": false,
- "costsPerMinute": 1.7e+308,
- "costsInitial": 1.7e+308,
- "precTaskDate": "2020-04-10",
- "precTaskScheduled": "07:25",
- "precTaskDuration": 2147483647,
- "precNightShifts": 2147483647,
- "maxOrderedGroups": 2147483647,
- "maxDesiredOrderedGroups": 2147483647,
- "maxNightShifts": 2147483647,
- "maxDesiredNightShifts": 2147483647,
- "minFreeWeekends": 2147483647,
- "minDesiredFreeWeekends": 2147483647,
- "maxConsecutiveSameTaskStart": 2147483647,
- "maxDesiredConsecutiveSameTaskStart": 2147483647,
- "maxWeeklyWorkingDays": 2147483647,
- "prefWeeklyWorkingDays": 2147483647,
- "carryoverWorkingDaysLastWeek": 2147483647,
- "minConsecutiveFreeWeekends": 2147483647,
- "minDesiredConsecutiveFreeWeekends": 2147483647,
- "maxConsecutiveFreeWeekends": 2147483647,
- "maxDesiredConsecutiveFreeWeekends": 2147483647,
- "minConsecutiveWorkingWeekends": 2147483647,
- "minDesiredConsecutiveWorkingWeekends": 2147483647,
- "maxConsecutiveWorkingWeekends": 2147483647,
- "maxDesiredConsecutiveWorkingWeekends": 2147483647,
- "precWeekendWorkingDay": "2020-04-10",
- "carryoverConsecutiveWorkingWeekends": 2147483647,
- "consecutiveNightShiftsForOffdays": 2147483647,
- "minOffdaysAfterConsecutiveNightShifts": 2147483647,
- "workdayPattern": [
- 1,
- 1
], - "workdayCycle": {
- "cycleDuration": 1,
- "minFreeWeekends": 1,
- "minDesiredFreeWeekends": 1,
- "minOffdays": 1,
- "minDesiredOffdays": 1
}, - "fixedPresences": [
- {
- "date": "2020-04-10",
- "start": "07:25",
- "end": "07:25",
- "overlapConfig": 0
}
], - "preventSplitWeekends": false
}
], - "history": {
- "tasks": [
- {
- "taskID": 2147483647,
- "scheduling": [
- {
- "date": "2020-04-10",
- "assignedWorker": 2147483647,
- "assignedWorkerAutomatically": 2147483647,
- "actualWorker": 2147483647,
- "actualStartTime": "07:25"
}
]
}
], - "workers": [
- {
- "workerID": 2147483647,
- "excludedDays": [
- "2020-04-10"
], - "preferenceFulfilledOn": [
- "2020-04-10"
], - "preferenceNotFulfilledOn": [
- "2020-04-10"
]
}
], - "additionalTasks": [
- {
- "taskID": 2147483647,
- "externalID": "string",
- "date": "2020-04-10",
- "duration": 2147483647,
- "timeEarliest": "07:25",
- "timeLatest": "07:25",
- "timePriority": 5,
- "prefWorkers": [
- 2147483647
], - "forbWorkers": [
- 2147483647
], - "unpreferredWorkers": [
- 2147483647
], - "antiWorkers": [
- 2147483647
], - "qualification": 2147483647,
- "maxQualification": 2147483647,
- "categories": [
- 2147483647
], - "exchangeableCategories": [
- 2147483647
], - "preassignedWorker": 2147483647,
- "preassignedOrder": -2147483648,
- "desiredWorker": 2147483647,
- "prefGender": 3,
- "precedingTasks": [
- 2147483647
], - "predecessorTasks": [
- 2147483647
], - "group": 2147483647,
- "groupOrder": 2147483647,
- "revenue": 1.7e+308,
- "initassignedShift": 2147483647,
- "assignmentPriority": 5,
- "initassignedWorker": 2147483647,
- "initassignedOrder": 2147483647
}
]
}, - "recovery": [
- 2147483647
], - "developerOptions": {
- "recovery": [
- 2147483647
], - "debugSolution": "string"
}
}| keyword required | string Validation keyword. |
| instancePath required | string JSON Pointer to the location in the data instance (e.g., |
| schemaPath required | string JSON Pointer to the location of the failing keyword in the schema |
| params required | object Params property is the object with the additional information about error. It can be used to generate error messages (e.g., using ajv-i18n package). |
| propertyName | string Set for errors in |
| message | string The error message. |
| schema | any The value of the failing keyword in the schema. |
| parentSchema | object The schema containing the keyword. |
| data | any The data validated by the keyword. |
{- "keyword": "string",
- "instancePath": "string",
- "schemaPath": "string",
- "params": { },
- "propertyName": "string",
- "message": "string",
- "schema": null,
- "parentSchema": { },
- "data": null
}| taskID required | integer (Integer_u32) [ 0 .. 2147483647 ] The ID of this task. IDs need to be unique among all tasks. |
| externalID | string A string to identify the task in the solution. Cannot be used for reference in the input data or the optimizer, it only serves as a helping tool for integrations. |
| date required | string (Date) ^[0-9]{4}-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2][0-9... The date this task should be planned on. |
| duration required | integer (Integer_u32) [ 0 .. 2147483647 ] The time in minutes it takes to complete this task. |
| timeEarliest required | string (Time) ^[-]?([0-9]{1,9}):([0-5][0-9]|[0-9])$ The earliest possible starting time of this task. This is a preference and can be violated for other preferences or restrictions. Its importance depends on the parameter |
| timeLatest required | string (Time) ^[-]?([0-9]{1,9}):([0-5][0-9]|[0-9])$ The latest time at which this task should be finished. This is a preference and can be violated for other preferences or restrictions. Its importance depends on the parameter |
| timePriority | integer (Integer_0_5) [ 0 .. 5 ] Default: 1 The priority of the time window:
Tasks with high time priority are more likely to get scheduled inside their given time window. Tasks with time priority 0 completely ignore their given time window. For tasks with a |
| prefWorkers | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] The IDs of preferred workers. This is a preference and can be violated for other preferences or restrictions. Its importance depends on the parameter |
| forbWorkers | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] The IDs of forbidden workers. This is a strict restriction and might fail validation if it is impossible to keep. |
| unpreferredWorkers | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] The IDs of workers to which an assignment is undesirable but not forbidden. This is a preference and can be violated for other preferences or restrictions. Its importance depends on the parameter |
| antiWorkers | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] Deprecated Alias for |
| qualification | integer (Integer_u32) [ 0 .. 2147483647 ] The minimum qualification of the worker required to perform the task (e.g. years of experience). Workers without qualification are not allowed to perform tasks of any qualification. This is a strict restriction and might fail validation if it is impossible to keep. |
| maxQualification | integer (Integer_u32) [ 0 .. 2147483647 ] The maximum qualification of the worker allowed to perform the task. Workers without qualification can carry out any task with qualification (as long as the other restrictions are not violated). This is a strict restriction and might fail validation if it is impossible to keep. |
| categories | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] A suitable worker has to fulfill all of these categories. This is a strict restriction and might fail validation if it is impossible to keep. |
| exchangeableCategories | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] A suitable worker has to fulfill at least one of these categories. This is a strict restriction and might fail validation if it is impossible to keep. |
| preassignedWorker | integer (Integer_u32) [ 0 .. 2147483647 ] The This is a strict restriction and might fail validation if it is impossible to keep. |
| preassignedOrder | integer (Integer_s32) [ -2147483648 .. 2147483647 ] Tasks with a value > 0 will be assigned as the first tasks of the This is a strict restriction and might fail validation if it is impossible to keep. |
| desiredWorker | integer (Integer_u32) [ 0 .. 2147483647 ] The ID of the worker who is desired (strong preference) to take over this task. This is a preference and can be violated for other preferences or restrictions. |
| prefGender | integer (GenderType) [ 0 .. 3 ] The preferred gender for the assigned worker. This usually is a preference and can be violated for other preferences or restrictions. Its importance depends on the parameter |
| precedingTasks | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] Tasks in this list and this task will be performed by the same worker and all listed tasks will have to be finished before this task starts. This is a strict restriction and might fail validation if it is impossible to keep. |
| predecessorTasks | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] One of these tasks has be carried out right before this task by the same worker. Putting multiple values in the array does not mean they are carried out in that order - if you want to have a predecessor-chain, you need to set the direct predecessor on each task in the chain (see examples). Do not put redundant values in here, as having more than one value in the array has negative impact on performance and solution quality. This is a strict restriction and might fail validation if it is impossible to keep. |
| group | integer (Integer_u32) [ 0 .. 2147483647 ] A group ID. Tasks with the same group get assigned to the same worker. This is a strict restriction and might fail validation if it is impossible to keep. |
| groupOrder | integer (Integer_u32) [ 0 .. 2147483647 ] Deprecated Unsigned 32 bit integer with the upper limit of a signed 32bit integer |
| revenue | number (Number_u64) [ 0 .. 1.7e+308 ] Default: 0 The revenue which will be achieved with this task. |
| initassignedShift | integer (Integer_u32) [ 0 .. 2147483647 ] Deprecated Unsigned 32 bit integer with the upper limit of a signed 32bit integer |
| assignmentPriority | integer (Integer_0_5) [ 0 .. 5 ] Default: 1 A priority for assignment (see
If For tasks with an |
| initassignedWorker | integer (Integer_u32) [ 0 .. 2147483647 ] A hint for large optimization data sets, e.g. solution data from a previous optimization request. The field can also be used for |
| initassignedOrder | integer (Integer_u32) [ 0 .. 2147483647 ] Requires |
| timeScheduled required | string (Time) ^[-]?([0-9]{1,9}):([0-5][0-9]|[0-9])$ The planned time to start this task by the assigned worker. |
| timeWindowViolation | integer (Integer_s32) [ -2147483648 .. 2147483647 ] If the task is scheduled outside its time window, this value displays the discrepancy in minutes - the value is < 0 if the task was scheduled earlier than its time window and > 0 otherwise. If the task is scheduled within its time window, the field does not get added. Examples:
|
| assignedWorker required | integer (Integer_u32) [ 0 .. 2147483647 ] The ID of the assigned worker who will carry out this task. |
| assignedShift | integer (Integer_u32) [ 0 .. 2147483647 ] Deprecated The ID of the assigned shift on the assigned worker. |
| info required | string May contain some information about the worker. |
| allowedWorkers | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] A list of all workers ( |
| finalassignedOrder required | integer (Integer_u32_1) [ 1 .. 2147483647 ] The order number on the assigned worker. |
| profit required | number (Number_s64) [ -1.7e+308 .. 1.7e+308 ] The profit the task creates (revenue - costs). |
{- "taskID": 2147483647,
- "externalID": "string",
- "date": "2020-04-10",
- "duration": 2147483647,
- "timeEarliest": "07:25",
- "timeLatest": "07:25",
- "timePriority": 5,
- "prefWorkers": [
- 2147483647
], - "forbWorkers": [
- 2147483647
], - "unpreferredWorkers": [
- 2147483647
], - "antiWorkers": [
- 2147483647
], - "qualification": 2147483647,
- "maxQualification": 2147483647,
- "categories": [
- 2147483647
], - "exchangeableCategories": [
- 2147483647
], - "preassignedWorker": 2147483647,
- "preassignedOrder": -2147483648,
- "desiredWorker": 2147483647,
- "prefGender": 3,
- "precedingTasks": [
- 2147483647
], - "predecessorTasks": [
- 2147483647
], - "group": 2147483647,
- "groupOrder": 2147483647,
- "revenue": 1.7e+308,
- "initassignedShift": 2147483647,
- "assignmentPriority": 5,
- "initassignedWorker": 2147483647,
- "initassignedOrder": 2147483647,
- "timeScheduled": "07:25",
- "timeWindowViolation": -2147483648,
- "assignedWorker": 2147483647,
- "assignedShift": 2147483647,
- "info": "string",
- "allowedWorkers": [
- 2147483647
], - "finalassignedOrder": 1,
- "profit": -1.7e+308
}| taskID required | integer (Integer_u32) [ 0 .. 2147483647 ] The ID of this task. IDs need to be unique among all tasks. |
| externalID | string A string to identify the task in the solution. Cannot be used for reference in the input data or the optimizer, it only serves as a helping tool for integrations. |
| date required | string (Date) ^[0-9]{4}-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2][0-9... The date this task should be planned on. |
| duration required | integer (Integer_u32) [ 0 .. 2147483647 ] The time in minutes it takes to complete this task. |
| timeEarliest required | string (Time) ^[-]?([0-9]{1,9}):([0-5][0-9]|[0-9])$ The earliest possible starting time of this task. This is a preference and can be violated for other preferences or restrictions. Its importance depends on the parameter |
| timeLatest required | string (Time) ^[-]?([0-9]{1,9}):([0-5][0-9]|[0-9])$ The latest time at which this task should be finished. This is a preference and can be violated for other preferences or restrictions. Its importance depends on the parameter |
| timePriority | integer (Integer_0_5) [ 0 .. 5 ] Default: 1 The priority of the time window:
Tasks with high time priority are more likely to get scheduled inside their given time window. Tasks with time priority 0 completely ignore their given time window. For tasks with a |
| prefWorkers | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] The IDs of preferred workers. This is a preference and can be violated for other preferences or restrictions. Its importance depends on the parameter |
| forbWorkers | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] The IDs of forbidden workers. This is a strict restriction and might fail validation if it is impossible to keep. |
| unpreferredWorkers | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] The IDs of workers to which an assignment is undesirable but not forbidden. This is a preference and can be violated for other preferences or restrictions. Its importance depends on the parameter |
| antiWorkers | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] Deprecated Alias for |
| qualification | integer (Integer_u32) [ 0 .. 2147483647 ] The minimum qualification of the worker required to perform the task (e.g. years of experience). Workers without qualification are not allowed to perform tasks of any qualification. This is a strict restriction and might fail validation if it is impossible to keep. |
| maxQualification | integer (Integer_u32) [ 0 .. 2147483647 ] The maximum qualification of the worker allowed to perform the task. Workers without qualification can carry out any task with qualification (as long as the other restrictions are not violated). This is a strict restriction and might fail validation if it is impossible to keep. |
| categories | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] A suitable worker has to fulfill all of these categories. This is a strict restriction and might fail validation if it is impossible to keep. |
| exchangeableCategories | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] A suitable worker has to fulfill at least one of these categories. This is a strict restriction and might fail validation if it is impossible to keep. |
| preassignedWorker | integer (Integer_u32) [ 0 .. 2147483647 ] The This is a strict restriction and might fail validation if it is impossible to keep. |
| preassignedOrder | integer (Integer_s32) [ -2147483648 .. 2147483647 ] Tasks with a value > 0 will be assigned as the first tasks of the This is a strict restriction and might fail validation if it is impossible to keep. |
| desiredWorker | integer (Integer_u32) [ 0 .. 2147483647 ] The ID of the worker who is desired (strong preference) to take over this task. This is a preference and can be violated for other preferences or restrictions. |
| prefGender | integer (GenderType) [ 0 .. 3 ] The preferred gender for the assigned worker. This usually is a preference and can be violated for other preferences or restrictions. Its importance depends on the parameter |
| precedingTasks | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] Tasks in this list and this task will be performed by the same worker and all listed tasks will have to be finished before this task starts. This is a strict restriction and might fail validation if it is impossible to keep. |
| predecessorTasks | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] One of these tasks has be carried out right before this task by the same worker. Putting multiple values in the array does not mean they are carried out in that order - if you want to have a predecessor-chain, you need to set the direct predecessor on each task in the chain (see examples). Do not put redundant values in here, as having more than one value in the array has negative impact on performance and solution quality. This is a strict restriction and might fail validation if it is impossible to keep. |
| group | integer (Integer_u32) [ 0 .. 2147483647 ] A group ID. Tasks with the same group get assigned to the same worker. This is a strict restriction and might fail validation if it is impossible to keep. |
| groupOrder | integer (Integer_u32) [ 0 .. 2147483647 ] Deprecated Unsigned 32 bit integer with the upper limit of a signed 32bit integer |
| revenue | number (Number_u64) [ 0 .. 1.7e+308 ] Default: 0 The revenue which will be achieved with this task. |
| initassignedShift | integer (Integer_u32) [ 0 .. 2147483647 ] Deprecated Unsigned 32 bit integer with the upper limit of a signed 32bit integer |
| assignmentPriority | integer (Integer_0_5) [ 0 .. 5 ] Default: 1 A priority for assignment (see
If For tasks with an |
| initassignedWorker | integer (Integer_u32) [ 0 .. 2147483647 ] A hint for large optimization data sets, e.g. solution data from a previous optimization request. The field can also be used for |
| initassignedOrder | integer (Integer_u32) [ 0 .. 2147483647 ] Requires |
| info required | string May contain some information about the task, will give a reason as to why this task is unassigned. |
| allowedWorkers | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] A list of all workers ( |
{- "taskID": 2147483647,
- "externalID": "string",
- "date": "2020-04-10",
- "duration": 2147483647,
- "timeEarliest": "07:25",
- "timeLatest": "07:25",
- "timePriority": 5,
- "prefWorkers": [
- 2147483647
], - "forbWorkers": [
- 2147483647
], - "unpreferredWorkers": [
- 2147483647
], - "antiWorkers": [
- 2147483647
], - "qualification": 2147483647,
- "maxQualification": 2147483647,
- "categories": [
- 2147483647
], - "exchangeableCategories": [
- 2147483647
], - "preassignedWorker": 2147483647,
- "preassignedOrder": -2147483648,
- "desiredWorker": 2147483647,
- "prefGender": 3,
- "precedingTasks": [
- 2147483647
], - "predecessorTasks": [
- 2147483647
], - "group": 2147483647,
- "groupOrder": 2147483647,
- "revenue": 1.7e+308,
- "initassignedShift": 2147483647,
- "assignmentPriority": 5,
- "initassignedWorker": 2147483647,
- "initassignedOrder": 2147483647,
- "info": "string",
- "allowedWorkers": [
- 2147483647
]
}| workerID required | integer (Integer_u32) [ 0 .. 2147483647 ] The ID of the worker. Needs to be unique among all workers. |
| externalID | string A string to identify the worker in the solution. Cannot be used for reference in the input data or the optimizer, it only serves as a helping tool for integrations. |
Array of objects (ShiftPlannerShift) The time slots during which the worker can carry out tasks. | |
| qualification | integer (Integer_u32) [ 0 .. 2147483647 ] The qualification of the worker. They are able to take over tasks with the same or lower qualifications. |
| categories | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] The worker can only carry out tasks if he has each category the task requires. |
| desiredCategory | integer (Integer_u32) [ 0 .. 2147483647 ] The worker has a strong preference towards tasks with this category. The value already counts as a category and does not need to be included in This is a preference and can be violated for other preferences or restrictions. |
| prefCategories | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] The task categories preferred by the worker. Values already count as a categories and do not need to be included in This is a preference and can be violated for other preferences or restrictions. Its importance depends on the parameter |
| prefWeekCategories | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] The task categories preferred by the worker on any week day (Mon-Fri). Values already count as a categories and do not need to be included in This is a preference and can be violated for other preferences or restrictions. Its importance depends on the parameter |
| prefWeekendCategories | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] The task categories preferred by the worker on any weekend day (Sat, Sun). Values already count as a categories and do not need to be included in This is a preference and can be violated for other preferences or restrictions. Its importance depends on the parameter |
| prefWorkers | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] The workers that this worker prefers to have simultaneous shifts with. This is a preference and can be violated for other preferences or restrictions. Its importance depends on the parameter |
| unpreferredWorkers | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] The workers that this worker prefers to not have simultaneous shifts with. This is a preference and can be violated for other preferences or restrictions. Its importance depends on the parameter |
| antiWorkers | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] Deprecated Alias for |
| gender | integer (GenderType) [ 0 .. 3 ] The gender type of the worker. |
| expectedWorkingMinutes | integer (Integer_u32) [ 0 .. 2147483647 ] The preferred amount of working time minutes for this worker in the final plan, deviation in both directions will be kept as low as possible. This is a preference and can be violated for other preferences or restrictions. Its importance depends on the parameter |
| minWorkingMinutes | integer (Integer_u32) [ 0 .. 2147483647 ] Default: 0 The minimum amount of working time minutes for this worker in the final plan. This is a preference and can be violated for other preferences or restrictions. |
| maxWorkingMinutes | integer (Integer_u32) [ 0 .. 2147483647 ] The maximum amount of working time minutes for this worker in the final plan. This is a preference and can be violated for other preferences or restrictions. |
| maxConsecutiveWorkdays | integer (Integer_u32) [ 0 .. 2147483647 ] Maximum number of consecutive workdays. A day is a workday if any work is performed from 00:00 to 23:59. This is a preference and can be violated for other preferences or restrictions. |
| minConsecutiveWorkdays | integer (Integer_u32) [ 0 .. 2147483647 ] Default: 0 Minimum number of consecutive workdays. A day is a workday if any work is performed from 00:00 to 23:59. This is a preference and can be violated for other preferences or restrictions. |
| prefConsecutiveWorkdays | integer (Integer_u32) [ 0 .. 2147483647 ] The preferred number of working days in a row. This is a preference and can be violated for other preferences or restrictions. Its importance depends on the parameter |
| carryoverConsecutiveWorkdays | integer (Integer_u32) [ 0 .. 2147483647 ] Can not be used with |
| maxConsecutiveOffdays | integer (Integer_u32) [ 0 .. 2147483647 ] Maximum number of consecutive days off. A day counts as a "day off" if no work is performed from 00:00 to 23:59. This is a preference and can be violated for other preferences or restrictions. |
| minConsecutiveOffdays | integer (Integer_u32) [ 0 .. 2147483647 ] Default: 0 Minimum number of consecutive days off. A day counts as a "day off" if no work is performed from 00:00 to 23:59. This is a preference and can be violated for other preferences or restrictions. |
| prefConsecutiveOffdays | integer (Integer_u32) [ 0 .. 2147483647 ] The preferred number of non-working days in a row. This is a preference and can be violated for other preferences or restrictions. Its importance depends on the parameter |
| carryoverConsecutiveOffdays | integer (Integer_u32) [ 0 .. 2147483647 ] Can not be used with |
| minBreakMinutesBetweenTasks | integer (Integer_u32) [ 0 .. 2147483647 ] Default: 0 Minimum number of minutes break between two Tasks that start on different days. This is a strict restriction and might fail validation if it is impossible to keep. |
| maxDailyWorkingMinutes | integer (Integer_u32) [ 0 .. 2147483647 ] Maximum number of working minutes per day. This is a preference and can be violated for other preferences or restrictions. |
| maxDailyTasks | integer (Integer_u32) [ 0 .. 2147483647 ] Maximum number of tasks per day. Tasks count towards the day they start in. "Predecessor-Chains" (sets of tasks linked to a "chain" by This is a strict restriction and might fail validation if it is impossible to keep. |
| minFreeSaturdays | integer (Integer_u32) [ 0 .. 2147483647 ] Default: 0 Minimum number of work-free Saturdays for this worker. This is a strict restriction and might fail validation if it is impossible to keep. |
| minFreeSundays | integer (Integer_u32) [ 0 .. 2147483647 ] Default: 0 Minimum number of work-free Sundays for this worker. This is a strict restriction and might fail validation if it is impossible to keep. |
| maxWeeklyWorkingMinutes | integer (Integer_u32) [ 0 .. 2147483647 ] Maximum minutes working time for this worker each calendar week (Monday to Sunday). Please note that the week cycle might be independent from the planning horizon, use carryoverWorkingMinutesLastWeek in conflicting cases. This is a preference and can be violated for other preferences or restrictions. |
| carryoverWorkingMinutesLastWeek | integer (Integer_u32) [ 0 .. 2147483647 ] Minutes of worktime already performed by this worker in the week that dateFrom belongs to. The value is factored in by maxWeeklyWorkingMinutes and maxTwoWeekWorkingMinutes but not expectedWorkingMinutes! |
| maxTwoWeekWorkingMinutes | integer (Integer_u32) [ 0 .. 2147483647 ] Maximum minutes working time for this worker for every two consecutive calendar weeks (Monday to Sunday). Please note that the week cycle is independent from the planning horizon, use carryoverWorkingMinutesLastWeek and carryoverWorkingMinutesSecondLastWeek in conflicting cases. This is a preference and can be violated for other preferences or restrictions. |
| carryoverWorkingMinutesSecondLastWeek | integer (Integer_u32) [ 0 .. 2147483647 ] Minutes of worktime already performed by this worker in the week prior to the earliest shiftStart (pre v3.8.12)/ dateFrom (v3.8.12) of any Worker in this plan. The value is factored in by maxWeeklyWorkingMinutes and maxTwoWeekWorkingMinutes but not expectedWorkingMinutes! |
| dontVary | boolean A worker with dontVary set to true is "fixed" for the optimizer, meaning they get assigned all tasks (and only those tasks) that have this worker set as This is a strict restriction and might fail validation if it is impossible to keep. |
| dontAlter | boolean Default: false Workers with This is a strict restriction and might fail validation if it is impossible to keep. |
| allowPreassignedTasksOnly | boolean Default: false If this flag is true, only tasks preassigned to this worker can be assigned to it. Tasks not preassigned to this worker cannot be assigned to it. This is a strict restriction and might fail validation if it is impossible to keep. |
| costsPerMinute | number (Number_u64) [ 0 .. 1.7e+308 ] Default: 0 The costs per minute working time (carrying out tasks) for this worker (e.g. monthly salary converted to minutes). |
| costsInitial | number (Number_u64) [ 0 .. 1.7e+308 ] Default: 0 Costs that occur if there is at least one task assigned to the worker. |
| precTaskDate | string (Date) ^[0-9]{4}-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2][0-9... Date of the last task the worker carried out before the start of this plan. |
| precTaskScheduled | string (Time) ^[-]?([0-9]{1,9}):([0-5][0-9]|[0-9])$ Scheduled time of the last task the worker carried out before the start of this plan. |
| precTaskDuration | integer (Integer_u32) [ 0 .. 2147483647 ] Duration of the last task the worker carried out before the start of this plan. |
| precNightShifts | integer (Integer_u32) [ 0 .. 2147483647 ] Amount of consecutive "night shifts" the worker carried out directly before the start of this plan. Those are tasks that are scheduled in a way that they overlap with midnight. For more details see below. |
| maxOrderedGroups | integer (Integer_u32) [ 0 .. 2147483647 ] The maximum number of task sets with same group and set group order that can be assigned to this worker. |
| maxDesiredOrderedGroups | integer (Integer_u32) [ 0 .. 2147483647 ] A preference for the maximum number of task sets with same group and set group order that can be assigned to this worker. This is a strict restriction and might fail validation if it is impossible to keep. |
| maxNightShifts | integer (Integer_u32) [ 0 .. 2147483647 ] The maximum number of "night shifts" this worker can get assigned. This is a strict restriction and might fail validation if it is impossible to keep. |
| maxDesiredNightShifts | integer (Integer_u32) [ 0 .. 2147483647 ] A preference for the maximum number of "night shifts" this worker can get assigned. This is a preference and can be violated for other preferences or restrictions. |
| minFreeWeekends | integer (Integer_u32) [ 0 .. 2147483647 ] Default: 0 The minimum number of completely free weekends with no work on either Saturday or Sunday. This is a strict restriction and might fail validation if it is impossible to keep. |
| minDesiredFreeWeekends | integer (Integer_u32) [ 0 .. 2147483647 ] Default: 0 A preference for the minimum number of completely free weekends with no work on either Saturday or Sunday. This is a preference and can be violated for other preferences or restrictions. |
| maxConsecutiveSameTaskStart | integer (Integer_u32) [ 0 .. 2147483647 ] Can not be used with This is a strict restriction and might fail validation if it is impossible to keep. |
| maxDesiredConsecutiveSameTaskStart | integer (Integer_u32) [ 0 .. 2147483647 ] Can not be used with This is a preference and can be violated for other preferences or restrictions. |
| maxWeeklyWorkingDays | integer (Integer_u32) [ 0 .. 2147483647 ] The maximum number of tasks in one week. Tasks only count for the week they start in ( This is a strict restriction and might fail validation if it is impossible to keep. |
| prefWeeklyWorkingDays | integer (Integer_u32) [ 0 .. 2147483647 ] The preferred maximum number of tasks in one week. Tasks only count for the week they start in ( This is a preference and can be violated for other preferences or restrictions. |
| carryoverWorkingDaysLastWeek | integer (Integer_u32) [ 0 .. 2147483647 ] Number of already carried-out workdays in the week that |
| minConsecutiveFreeWeekends | integer (Integer_u32) [ 0 .. 2147483647 ] Default: 0 The minimum amount of consecutive weekends without any tasks assigned (task starting on either Saturday or Sunday). This restriction does not apply to the end of the planning horizon, there may be less free weekends than set here right before This is a strict restriction and might fail validation if it is impossible to keep. |
| minDesiredConsecutiveFreeWeekends | integer (Integer_u32) [ 0 .. 2147483647 ] Default: 0 The desired minimum amount of consecutive weekends without any tasks assigned (task starting on either Saturday or Sunday). This restriction does not apply to the end of the planning horizon, there may be less free weekends than set here right before This is a preference and can be violated for other preferences or restrictions. |
| maxConsecutiveFreeWeekends | integer (Integer_u32) [ 0 .. 2147483647 ] The maximum amount of consecutive weekends without any tasks assigned (task starting on either Saturday or Sunday). This is a strict restriction and might fail validation if it is impossible to keep. |
| maxDesiredConsecutiveFreeWeekends | integer (Integer_u32) [ 0 .. 2147483647 ] The desired maximum amount of consecutive weekends without any tasks assigned (task starting on either Saturday or Sunday). This is a preference and can be violated for other preferences or restrictions. |
| minConsecutiveWorkingWeekends | integer (Integer_u32) [ 0 .. 2147483647 ] Default: 0 The minimum amount of consecutive weekends with at least one task assigned (task starting on either Saturday or Sunday). This is a strict restriction and might fail validation if it is impossible to keep. |
| minDesiredConsecutiveWorkingWeekends | integer (Integer_u32) [ 0 .. 2147483647 ] Default: 0 The desired minimum amount of consecutive weekends with at least one task assigned (task starting on either Saturday or Sunday). This is a preference and can be violated for other preferences or restrictions. |
| maxConsecutiveWorkingWeekends | integer (Integer_u32) [ 0 .. 2147483647 ] The maximum amount of consecutive weekends with at least one task assigned (task starting on either Saturday or Sunday). This is a strict restriction and might fail validation if it is impossible to keep. |
| maxDesiredConsecutiveWorkingWeekends | integer (Integer_u32) [ 0 .. 2147483647 ] The desired maximum amount of consecutive weekends with at least one task assigned (task starting on either Saturday or Sunday). This is a preference and can be violated for other preferences or restrictions. |
| precWeekendWorkingDay | string (Date) ^[0-9]{4}-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2][0-9... The latest working day on a weekend before |
| carryoverConsecutiveWorkingWeekends | integer (Integer_u32) [ 0 .. 2147483647 ] The amount of consecutive weekends with at least one task performed on either Saturday or Sunday on and before the first complete weekend before |
| consecutiveNightShiftsForOffdays | integer (Integer_u32) [ 0 .. 2147483647 ] After a night shift streak consisting of this or more night shifts, there have to be a number of days off (number of days is defined in |
| minOffdaysAfterConsecutiveNightShifts | integer (Integer_u32) [ 0 .. 2147483647 ] Default: 0 The number of days off after a corresponding trigger. This is a strict restriction and might fail validation if it is impossible to keep. |
| workdayPattern | Array of integers (Integer_u32_1) >= 2 items [ items [ 1 .. 2147483647 ] ] This field can be used to define irregular workday patterns. There must be an even number of entries, where each even numbered entry (starting at zero) is the number of workdays and each odd numbered entry the number of days off. Example: The array If no history data is provided, the rhythm will start on This is a preference and can be violated for other preferences or restrictions. |
object Define workday restrictions for a smaller periods of time (e.g. 7 days, 14 days) than the whole plan. Those cycles loop until If no history data is provided, the first cycle will start on | |
Array of objects (TimeSlot) The worker will definitely work during the time slots specified here. Tasks can overlap the time slots, in which case they get "merged" onto the overlapping task. If the time slot does not get overlapped, it counts as a regular task. Time slots may not overlap each other. | |
| preventSplitWeekends | boolean Default: false If true, the algorithm will avoid scheduling tasks on only one day of the weekend - this worker should be working either on both days or none. This is a preference and can be violated for other preferences or restrictions. |
| info | string Some textual information about the worker. |
| totalTaskTime required | integer (Integer_u32) [ 0 .. 2147483647 ] Sum of the duration of all tasks assigned to this worker. |
{- "workerID": 2147483647,
- "externalID": "string",
- "shifts": [
- {
- "shiftID": 2147483647,
- "shiftDate": "2020-04-10",
- "shiftStart": "07:25",
- "shiftEnd": "07:25",
- "shiftPriority": 3
}
], - "qualification": 2147483647,
- "categories": [
- 2147483647
], - "desiredCategory": 2147483647,
- "prefCategories": [
- 2147483647
], - "prefWeekCategories": [
- 2147483647
], - "prefWeekendCategories": [
- 2147483647
], - "prefWorkers": [
- 2147483647
], - "unpreferredWorkers": [
- 2147483647
], - "antiWorkers": [
- 2147483647
], - "gender": 3,
- "expectedWorkingMinutes": 2147483647,
- "minWorkingMinutes": 2147483647,
- "maxWorkingMinutes": 2147483647,
- "maxConsecutiveWorkdays": 2147483647,
- "minConsecutiveWorkdays": 2147483647,
- "prefConsecutiveWorkdays": 2147483647,
- "carryoverConsecutiveWorkdays": 2147483647,
- "maxConsecutiveOffdays": 2147483647,
- "minConsecutiveOffdays": 2147483647,
- "prefConsecutiveOffdays": 2147483647,
- "carryoverConsecutiveOffdays": 2147483647,
- "minBreakMinutesBetweenTasks": 2147483647,
- "maxDailyWorkingMinutes": 2147483647,
- "maxDailyTasks": 2147483647,
- "minFreeSaturdays": 2147483647,
- "minFreeSundays": 2147483647,
- "maxWeeklyWorkingMinutes": 2147483647,
- "carryoverWorkingMinutesLastWeek": 2147483647,
- "maxTwoWeekWorkingMinutes": 2147483647,
- "carryoverWorkingMinutesSecondLastWeek": 2147483647,
- "dontVary": true,
- "dontAlter": false,
- "allowPreassignedTasksOnly": false,
- "costsPerMinute": 1.7e+308,
- "costsInitial": 1.7e+308,
- "precTaskDate": "2020-04-10",
- "precTaskScheduled": "07:25",
- "precTaskDuration": 2147483647,
- "precNightShifts": 2147483647,
- "maxOrderedGroups": 2147483647,
- "maxDesiredOrderedGroups": 2147483647,
- "maxNightShifts": 2147483647,
- "maxDesiredNightShifts": 2147483647,
- "minFreeWeekends": 2147483647,
- "minDesiredFreeWeekends": 2147483647,
- "maxConsecutiveSameTaskStart": 2147483647,
- "maxDesiredConsecutiveSameTaskStart": 2147483647,
- "maxWeeklyWorkingDays": 2147483647,
- "prefWeeklyWorkingDays": 2147483647,
- "carryoverWorkingDaysLastWeek": 2147483647,
- "minConsecutiveFreeWeekends": 2147483647,
- "minDesiredConsecutiveFreeWeekends": 2147483647,
- "maxConsecutiveFreeWeekends": 2147483647,
- "maxDesiredConsecutiveFreeWeekends": 2147483647,
- "minConsecutiveWorkingWeekends": 2147483647,
- "minDesiredConsecutiveWorkingWeekends": 2147483647,
- "maxConsecutiveWorkingWeekends": 2147483647,
- "maxDesiredConsecutiveWorkingWeekends": 2147483647,
- "precWeekendWorkingDay": "2020-04-10",
- "carryoverConsecutiveWorkingWeekends": 2147483647,
- "consecutiveNightShiftsForOffdays": 2147483647,
- "minOffdaysAfterConsecutiveNightShifts": 2147483647,
- "workdayPattern": [
- 1,
- 1
], - "workdayCycle": {
- "cycleDuration": 1,
- "minFreeWeekends": 1,
- "minDesiredFreeWeekends": 1,
- "minOffdays": 1,
- "minDesiredOffdays": 1
}, - "fixedPresences": [
- {
- "date": "2020-04-10",
- "start": "07:25",
- "end": "07:25",
- "overlapConfig": 0
}
], - "preventSplitWeekends": false,
- "info": "string",
- "totalTaskTime": 2147483647
}A numerical representation of a weekday. Values are:
6required | Array of objects Contains all restriction types and gives the absolute value as well as a percentage (0.0-1.0) evaluation of each restriction's final influence on the algorithmic optimization and plan result. |
| timeWindowViolationTaskIDs | Array of integers (Integer_u32) [ items [ 0 .. 2147483647 ] ]
|
| unassignedTaskIDs | Array of integers (Integer_u32) [ items [ 0 .. 2147483647 ] ]
|
| unassignableTaskIDs | Array of integers (Integer_u32) [ items [ 0 .. 2147483647 ] ]
|
object All data determined from the history. | |
object (ShiftPlannerStatisticsPreferencesMatches) Preference statistics for | |
object (ShiftPlannerStatisticsPreferencesMatches) Preference statistics for |
{- "impact": [
- {
- "label": "string",
- "value": 1,
- "absolute": 1.7e+308
}
], - "timeWindowViolationTaskIDs": [
- 2147483647
], - "unassignedTaskIDs": [
- 2147483647
], - "unassignableTaskIDs": [
- 2147483647
], - "history": {
- "workers": [
- {
- "workerID": 2147483647,
- "minConsecutiveWorkdays": 2147483647,
- "maxConsecutiveWorkdays": 2147483647,
- "minConsecutiveOffdays": 2147483647,
- "maxConsecutiveOffdays": 2147483647,
- "minFreeSaturdays": 2147483647,
- "minFreeSundays": 2147483647,
- "minFreeWeekends": 2147483647,
- "maxWeeklyWorkingDays": 2147483647,
- "maxNightShifts": 2147483647,
- "maxConsecutiveSameTaskStart": 2147483647,
- "weeklyShifts": [
- {
- "weekday": 6,
- "shiftStart": "07:25",
- "shiftEnd": "07:25",
- "workPreferenceFactor": -1
}
], - "preferenceFactor": 1.7e+308,
- "cycleStart": "2020-04-10"
}
]
}, - "preferredWorkers": {
- "matched": 2147483647,
- "unmatched": 2147483647,
- "unassigned": 2147483647
}, - "unpreferredWorkers": {
- "matched": 2147483647,
- "unmatched": 2147483647,
- "unassigned": 2147483647
}
}| text required | string Some general information about the plan. |
| feasible required | boolean Set to false if any restrictions are violated in the solution. |
{- "text": "string",
- "feasible": true
}A version consisting of the date of release [0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]+, which can have a patch suffix p[0-9]+.
"1970-01-01_0p0"See https://semver.org/ for a full description of semantic versioning. The regex here is a subset of allowed semantic versions.
"v1.2.3"| version | any Deprecated Value: "v1.0.0" |
| optVersion | string (FieldPlacerVersion) ^[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]+(p[0-9]+)?$... The version of the algorithm used for calculating the result. |
| rev | string >= 7 characters An internal identifier for the algorithm version. |
| schema required | string (SemanticVersion) ^(v)?(0|([1-9][0-9]{0,4}))(\.(0|([1-9][0-9]{0... The version of the schema used for validating both request data sent via the PUT request as well as response data gotten from the GET request. |
{- "version": "v1.0.0",
- "optVersion": "1970-01-01_0p0",
- "rev": "strings",
- "schema": "v1.2.3"
}| requestID | string The identifier that allows finding input/output data, logs and more. This ID will be asked for in most non-trivial support cases so it should be stored when receiving the data. |
object (Client) Contains information about the client which sends this request. | |
required | object (ShiftPlannerMeta) Meta information about what to consider in the optimization. |
required | object (ShiftPlannerOptimizationParameters) Parameters for the optimizer. |
required | Array of ShiftPlannerOutputTaskAssigned (object) or ShiftPlannerOutputTaskUnassigned (object) (ShiftPlannerOutputTask) Array of assigned and unassigned tasks. |
required | Array of objects (ShiftPlannerOutputWorker) Array of available Workers. |
required | object (ShiftPlannerStatistics) Some statistics about the plan. |
required | object (ShiftPlannerInfo) Some textual information about the plan. |
Array of objects (Anomalies) non-empty List of all anomalies found in solution. | |
required | object (BackendVersion) Used validation/ calculation version. |
| recovery | Array of integers (IDReferences) [ items [ 0 .. 2147483647 ] ] Deprecated List of ids. |
object (DeveloperOptions) Additional debug information for developers. |
{- "requestID": "string",
- "client": {
- "clientID": "logisticscenter_a"
}, - "meta": {
- "dateFrom": "2020-04-10",
- "dateTo": "2020-04-10",
- "resCategory": false,
- "resQualification": false,
- "accuracyMode": 1.7e+308,
- "outputLanguage": 1,
- "minQualificationOfTaskCoverage": 2147483647,
- "omnipresentCategoriesOfTaskCoverage": [
- 2147483647
], - "enablePlanSplitting": true,
- "allowUnassignedTasks": false,
- "removeInvalidTasks": true,
- "followBiorhythm": false,
- "minConcurrentSolutions": 1,
- "minTaskDuration": 2147483647
}, - "parameters": {
- "preset": 0,
- "fairDistribution": 9,
- "timeliness": 9,
- "workerPrefs": 9,
- "teamPrefs": 9,
- "taskPrefs": 9,
- "worktimePrefs": 9,
- "workerReduction": 9,
- "genderPref": 9,
- "profitability": 9
}, - "tasks": [
- {
- "taskID": 2147483647,
- "externalID": "string",
- "date": "2020-04-10",
- "duration": 2147483647,
- "timeEarliest": "07:25",
- "timeLatest": "07:25",
- "timePriority": 5,
- "prefWorkers": [
- 2147483647
], - "forbWorkers": [
- 2147483647
], - "unpreferredWorkers": [
- 2147483647
], - "antiWorkers": [
- 2147483647
], - "qualification": 2147483647,
- "maxQualification": 2147483647,
- "categories": [
- 2147483647
], - "exchangeableCategories": [
- 2147483647
], - "preassignedWorker": 2147483647,
- "preassignedOrder": -2147483648,
- "desiredWorker": 2147483647,
- "prefGender": 3,
- "precedingTasks": [
- 2147483647
], - "predecessorTasks": [
- 2147483647
], - "group": 2147483647,
- "groupOrder": 2147483647,
- "revenue": 1.7e+308,
- "initassignedShift": 2147483647,
- "assignmentPriority": 5,
- "initassignedWorker": 2147483647,
- "initassignedOrder": 2147483647,
- "timeScheduled": "07:25",
- "timeWindowViolation": -2147483648,
- "assignedWorker": 2147483647,
- "assignedShift": 2147483647,
- "info": "string",
- "allowedWorkers": [
- 2147483647
], - "finalassignedOrder": 1,
- "profit": -1.7e+308
}
], - "workers": [
- {
- "workerID": 2147483647,
- "externalID": "string",
- "shifts": [
- {
- "shiftID": 2147483647,
- "shiftDate": "2020-04-10",
- "shiftStart": "07:25",
- "shiftEnd": "07:25",
- "shiftPriority": 3
}
], - "qualification": 2147483647,
- "categories": [
- 2147483647
], - "desiredCategory": 2147483647,
- "prefCategories": [
- 2147483647
], - "prefWeekCategories": [
- 2147483647
], - "prefWeekendCategories": [
- 2147483647
], - "prefWorkers": [
- 2147483647
], - "unpreferredWorkers": [
- 2147483647
], - "antiWorkers": [
- 2147483647
], - "gender": 3,
- "expectedWorkingMinutes": 2147483647,
- "minWorkingMinutes": 2147483647,
- "maxWorkingMinutes": 2147483647,
- "maxConsecutiveWorkdays": 2147483647,
- "minConsecutiveWorkdays": 2147483647,
- "prefConsecutiveWorkdays": 2147483647,
- "carryoverConsecutiveWorkdays": 2147483647,
- "maxConsecutiveOffdays": 2147483647,
- "minConsecutiveOffdays": 2147483647,
- "prefConsecutiveOffdays": 2147483647,
- "carryoverConsecutiveOffdays": 2147483647,
- "minBreakMinutesBetweenTasks": 2147483647,
- "maxDailyWorkingMinutes": 2147483647,
- "maxDailyTasks": 2147483647,
- "minFreeSaturdays": 2147483647,
- "minFreeSundays": 2147483647,
- "maxWeeklyWorkingMinutes": 2147483647,
- "carryoverWorkingMinutesLastWeek": 2147483647,
- "maxTwoWeekWorkingMinutes": 2147483647,
- "carryoverWorkingMinutesSecondLastWeek": 2147483647,
- "dontVary": true,
- "dontAlter": false,
- "allowPreassignedTasksOnly": false,
- "costsPerMinute": 1.7e+308,
- "costsInitial": 1.7e+308,
- "precTaskDate": "2020-04-10",
- "precTaskScheduled": "07:25",
- "precTaskDuration": 2147483647,
- "precNightShifts": 2147483647,
- "maxOrderedGroups": 2147483647,
- "maxDesiredOrderedGroups": 2147483647,
- "maxNightShifts": 2147483647,
- "maxDesiredNightShifts": 2147483647,
- "minFreeWeekends": 2147483647,
- "minDesiredFreeWeekends": 2147483647,
- "maxConsecutiveSameTaskStart": 2147483647,
- "maxDesiredConsecutiveSameTaskStart": 2147483647,
- "maxWeeklyWorkingDays": 2147483647,
- "prefWeeklyWorkingDays": 2147483647,
- "carryoverWorkingDaysLastWeek": 2147483647,
- "minConsecutiveFreeWeekends": 2147483647,
- "minDesiredConsecutiveFreeWeekends": 2147483647,
- "maxConsecutiveFreeWeekends": 2147483647,
- "maxDesiredConsecutiveFreeWeekends": 2147483647,
- "minConsecutiveWorkingWeekends": 2147483647,
- "minDesiredConsecutiveWorkingWeekends": 2147483647,
- "maxConsecutiveWorkingWeekends": 2147483647,
- "maxDesiredConsecutiveWorkingWeekends": 2147483647,
- "precWeekendWorkingDay": "2020-04-10",
- "carryoverConsecutiveWorkingWeekends": 2147483647,
- "consecutiveNightShiftsForOffdays": 2147483647,
- "minOffdaysAfterConsecutiveNightShifts": 2147483647,
- "workdayPattern": [
- 1,
- 1
], - "workdayCycle": {
- "cycleDuration": 1,
- "minFreeWeekends": 1,
- "minDesiredFreeWeekends": 1,
- "minOffdays": 1,
- "minDesiredOffdays": 1
}, - "fixedPresences": [
- {
- "date": "2020-04-10",
- "start": "07:25",
- "end": "07:25",
- "overlapConfig": 0
}
], - "preventSplitWeekends": false,
- "info": "string",
- "totalTaskTime": 2147483647
}
], - "statistics": {
- "impact": [
- {
- "label": "string",
- "value": 1,
- "absolute": 1.7e+308
}
], - "timeWindowViolationTaskIDs": [
- 2147483647
], - "unassignedTaskIDs": [
- 2147483647
], - "unassignableTaskIDs": [
- 2147483647
], - "history": {
- "workers": [
- {
- "workerID": 2147483647,
- "minConsecutiveWorkdays": 2147483647,
- "maxConsecutiveWorkdays": 2147483647,
- "minConsecutiveOffdays": 2147483647,
- "maxConsecutiveOffdays": 2147483647,
- "minFreeSaturdays": 2147483647,
- "minFreeSundays": 2147483647,
- "minFreeWeekends": 2147483647,
- "maxWeeklyWorkingDays": 2147483647,
- "maxNightShifts": 2147483647,
- "maxConsecutiveSameTaskStart": 2147483647,
- "weeklyShifts": [
- {
- "weekday": 6,
- "shiftStart": "07:25",
- "shiftEnd": "07:25",
- "workPreferenceFactor": -1
}
], - "preferenceFactor": 1.7e+308,
- "cycleStart": "2020-04-10"
}
]
}, - "preferredWorkers": {
- "matched": 2147483647,
- "unmatched": 2147483647,
- "unassigned": 2147483647
}, - "unpreferredWorkers": {
- "matched": 2147483647,
- "unmatched": 2147483647,
- "unassigned": 2147483647
}
}, - "info": {
- "text": "string",
- "feasible": true
}, - "anomalies": [
- {
- "anomalyKey": "string",
- "severity": "high",
- "text": "string",
- "taskID": 2147483647,
- "workerID": 2147483647
}
], - "backendVersion": {
- "version": "v1.0.0",
- "optVersion": "1970-01-01_0p0",
- "rev": "strings",
- "schema": "v1.2.3"
}, - "recovery": [
- 2147483647
], - "developerOptions": {
- "recovery": [
- 2147483647
], - "debugSolution": "string"
}
}| schema | string Schema version against which input and output data are validated |
| version | string Version of the application that calculates solutions |
| meta_data | string Meta data version |
| api_scripts | string Version of the scripts handling requests |
{- "schema": "v1.7.0",
- "version": "2024-10-01_0",
- "meta_data": "v19",
- "api_scripts": "v1.6.2"
}| Name required | string Package name to use in the |
| LastModified | string Modification timestamp of the package, usually of the time it was uploaded at |
object (VersionInfo) |
[- {
- "Name": "a6b69c77bedb7",
- "LastModified": "2024-08-16T12:41:09.000Z",
- "Content": {
- "schema": "v2.7.0",
- "version": "2024-10-01_0",
- "meta_data": "v26"
}
}, - {
- "Name": "d63ca460db7bc",
- "LastModified": "2024-08-16T09:16:09.000Z",
- "Content": {
- "schema": "v2.3.0",
- "version": "2024-10-01_0p0",
- "meta_data": "v26"
}
}
]ShiftPlannerInputWorker: Added dontAlter.ShiftPlannerInputTask:precedingTasks.preassignedOrder.DeveloperOptionsErrorPlan: Added developerOptions, deprecated recoveryShiftPlannerInputPlan, ShiftPlannerOutputPlan: Added developerOptions, deprecated recoveryShiftPlannerInputPlan: Updated description for history.ShiftPlannerInputTask: Updated description for preassignedWorker, initassignedWorker, predecessorTasks.ShiftPlannerOptimizationParameters: Updated description for preset.PredecessorChain for POST /shift-description endpointaccept and accept-encoding headers to GET /version, GET /packages-list endpoints, added 406 response code409 response code to all GET endpointsPackagesList and VersionInfo componentShiftPlannerOutput:ShiftPlannerOutputPlan and ErrorPlan into one definition to use as schema in /plan GET responseShiftPlannerInputWorker: workdayPattern.workdayCycle.ShiftPlannerStatisticsHistoryWorkerEntry:cycleStartcontent-type options in POST requests:application/vnd.adiutabyte.adiutaopt.json+gzipapplication/vnd.adiutabyte.adiutaopt.json+deflateapplication/vnd.adiutabyte.adiutaopt.json+braccept-encoding in GET requests with allowed values:identitydeflategzipaccept in GET requests with allowed values:application/jsonapplication/vnd.adiutabyte.adiutaopt.json+gzipapplication/vnd.adiutabyte.adiutaopt.json+deflateapplication/vnd.adiutabyte.adiutaopt.json+brversion to adiutaopt-versionBackendVersion:version to be constant "v1.0.0", marked as deprecatedoptVersion, has the same properties as version did in v4OPTIONS requestsOPTIONS requestsVersion to paths /shift-description and /shift-version/shift-packages-listShiftPlannerInputWorker:consecutiveNightShiftsForOffdaysminOffdaysAfterConsecutiveNightShiftsNumber_u32, replaced all occurrences with Number_u64. Those are:ShiftPlannerInputWorker, ShiftPlannerOutputWorker:costsPerMinutecostsInitialNumber_s64Number_s32, replaced all occurrences with Number_s64. Those are:ShiftPlannerOutputTaskAssigned:profitShiftPlannerInputTask/ShiftPlannerOutputTask: revenue, changed it from Number_s32 to Number_u64ShiftPlannerStatisticsPreferencesMatchesShiftPlannerStatistics:preferredWorkersunpreferredWorkersShiftPlannerOutputWorker:totalTaskTimeShiftPlannerInputTask, ShiftPlannerInputWorker:unpreferredWorkersantiWorkers as deprecatedErrorEntryShiftPlannerInputTask, ShiftPlannerInputWorkerErrorPlanShiftPlannerOutputTaskAssignedShiftPlannerOutputTaskUnassignedShiftPlannerOutputWorker