Solve Fill
Will trigger the solver run.
curl --request POST \
--url https://api.solvice.io/v2/fill/solve \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"employees": [
{
"name": "<string>",
"home": {
"lat": 123,
"lon": 123
},
"availability": [
{
"from": "2023-11-07T05:31:56Z",
"to": "2023-11-07T05:31:56Z",
"location": {
"lat": 123,
"lon": 123
}
}
],
"preference": [
"<string>"
],
"skills": [
{
"name": "<string>",
"expiry": "2022-03-10",
"weight": 123,
"period": {
"from": "2022-03-10T12:15:50",
"to": "2022-03-10T12:15:50",
"duration": "<string>",
"period": "<string>",
"excludes": [
"2023-12-25"
]
}
}
],
"hourlyPay": 123,
"efficiency": 123,
"periodRules": [
{
"period": {
"from": "2022-03-10T12:15:50",
"to": "2022-03-10T12:15:50",
"duration": "<string>",
"period": "<string>",
"excludes": [
"2023-12-25"
]
},
"maxWorkingDays": 123,
"minWorkingDays": 123,
"minWorkingDuration": "<string>",
"maxWorkingDuration": "<string>",
"minRestDurationBetweenShiftsSameDay": "<string>",
"minRestDuration": "<string>",
"maxShiftLength": "<string>",
"minShiftLength": "<string>",
"latestShiftStart": "<string>",
"earliestShiftStart": "<string>",
"latestShiftEnd": "<string>",
"minWeekendsIdle": 123,
"maxWeekendsIdle": 123
}
],
"contracts": [
{
"name": "<string>",
"max": "<string>",
"min": "<string>",
"maxConsecutiveWorkDays": 123,
"maxShiftsDay": 123,
"minRestBetweenShiftsSameDay": 123,
"minRest": "<string>",
"maxWorkingDays": 123,
"maxShiftLength": "<string>",
"minShiftLength": "<string>",
"latestShiftStart": "<string>",
"earliestShiftStart": "<string>",
"latestShiftEnd": "<string>"
}
]
}
],
"shifts": [
{
"name": "<string>",
"from": "2023-11-07T05:31:56Z",
"to": "2023-11-07T05:31:56Z",
"min": 123,
"max": 123,
"tags": [
{
"name": "<string>"
}
],
"skills": [
{
"name": "<string>",
"hard": true,
"weight": 123
}
],
"priority": 1,
"cost": 1,
"rests": [
{
"tags": [
"<string>"
],
"excludes": [
"<string>"
],
"period": {
"from": "2022-03-10T12:15:50",
"to": "2022-03-10T12:15:50",
"duration": "<string>",
"period": "<string>",
"excludes": [
"2023-12-25"
]
},
"min": "<string>",
"minConsecutive": "<string>",
"max": "<string>",
"frequency": 123
}
],
"blocklist": [
"<string>"
],
"value": 123,
"employees": [
"<string>"
],
"locked": [
true
],
"location": {
"lat": 123,
"lon": 123
}
}
],
"rules": [
{
"period": {
"from": "2022-03-10T12:15:50",
"to": "2022-03-10T12:15:50",
"duration": "<string>",
"period": "<string>",
"excludes": [
"2023-12-25"
]
},
"min": 123,
"max": 123,
"shifts": [
"<string>"
],
"then": {}
}
],
"rests": [
{
"tags": [
"<string>"
],
"excludes": [
"<string>"
],
"period": {
"from": "2022-03-10T12:15:50",
"to": "2022-03-10T12:15:50",
"duration": "<string>",
"period": "<string>",
"excludes": [
"2023-12-25"
]
},
"min": "<string>",
"minConsecutive": "<string>",
"max": "<string>",
"frequency": 123
}
],
"demands": [
{
"from": "2023-11-07T05:31:56Z",
"to": "2023-11-07T05:31:56Z",
"skills": [
{
"name": "<string>",
"hard": true,
"weight": 123
}
],
"name": "<string>",
"min": 123,
"max": 123
}
],
"patterns": [
{
"elements": [
{
"tags": [
"<string>"
]
}
],
"weight": 123
}
],
"fairnessBuckets": [
{
"employees": [
"<string>"
],
"shifts": [
"<string>"
],
"target": "<string>",
"period": {
"from": "2022-03-10T12:15:50",
"to": "2022-03-10T12:15:50",
"duration": "<string>",
"period": "<string>",
"excludes": [
"2023-12-25"
]
}
}
],
"requirements": [
{
"shifts": [
"<string>"
],
"skill": "<string>",
"value": 123
}
],
"assignments": [
{
"shift": "<string>",
"employee": "<string>",
"locked": true
}
],
"weights": {
"unassigned": "<string>",
"maxWorkingDays": "<string>",
"concurrent": "<string>",
"sameDay": "<string>",
"minRest": "<string>",
"maxConsecutive": "<string>",
"working": "<string>",
"sameDayMinRest": "<string>",
"minHours": "<string>",
"minHoursUnassigned": "<string>",
"maxHours": "<string>",
"minShift": "<string>",
"maxShift": "<string>",
"shiftStart": "<string>",
"latestShiftStart": "<string>",
"shiftEnd": "<string>",
"dayOfWeek": "<string>",
"requirements": "<string>",
"availability": "<string>",
"skills": "<string>",
"criticalSkills": "<string>",
"locked": "<string>",
"blacklist": "<string>",
"pref": "<string>",
"costs": "<string>",
"wages": "<string>",
"efficiency": "<string>",
"distance": "<string>",
"distanceAL": "<string>",
"priority": "<string>",
"softSkills": "<string>",
"softSkillsLevel": "<string>",
"fairness": "<string>",
"counterDaysWorked": "<string>",
"counterDaysIdle": "<string>",
"counterHoursWorked": "<string>",
"counterShiftTypesWorked": "<string>",
"counterShiftTypesHours": "<string>",
"counterWeekendsWorked": "<string>",
"counterWeekendsIdle": "<string>",
"counterMaxConsecutiveDays": "<string>",
"sequenceDaysWorked": "<string>",
"sequenceDaysIdle": "<string>",
"sequenceHoursWorked": "<string>",
"sequenceShiftTypesWorked": "<string>",
"sequenceShiftTypesHours": "<string>",
"sequenceWeekendsWorked": "<string>",
"sequenceWeekendsIdle": "<string>",
"sequenceMaxConsecutiveDays": "<string>",
"restMinDuration": "<string>",
"restMinConsecutive": "<string>",
"restBeforeShift": "<string>",
"restAfterShift": "<string>",
"restMaxDuration": "<string>",
"restTotalDuration": "<string>",
"patternProhibited": "<string>",
"patternPreferred": "<string>",
"patternUnpreferred": "<string>"
},
"options": {
"hardAvailability": true,
"hardSkill": true,
"hardBlacklist": true,
"partialPlanning": true,
"penaliseZeroHours": true,
"useAvailabilityLocations": true,
"alwaysScoreSharedSkills": true,
"explanation": {
"enabled": true,
"filterHardConstraints": true,
"onlyUnassigned": true
}
},
"hook": "<string>",
"label": "<string>",
"metadata": {}
}
'import requests
url = "https://api.solvice.io/v2/fill/solve"
payload = {
"employees": [
{
"name": "<string>",
"home": {
"lat": 123,
"lon": 123
},
"availability": [
{
"from": "2023-11-07T05:31:56Z",
"to": "2023-11-07T05:31:56Z",
"location": {
"lat": 123,
"lon": 123
}
}
],
"preference": ["<string>"],
"skills": [
{
"name": "<string>",
"expiry": "2022-03-10",
"weight": 123,
"period": {
"from": "2022-03-10T12:15:50",
"to": "2022-03-10T12:15:50",
"duration": "<string>",
"period": "<string>",
"excludes": ["2023-12-25"]
}
}
],
"hourlyPay": 123,
"efficiency": 123,
"periodRules": [
{
"period": {
"from": "2022-03-10T12:15:50",
"to": "2022-03-10T12:15:50",
"duration": "<string>",
"period": "<string>",
"excludes": ["2023-12-25"]
},
"maxWorkingDays": 123,
"minWorkingDays": 123,
"minWorkingDuration": "<string>",
"maxWorkingDuration": "<string>",
"minRestDurationBetweenShiftsSameDay": "<string>",
"minRestDuration": "<string>",
"maxShiftLength": "<string>",
"minShiftLength": "<string>",
"latestShiftStart": "<string>",
"earliestShiftStart": "<string>",
"latestShiftEnd": "<string>",
"minWeekendsIdle": 123,
"maxWeekendsIdle": 123
}
],
"contracts": [
{
"name": "<string>",
"max": "<string>",
"min": "<string>",
"maxConsecutiveWorkDays": 123,
"maxShiftsDay": 123,
"minRestBetweenShiftsSameDay": 123,
"minRest": "<string>",
"maxWorkingDays": 123,
"maxShiftLength": "<string>",
"minShiftLength": "<string>",
"latestShiftStart": "<string>",
"earliestShiftStart": "<string>",
"latestShiftEnd": "<string>"
}
]
}
],
"shifts": [
{
"name": "<string>",
"from": "2023-11-07T05:31:56Z",
"to": "2023-11-07T05:31:56Z",
"min": 123,
"max": 123,
"tags": [{ "name": "<string>" }],
"skills": [
{
"name": "<string>",
"hard": True,
"weight": 123
}
],
"priority": 1,
"cost": 1,
"rests": [
{
"tags": ["<string>"],
"excludes": ["<string>"],
"period": {
"from": "2022-03-10T12:15:50",
"to": "2022-03-10T12:15:50",
"duration": "<string>",
"period": "<string>",
"excludes": ["2023-12-25"]
},
"min": "<string>",
"minConsecutive": "<string>",
"max": "<string>",
"frequency": 123
}
],
"blocklist": ["<string>"],
"value": 123,
"employees": ["<string>"],
"locked": [True],
"location": {
"lat": 123,
"lon": 123
}
}
],
"rules": [
{
"period": {
"from": "2022-03-10T12:15:50",
"to": "2022-03-10T12:15:50",
"duration": "<string>",
"period": "<string>",
"excludes": ["2023-12-25"]
},
"min": 123,
"max": 123,
"shifts": ["<string>"],
"then": {}
}
],
"rests": [
{
"tags": ["<string>"],
"excludes": ["<string>"],
"period": {
"from": "2022-03-10T12:15:50",
"to": "2022-03-10T12:15:50",
"duration": "<string>",
"period": "<string>",
"excludes": ["2023-12-25"]
},
"min": "<string>",
"minConsecutive": "<string>",
"max": "<string>",
"frequency": 123
}
],
"demands": [
{
"from": "2023-11-07T05:31:56Z",
"to": "2023-11-07T05:31:56Z",
"skills": [
{
"name": "<string>",
"hard": True,
"weight": 123
}
],
"name": "<string>",
"min": 123,
"max": 123
}
],
"patterns": [
{
"elements": [{ "tags": ["<string>"] }],
"weight": 123
}
],
"fairnessBuckets": [
{
"employees": ["<string>"],
"shifts": ["<string>"],
"target": "<string>",
"period": {
"from": "2022-03-10T12:15:50",
"to": "2022-03-10T12:15:50",
"duration": "<string>",
"period": "<string>",
"excludes": ["2023-12-25"]
}
}
],
"requirements": [
{
"shifts": ["<string>"],
"skill": "<string>",
"value": 123
}
],
"assignments": [
{
"shift": "<string>",
"employee": "<string>",
"locked": True
}
],
"weights": {
"unassigned": "<string>",
"maxWorkingDays": "<string>",
"concurrent": "<string>",
"sameDay": "<string>",
"minRest": "<string>",
"maxConsecutive": "<string>",
"working": "<string>",
"sameDayMinRest": "<string>",
"minHours": "<string>",
"minHoursUnassigned": "<string>",
"maxHours": "<string>",
"minShift": "<string>",
"maxShift": "<string>",
"shiftStart": "<string>",
"latestShiftStart": "<string>",
"shiftEnd": "<string>",
"dayOfWeek": "<string>",
"requirements": "<string>",
"availability": "<string>",
"skills": "<string>",
"criticalSkills": "<string>",
"locked": "<string>",
"blacklist": "<string>",
"pref": "<string>",
"costs": "<string>",
"wages": "<string>",
"efficiency": "<string>",
"distance": "<string>",
"distanceAL": "<string>",
"priority": "<string>",
"softSkills": "<string>",
"softSkillsLevel": "<string>",
"fairness": "<string>",
"counterDaysWorked": "<string>",
"counterDaysIdle": "<string>",
"counterHoursWorked": "<string>",
"counterShiftTypesWorked": "<string>",
"counterShiftTypesHours": "<string>",
"counterWeekendsWorked": "<string>",
"counterWeekendsIdle": "<string>",
"counterMaxConsecutiveDays": "<string>",
"sequenceDaysWorked": "<string>",
"sequenceDaysIdle": "<string>",
"sequenceHoursWorked": "<string>",
"sequenceShiftTypesWorked": "<string>",
"sequenceShiftTypesHours": "<string>",
"sequenceWeekendsWorked": "<string>",
"sequenceWeekendsIdle": "<string>",
"sequenceMaxConsecutiveDays": "<string>",
"restMinDuration": "<string>",
"restMinConsecutive": "<string>",
"restBeforeShift": "<string>",
"restAfterShift": "<string>",
"restMaxDuration": "<string>",
"restTotalDuration": "<string>",
"patternProhibited": "<string>",
"patternPreferred": "<string>",
"patternUnpreferred": "<string>"
},
"options": {
"hardAvailability": True,
"hardSkill": True,
"hardBlacklist": True,
"partialPlanning": True,
"penaliseZeroHours": True,
"useAvailabilityLocations": True,
"alwaysScoreSharedSkills": True,
"explanation": {
"enabled": True,
"filterHardConstraints": True,
"onlyUnassigned": True
}
},
"hook": "<string>",
"label": "<string>",
"metadata": {}
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
employees: [
{
name: '<string>',
home: {lat: 123, lon: 123},
availability: [
{
from: '2023-11-07T05:31:56Z',
to: '2023-11-07T05:31:56Z',
location: {lat: 123, lon: 123}
}
],
preference: ['<string>'],
skills: [
{
name: '<string>',
expiry: '2022-03-10',
weight: 123,
period: {
from: '2022-03-10T12:15:50',
to: '2022-03-10T12:15:50',
duration: '<string>',
period: '<string>',
excludes: ['2023-12-25']
}
}
],
hourlyPay: 123,
efficiency: 123,
periodRules: [
{
period: {
from: '2022-03-10T12:15:50',
to: '2022-03-10T12:15:50',
duration: '<string>',
period: '<string>',
excludes: ['2023-12-25']
},
maxWorkingDays: 123,
minWorkingDays: 123,
minWorkingDuration: '<string>',
maxWorkingDuration: '<string>',
minRestDurationBetweenShiftsSameDay: '<string>',
minRestDuration: '<string>',
maxShiftLength: '<string>',
minShiftLength: '<string>',
latestShiftStart: '<string>',
earliestShiftStart: '<string>',
latestShiftEnd: '<string>',
minWeekendsIdle: 123,
maxWeekendsIdle: 123
}
],
contracts: [
{
name: '<string>',
max: '<string>',
min: '<string>',
maxConsecutiveWorkDays: 123,
maxShiftsDay: 123,
minRestBetweenShiftsSameDay: 123,
minRest: '<string>',
maxWorkingDays: 123,
maxShiftLength: '<string>',
minShiftLength: '<string>',
latestShiftStart: '<string>',
earliestShiftStart: '<string>',
latestShiftEnd: '<string>'
}
]
}
],
shifts: [
{
name: '<string>',
from: '2023-11-07T05:31:56Z',
to: '2023-11-07T05:31:56Z',
min: 123,
max: 123,
tags: [{name: '<string>'}],
skills: [{name: '<string>', hard: true, weight: 123}],
priority: 1,
cost: 1,
rests: [
{
tags: ['<string>'],
excludes: ['<string>'],
period: {
from: '2022-03-10T12:15:50',
to: '2022-03-10T12:15:50',
duration: '<string>',
period: '<string>',
excludes: ['2023-12-25']
},
min: '<string>',
minConsecutive: '<string>',
max: '<string>',
frequency: 123
}
],
blocklist: ['<string>'],
value: 123,
employees: ['<string>'],
locked: [true],
location: {lat: 123, lon: 123}
}
],
rules: [
{
period: {
from: '2022-03-10T12:15:50',
to: '2022-03-10T12:15:50',
duration: '<string>',
period: '<string>',
excludes: ['2023-12-25']
},
min: 123,
max: 123,
shifts: ['<string>'],
then: {}
}
],
rests: [
{
tags: ['<string>'],
excludes: ['<string>'],
period: {
from: '2022-03-10T12:15:50',
to: '2022-03-10T12:15:50',
duration: '<string>',
period: '<string>',
excludes: ['2023-12-25']
},
min: '<string>',
minConsecutive: '<string>',
max: '<string>',
frequency: 123
}
],
demands: [
{
from: '2023-11-07T05:31:56Z',
to: '2023-11-07T05:31:56Z',
skills: [{name: '<string>', hard: true, weight: 123}],
name: '<string>',
min: 123,
max: 123
}
],
patterns: [{elements: [{tags: ['<string>']}], weight: 123}],
fairnessBuckets: [
{
employees: ['<string>'],
shifts: ['<string>'],
target: '<string>',
period: {
from: '2022-03-10T12:15:50',
to: '2022-03-10T12:15:50',
duration: '<string>',
period: '<string>',
excludes: ['2023-12-25']
}
}
],
requirements: [{shifts: ['<string>'], skill: '<string>', value: 123}],
assignments: [{shift: '<string>', employee: '<string>', locked: true}],
weights: {
unassigned: '<string>',
maxWorkingDays: '<string>',
concurrent: '<string>',
sameDay: '<string>',
minRest: '<string>',
maxConsecutive: '<string>',
working: '<string>',
sameDayMinRest: '<string>',
minHours: '<string>',
minHoursUnassigned: '<string>',
maxHours: '<string>',
minShift: '<string>',
maxShift: '<string>',
shiftStart: '<string>',
latestShiftStart: '<string>',
shiftEnd: '<string>',
dayOfWeek: '<string>',
requirements: '<string>',
availability: '<string>',
skills: '<string>',
criticalSkills: '<string>',
locked: '<string>',
blacklist: '<string>',
pref: '<string>',
costs: '<string>',
wages: '<string>',
efficiency: '<string>',
distance: '<string>',
distanceAL: '<string>',
priority: '<string>',
softSkills: '<string>',
softSkillsLevel: '<string>',
fairness: '<string>',
counterDaysWorked: '<string>',
counterDaysIdle: '<string>',
counterHoursWorked: '<string>',
counterShiftTypesWorked: '<string>',
counterShiftTypesHours: '<string>',
counterWeekendsWorked: '<string>',
counterWeekendsIdle: '<string>',
counterMaxConsecutiveDays: '<string>',
sequenceDaysWorked: '<string>',
sequenceDaysIdle: '<string>',
sequenceHoursWorked: '<string>',
sequenceShiftTypesWorked: '<string>',
sequenceShiftTypesHours: '<string>',
sequenceWeekendsWorked: '<string>',
sequenceWeekendsIdle: '<string>',
sequenceMaxConsecutiveDays: '<string>',
restMinDuration: '<string>',
restMinConsecutive: '<string>',
restBeforeShift: '<string>',
restAfterShift: '<string>',
restMaxDuration: '<string>',
restTotalDuration: '<string>',
patternProhibited: '<string>',
patternPreferred: '<string>',
patternUnpreferred: '<string>'
},
options: {
hardAvailability: true,
hardSkill: true,
hardBlacklist: true,
partialPlanning: true,
penaliseZeroHours: true,
useAvailabilityLocations: true,
alwaysScoreSharedSkills: true,
explanation: {enabled: true, filterHardConstraints: true, onlyUnassigned: true}
},
hook: '<string>',
label: '<string>',
metadata: {}
})
};
fetch('https://api.solvice.io/v2/fill/solve', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.solvice.io/v2/fill/solve",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'employees' => [
[
'name' => '<string>',
'home' => [
'lat' => 123,
'lon' => 123
],
'availability' => [
[
'from' => '2023-11-07T05:31:56Z',
'to' => '2023-11-07T05:31:56Z',
'location' => [
'lat' => 123,
'lon' => 123
]
]
],
'preference' => [
'<string>'
],
'skills' => [
[
'name' => '<string>',
'expiry' => '2022-03-10',
'weight' => 123,
'period' => [
'from' => '2022-03-10T12:15:50',
'to' => '2022-03-10T12:15:50',
'duration' => '<string>',
'period' => '<string>',
'excludes' => [
'2023-12-25'
]
]
]
],
'hourlyPay' => 123,
'efficiency' => 123,
'periodRules' => [
[
'period' => [
'from' => '2022-03-10T12:15:50',
'to' => '2022-03-10T12:15:50',
'duration' => '<string>',
'period' => '<string>',
'excludes' => [
'2023-12-25'
]
],
'maxWorkingDays' => 123,
'minWorkingDays' => 123,
'minWorkingDuration' => '<string>',
'maxWorkingDuration' => '<string>',
'minRestDurationBetweenShiftsSameDay' => '<string>',
'minRestDuration' => '<string>',
'maxShiftLength' => '<string>',
'minShiftLength' => '<string>',
'latestShiftStart' => '<string>',
'earliestShiftStart' => '<string>',
'latestShiftEnd' => '<string>',
'minWeekendsIdle' => 123,
'maxWeekendsIdle' => 123
]
],
'contracts' => [
[
'name' => '<string>',
'max' => '<string>',
'min' => '<string>',
'maxConsecutiveWorkDays' => 123,
'maxShiftsDay' => 123,
'minRestBetweenShiftsSameDay' => 123,
'minRest' => '<string>',
'maxWorkingDays' => 123,
'maxShiftLength' => '<string>',
'minShiftLength' => '<string>',
'latestShiftStart' => '<string>',
'earliestShiftStart' => '<string>',
'latestShiftEnd' => '<string>'
]
]
]
],
'shifts' => [
[
'name' => '<string>',
'from' => '2023-11-07T05:31:56Z',
'to' => '2023-11-07T05:31:56Z',
'min' => 123,
'max' => 123,
'tags' => [
[
'name' => '<string>'
]
],
'skills' => [
[
'name' => '<string>',
'hard' => true,
'weight' => 123
]
],
'priority' => 1,
'cost' => 1,
'rests' => [
[
'tags' => [
'<string>'
],
'excludes' => [
'<string>'
],
'period' => [
'from' => '2022-03-10T12:15:50',
'to' => '2022-03-10T12:15:50',
'duration' => '<string>',
'period' => '<string>',
'excludes' => [
'2023-12-25'
]
],
'min' => '<string>',
'minConsecutive' => '<string>',
'max' => '<string>',
'frequency' => 123
]
],
'blocklist' => [
'<string>'
],
'value' => 123,
'employees' => [
'<string>'
],
'locked' => [
true
],
'location' => [
'lat' => 123,
'lon' => 123
]
]
],
'rules' => [
[
'period' => [
'from' => '2022-03-10T12:15:50',
'to' => '2022-03-10T12:15:50',
'duration' => '<string>',
'period' => '<string>',
'excludes' => [
'2023-12-25'
]
],
'min' => 123,
'max' => 123,
'shifts' => [
'<string>'
],
'then' => [
]
]
],
'rests' => [
[
'tags' => [
'<string>'
],
'excludes' => [
'<string>'
],
'period' => [
'from' => '2022-03-10T12:15:50',
'to' => '2022-03-10T12:15:50',
'duration' => '<string>',
'period' => '<string>',
'excludes' => [
'2023-12-25'
]
],
'min' => '<string>',
'minConsecutive' => '<string>',
'max' => '<string>',
'frequency' => 123
]
],
'demands' => [
[
'from' => '2023-11-07T05:31:56Z',
'to' => '2023-11-07T05:31:56Z',
'skills' => [
[
'name' => '<string>',
'hard' => true,
'weight' => 123
]
],
'name' => '<string>',
'min' => 123,
'max' => 123
]
],
'patterns' => [
[
'elements' => [
[
'tags' => [
'<string>'
]
]
],
'weight' => 123
]
],
'fairnessBuckets' => [
[
'employees' => [
'<string>'
],
'shifts' => [
'<string>'
],
'target' => '<string>',
'period' => [
'from' => '2022-03-10T12:15:50',
'to' => '2022-03-10T12:15:50',
'duration' => '<string>',
'period' => '<string>',
'excludes' => [
'2023-12-25'
]
]
]
],
'requirements' => [
[
'shifts' => [
'<string>'
],
'skill' => '<string>',
'value' => 123
]
],
'assignments' => [
[
'shift' => '<string>',
'employee' => '<string>',
'locked' => true
]
],
'weights' => [
'unassigned' => '<string>',
'maxWorkingDays' => '<string>',
'concurrent' => '<string>',
'sameDay' => '<string>',
'minRest' => '<string>',
'maxConsecutive' => '<string>',
'working' => '<string>',
'sameDayMinRest' => '<string>',
'minHours' => '<string>',
'minHoursUnassigned' => '<string>',
'maxHours' => '<string>',
'minShift' => '<string>',
'maxShift' => '<string>',
'shiftStart' => '<string>',
'latestShiftStart' => '<string>',
'shiftEnd' => '<string>',
'dayOfWeek' => '<string>',
'requirements' => '<string>',
'availability' => '<string>',
'skills' => '<string>',
'criticalSkills' => '<string>',
'locked' => '<string>',
'blacklist' => '<string>',
'pref' => '<string>',
'costs' => '<string>',
'wages' => '<string>',
'efficiency' => '<string>',
'distance' => '<string>',
'distanceAL' => '<string>',
'priority' => '<string>',
'softSkills' => '<string>',
'softSkillsLevel' => '<string>',
'fairness' => '<string>',
'counterDaysWorked' => '<string>',
'counterDaysIdle' => '<string>',
'counterHoursWorked' => '<string>',
'counterShiftTypesWorked' => '<string>',
'counterShiftTypesHours' => '<string>',
'counterWeekendsWorked' => '<string>',
'counterWeekendsIdle' => '<string>',
'counterMaxConsecutiveDays' => '<string>',
'sequenceDaysWorked' => '<string>',
'sequenceDaysIdle' => '<string>',
'sequenceHoursWorked' => '<string>',
'sequenceShiftTypesWorked' => '<string>',
'sequenceShiftTypesHours' => '<string>',
'sequenceWeekendsWorked' => '<string>',
'sequenceWeekendsIdle' => '<string>',
'sequenceMaxConsecutiveDays' => '<string>',
'restMinDuration' => '<string>',
'restMinConsecutive' => '<string>',
'restBeforeShift' => '<string>',
'restAfterShift' => '<string>',
'restMaxDuration' => '<string>',
'restTotalDuration' => '<string>',
'patternProhibited' => '<string>',
'patternPreferred' => '<string>',
'patternUnpreferred' => '<string>'
],
'options' => [
'hardAvailability' => true,
'hardSkill' => true,
'hardBlacklist' => true,
'partialPlanning' => true,
'penaliseZeroHours' => true,
'useAvailabilityLocations' => true,
'alwaysScoreSharedSkills' => true,
'explanation' => [
'enabled' => true,
'filterHardConstraints' => true,
'onlyUnassigned' => true
]
],
'hook' => '<string>',
'label' => '<string>',
'metadata' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.solvice.io/v2/fill/solve"
payload := strings.NewReader("{\n \"employees\": [\n {\n \"name\": \"<string>\",\n \"home\": {\n \"lat\": 123,\n \"lon\": 123\n },\n \"availability\": [\n {\n \"from\": \"2023-11-07T05:31:56Z\",\n \"to\": \"2023-11-07T05:31:56Z\",\n \"location\": {\n \"lat\": 123,\n \"lon\": 123\n }\n }\n ],\n \"preference\": [\n \"<string>\"\n ],\n \"skills\": [\n {\n \"name\": \"<string>\",\n \"expiry\": \"2022-03-10\",\n \"weight\": 123,\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n }\n }\n ],\n \"hourlyPay\": 123,\n \"efficiency\": 123,\n \"periodRules\": [\n {\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n },\n \"maxWorkingDays\": 123,\n \"minWorkingDays\": 123,\n \"minWorkingDuration\": \"<string>\",\n \"maxWorkingDuration\": \"<string>\",\n \"minRestDurationBetweenShiftsSameDay\": \"<string>\",\n \"minRestDuration\": \"<string>\",\n \"maxShiftLength\": \"<string>\",\n \"minShiftLength\": \"<string>\",\n \"latestShiftStart\": \"<string>\",\n \"earliestShiftStart\": \"<string>\",\n \"latestShiftEnd\": \"<string>\",\n \"minWeekendsIdle\": 123,\n \"maxWeekendsIdle\": 123\n }\n ],\n \"contracts\": [\n {\n \"name\": \"<string>\",\n \"max\": \"<string>\",\n \"min\": \"<string>\",\n \"maxConsecutiveWorkDays\": 123,\n \"maxShiftsDay\": 123,\n \"minRestBetweenShiftsSameDay\": 123,\n \"minRest\": \"<string>\",\n \"maxWorkingDays\": 123,\n \"maxShiftLength\": \"<string>\",\n \"minShiftLength\": \"<string>\",\n \"latestShiftStart\": \"<string>\",\n \"earliestShiftStart\": \"<string>\",\n \"latestShiftEnd\": \"<string>\"\n }\n ]\n }\n ],\n \"shifts\": [\n {\n \"name\": \"<string>\",\n \"from\": \"2023-11-07T05:31:56Z\",\n \"to\": \"2023-11-07T05:31:56Z\",\n \"min\": 123,\n \"max\": 123,\n \"tags\": [\n {\n \"name\": \"<string>\"\n }\n ],\n \"skills\": [\n {\n \"name\": \"<string>\",\n \"hard\": true,\n \"weight\": 123\n }\n ],\n \"priority\": 1,\n \"cost\": 1,\n \"rests\": [\n {\n \"tags\": [\n \"<string>\"\n ],\n \"excludes\": [\n \"<string>\"\n ],\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n },\n \"min\": \"<string>\",\n \"minConsecutive\": \"<string>\",\n \"max\": \"<string>\",\n \"frequency\": 123\n }\n ],\n \"blocklist\": [\n \"<string>\"\n ],\n \"value\": 123,\n \"employees\": [\n \"<string>\"\n ],\n \"locked\": [\n true\n ],\n \"location\": {\n \"lat\": 123,\n \"lon\": 123\n }\n }\n ],\n \"rules\": [\n {\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n },\n \"min\": 123,\n \"max\": 123,\n \"shifts\": [\n \"<string>\"\n ],\n \"then\": {}\n }\n ],\n \"rests\": [\n {\n \"tags\": [\n \"<string>\"\n ],\n \"excludes\": [\n \"<string>\"\n ],\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n },\n \"min\": \"<string>\",\n \"minConsecutive\": \"<string>\",\n \"max\": \"<string>\",\n \"frequency\": 123\n }\n ],\n \"demands\": [\n {\n \"from\": \"2023-11-07T05:31:56Z\",\n \"to\": \"2023-11-07T05:31:56Z\",\n \"skills\": [\n {\n \"name\": \"<string>\",\n \"hard\": true,\n \"weight\": 123\n }\n ],\n \"name\": \"<string>\",\n \"min\": 123,\n \"max\": 123\n }\n ],\n \"patterns\": [\n {\n \"elements\": [\n {\n \"tags\": [\n \"<string>\"\n ]\n }\n ],\n \"weight\": 123\n }\n ],\n \"fairnessBuckets\": [\n {\n \"employees\": [\n \"<string>\"\n ],\n \"shifts\": [\n \"<string>\"\n ],\n \"target\": \"<string>\",\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n }\n }\n ],\n \"requirements\": [\n {\n \"shifts\": [\n \"<string>\"\n ],\n \"skill\": \"<string>\",\n \"value\": 123\n }\n ],\n \"assignments\": [\n {\n \"shift\": \"<string>\",\n \"employee\": \"<string>\",\n \"locked\": true\n }\n ],\n \"weights\": {\n \"unassigned\": \"<string>\",\n \"maxWorkingDays\": \"<string>\",\n \"concurrent\": \"<string>\",\n \"sameDay\": \"<string>\",\n \"minRest\": \"<string>\",\n \"maxConsecutive\": \"<string>\",\n \"working\": \"<string>\",\n \"sameDayMinRest\": \"<string>\",\n \"minHours\": \"<string>\",\n \"minHoursUnassigned\": \"<string>\",\n \"maxHours\": \"<string>\",\n \"minShift\": \"<string>\",\n \"maxShift\": \"<string>\",\n \"shiftStart\": \"<string>\",\n \"latestShiftStart\": \"<string>\",\n \"shiftEnd\": \"<string>\",\n \"dayOfWeek\": \"<string>\",\n \"requirements\": \"<string>\",\n \"availability\": \"<string>\",\n \"skills\": \"<string>\",\n \"criticalSkills\": \"<string>\",\n \"locked\": \"<string>\",\n \"blacklist\": \"<string>\",\n \"pref\": \"<string>\",\n \"costs\": \"<string>\",\n \"wages\": \"<string>\",\n \"efficiency\": \"<string>\",\n \"distance\": \"<string>\",\n \"distanceAL\": \"<string>\",\n \"priority\": \"<string>\",\n \"softSkills\": \"<string>\",\n \"softSkillsLevel\": \"<string>\",\n \"fairness\": \"<string>\",\n \"counterDaysWorked\": \"<string>\",\n \"counterDaysIdle\": \"<string>\",\n \"counterHoursWorked\": \"<string>\",\n \"counterShiftTypesWorked\": \"<string>\",\n \"counterShiftTypesHours\": \"<string>\",\n \"counterWeekendsWorked\": \"<string>\",\n \"counterWeekendsIdle\": \"<string>\",\n \"counterMaxConsecutiveDays\": \"<string>\",\n \"sequenceDaysWorked\": \"<string>\",\n \"sequenceDaysIdle\": \"<string>\",\n \"sequenceHoursWorked\": \"<string>\",\n \"sequenceShiftTypesWorked\": \"<string>\",\n \"sequenceShiftTypesHours\": \"<string>\",\n \"sequenceWeekendsWorked\": \"<string>\",\n \"sequenceWeekendsIdle\": \"<string>\",\n \"sequenceMaxConsecutiveDays\": \"<string>\",\n \"restMinDuration\": \"<string>\",\n \"restMinConsecutive\": \"<string>\",\n \"restBeforeShift\": \"<string>\",\n \"restAfterShift\": \"<string>\",\n \"restMaxDuration\": \"<string>\",\n \"restTotalDuration\": \"<string>\",\n \"patternProhibited\": \"<string>\",\n \"patternPreferred\": \"<string>\",\n \"patternUnpreferred\": \"<string>\"\n },\n \"options\": {\n \"hardAvailability\": true,\n \"hardSkill\": true,\n \"hardBlacklist\": true,\n \"partialPlanning\": true,\n \"penaliseZeroHours\": true,\n \"useAvailabilityLocations\": true,\n \"alwaysScoreSharedSkills\": true,\n \"explanation\": {\n \"enabled\": true,\n \"filterHardConstraints\": true,\n \"onlyUnassigned\": true\n }\n },\n \"hook\": \"<string>\",\n \"label\": \"<string>\",\n \"metadata\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.solvice.io/v2/fill/solve")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"employees\": [\n {\n \"name\": \"<string>\",\n \"home\": {\n \"lat\": 123,\n \"lon\": 123\n },\n \"availability\": [\n {\n \"from\": \"2023-11-07T05:31:56Z\",\n \"to\": \"2023-11-07T05:31:56Z\",\n \"location\": {\n \"lat\": 123,\n \"lon\": 123\n }\n }\n ],\n \"preference\": [\n \"<string>\"\n ],\n \"skills\": [\n {\n \"name\": \"<string>\",\n \"expiry\": \"2022-03-10\",\n \"weight\": 123,\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n }\n }\n ],\n \"hourlyPay\": 123,\n \"efficiency\": 123,\n \"periodRules\": [\n {\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n },\n \"maxWorkingDays\": 123,\n \"minWorkingDays\": 123,\n \"minWorkingDuration\": \"<string>\",\n \"maxWorkingDuration\": \"<string>\",\n \"minRestDurationBetweenShiftsSameDay\": \"<string>\",\n \"minRestDuration\": \"<string>\",\n \"maxShiftLength\": \"<string>\",\n \"minShiftLength\": \"<string>\",\n \"latestShiftStart\": \"<string>\",\n \"earliestShiftStart\": \"<string>\",\n \"latestShiftEnd\": \"<string>\",\n \"minWeekendsIdle\": 123,\n \"maxWeekendsIdle\": 123\n }\n ],\n \"contracts\": [\n {\n \"name\": \"<string>\",\n \"max\": \"<string>\",\n \"min\": \"<string>\",\n \"maxConsecutiveWorkDays\": 123,\n \"maxShiftsDay\": 123,\n \"minRestBetweenShiftsSameDay\": 123,\n \"minRest\": \"<string>\",\n \"maxWorkingDays\": 123,\n \"maxShiftLength\": \"<string>\",\n \"minShiftLength\": \"<string>\",\n \"latestShiftStart\": \"<string>\",\n \"earliestShiftStart\": \"<string>\",\n \"latestShiftEnd\": \"<string>\"\n }\n ]\n }\n ],\n \"shifts\": [\n {\n \"name\": \"<string>\",\n \"from\": \"2023-11-07T05:31:56Z\",\n \"to\": \"2023-11-07T05:31:56Z\",\n \"min\": 123,\n \"max\": 123,\n \"tags\": [\n {\n \"name\": \"<string>\"\n }\n ],\n \"skills\": [\n {\n \"name\": \"<string>\",\n \"hard\": true,\n \"weight\": 123\n }\n ],\n \"priority\": 1,\n \"cost\": 1,\n \"rests\": [\n {\n \"tags\": [\n \"<string>\"\n ],\n \"excludes\": [\n \"<string>\"\n ],\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n },\n \"min\": \"<string>\",\n \"minConsecutive\": \"<string>\",\n \"max\": \"<string>\",\n \"frequency\": 123\n }\n ],\n \"blocklist\": [\n \"<string>\"\n ],\n \"value\": 123,\n \"employees\": [\n \"<string>\"\n ],\n \"locked\": [\n true\n ],\n \"location\": {\n \"lat\": 123,\n \"lon\": 123\n }\n }\n ],\n \"rules\": [\n {\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n },\n \"min\": 123,\n \"max\": 123,\n \"shifts\": [\n \"<string>\"\n ],\n \"then\": {}\n }\n ],\n \"rests\": [\n {\n \"tags\": [\n \"<string>\"\n ],\n \"excludes\": [\n \"<string>\"\n ],\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n },\n \"min\": \"<string>\",\n \"minConsecutive\": \"<string>\",\n \"max\": \"<string>\",\n \"frequency\": 123\n }\n ],\n \"demands\": [\n {\n \"from\": \"2023-11-07T05:31:56Z\",\n \"to\": \"2023-11-07T05:31:56Z\",\n \"skills\": [\n {\n \"name\": \"<string>\",\n \"hard\": true,\n \"weight\": 123\n }\n ],\n \"name\": \"<string>\",\n \"min\": 123,\n \"max\": 123\n }\n ],\n \"patterns\": [\n {\n \"elements\": [\n {\n \"tags\": [\n \"<string>\"\n ]\n }\n ],\n \"weight\": 123\n }\n ],\n \"fairnessBuckets\": [\n {\n \"employees\": [\n \"<string>\"\n ],\n \"shifts\": [\n \"<string>\"\n ],\n \"target\": \"<string>\",\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n }\n }\n ],\n \"requirements\": [\n {\n \"shifts\": [\n \"<string>\"\n ],\n \"skill\": \"<string>\",\n \"value\": 123\n }\n ],\n \"assignments\": [\n {\n \"shift\": \"<string>\",\n \"employee\": \"<string>\",\n \"locked\": true\n }\n ],\n \"weights\": {\n \"unassigned\": \"<string>\",\n \"maxWorkingDays\": \"<string>\",\n \"concurrent\": \"<string>\",\n \"sameDay\": \"<string>\",\n \"minRest\": \"<string>\",\n \"maxConsecutive\": \"<string>\",\n \"working\": \"<string>\",\n \"sameDayMinRest\": \"<string>\",\n \"minHours\": \"<string>\",\n \"minHoursUnassigned\": \"<string>\",\n \"maxHours\": \"<string>\",\n \"minShift\": \"<string>\",\n \"maxShift\": \"<string>\",\n \"shiftStart\": \"<string>\",\n \"latestShiftStart\": \"<string>\",\n \"shiftEnd\": \"<string>\",\n \"dayOfWeek\": \"<string>\",\n \"requirements\": \"<string>\",\n \"availability\": \"<string>\",\n \"skills\": \"<string>\",\n \"criticalSkills\": \"<string>\",\n \"locked\": \"<string>\",\n \"blacklist\": \"<string>\",\n \"pref\": \"<string>\",\n \"costs\": \"<string>\",\n \"wages\": \"<string>\",\n \"efficiency\": \"<string>\",\n \"distance\": \"<string>\",\n \"distanceAL\": \"<string>\",\n \"priority\": \"<string>\",\n \"softSkills\": \"<string>\",\n \"softSkillsLevel\": \"<string>\",\n \"fairness\": \"<string>\",\n \"counterDaysWorked\": \"<string>\",\n \"counterDaysIdle\": \"<string>\",\n \"counterHoursWorked\": \"<string>\",\n \"counterShiftTypesWorked\": \"<string>\",\n \"counterShiftTypesHours\": \"<string>\",\n \"counterWeekendsWorked\": \"<string>\",\n \"counterWeekendsIdle\": \"<string>\",\n \"counterMaxConsecutiveDays\": \"<string>\",\n \"sequenceDaysWorked\": \"<string>\",\n \"sequenceDaysIdle\": \"<string>\",\n \"sequenceHoursWorked\": \"<string>\",\n \"sequenceShiftTypesWorked\": \"<string>\",\n \"sequenceShiftTypesHours\": \"<string>\",\n \"sequenceWeekendsWorked\": \"<string>\",\n \"sequenceWeekendsIdle\": \"<string>\",\n \"sequenceMaxConsecutiveDays\": \"<string>\",\n \"restMinDuration\": \"<string>\",\n \"restMinConsecutive\": \"<string>\",\n \"restBeforeShift\": \"<string>\",\n \"restAfterShift\": \"<string>\",\n \"restMaxDuration\": \"<string>\",\n \"restTotalDuration\": \"<string>\",\n \"patternProhibited\": \"<string>\",\n \"patternPreferred\": \"<string>\",\n \"patternUnpreferred\": \"<string>\"\n },\n \"options\": {\n \"hardAvailability\": true,\n \"hardSkill\": true,\n \"hardBlacklist\": true,\n \"partialPlanning\": true,\n \"penaliseZeroHours\": true,\n \"useAvailabilityLocations\": true,\n \"alwaysScoreSharedSkills\": true,\n \"explanation\": {\n \"enabled\": true,\n \"filterHardConstraints\": true,\n \"onlyUnassigned\": true\n }\n },\n \"hook\": \"<string>\",\n \"label\": \"<string>\",\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.solvice.io/v2/fill/solve")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"employees\": [\n {\n \"name\": \"<string>\",\n \"home\": {\n \"lat\": 123,\n \"lon\": 123\n },\n \"availability\": [\n {\n \"from\": \"2023-11-07T05:31:56Z\",\n \"to\": \"2023-11-07T05:31:56Z\",\n \"location\": {\n \"lat\": 123,\n \"lon\": 123\n }\n }\n ],\n \"preference\": [\n \"<string>\"\n ],\n \"skills\": [\n {\n \"name\": \"<string>\",\n \"expiry\": \"2022-03-10\",\n \"weight\": 123,\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n }\n }\n ],\n \"hourlyPay\": 123,\n \"efficiency\": 123,\n \"periodRules\": [\n {\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n },\n \"maxWorkingDays\": 123,\n \"minWorkingDays\": 123,\n \"minWorkingDuration\": \"<string>\",\n \"maxWorkingDuration\": \"<string>\",\n \"minRestDurationBetweenShiftsSameDay\": \"<string>\",\n \"minRestDuration\": \"<string>\",\n \"maxShiftLength\": \"<string>\",\n \"minShiftLength\": \"<string>\",\n \"latestShiftStart\": \"<string>\",\n \"earliestShiftStart\": \"<string>\",\n \"latestShiftEnd\": \"<string>\",\n \"minWeekendsIdle\": 123,\n \"maxWeekendsIdle\": 123\n }\n ],\n \"contracts\": [\n {\n \"name\": \"<string>\",\n \"max\": \"<string>\",\n \"min\": \"<string>\",\n \"maxConsecutiveWorkDays\": 123,\n \"maxShiftsDay\": 123,\n \"minRestBetweenShiftsSameDay\": 123,\n \"minRest\": \"<string>\",\n \"maxWorkingDays\": 123,\n \"maxShiftLength\": \"<string>\",\n \"minShiftLength\": \"<string>\",\n \"latestShiftStart\": \"<string>\",\n \"earliestShiftStart\": \"<string>\",\n \"latestShiftEnd\": \"<string>\"\n }\n ]\n }\n ],\n \"shifts\": [\n {\n \"name\": \"<string>\",\n \"from\": \"2023-11-07T05:31:56Z\",\n \"to\": \"2023-11-07T05:31:56Z\",\n \"min\": 123,\n \"max\": 123,\n \"tags\": [\n {\n \"name\": \"<string>\"\n }\n ],\n \"skills\": [\n {\n \"name\": \"<string>\",\n \"hard\": true,\n \"weight\": 123\n }\n ],\n \"priority\": 1,\n \"cost\": 1,\n \"rests\": [\n {\n \"tags\": [\n \"<string>\"\n ],\n \"excludes\": [\n \"<string>\"\n ],\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n },\n \"min\": \"<string>\",\n \"minConsecutive\": \"<string>\",\n \"max\": \"<string>\",\n \"frequency\": 123\n }\n ],\n \"blocklist\": [\n \"<string>\"\n ],\n \"value\": 123,\n \"employees\": [\n \"<string>\"\n ],\n \"locked\": [\n true\n ],\n \"location\": {\n \"lat\": 123,\n \"lon\": 123\n }\n }\n ],\n \"rules\": [\n {\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n },\n \"min\": 123,\n \"max\": 123,\n \"shifts\": [\n \"<string>\"\n ],\n \"then\": {}\n }\n ],\n \"rests\": [\n {\n \"tags\": [\n \"<string>\"\n ],\n \"excludes\": [\n \"<string>\"\n ],\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n },\n \"min\": \"<string>\",\n \"minConsecutive\": \"<string>\",\n \"max\": \"<string>\",\n \"frequency\": 123\n }\n ],\n \"demands\": [\n {\n \"from\": \"2023-11-07T05:31:56Z\",\n \"to\": \"2023-11-07T05:31:56Z\",\n \"skills\": [\n {\n \"name\": \"<string>\",\n \"hard\": true,\n \"weight\": 123\n }\n ],\n \"name\": \"<string>\",\n \"min\": 123,\n \"max\": 123\n }\n ],\n \"patterns\": [\n {\n \"elements\": [\n {\n \"tags\": [\n \"<string>\"\n ]\n }\n ],\n \"weight\": 123\n }\n ],\n \"fairnessBuckets\": [\n {\n \"employees\": [\n \"<string>\"\n ],\n \"shifts\": [\n \"<string>\"\n ],\n \"target\": \"<string>\",\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n }\n }\n ],\n \"requirements\": [\n {\n \"shifts\": [\n \"<string>\"\n ],\n \"skill\": \"<string>\",\n \"value\": 123\n }\n ],\n \"assignments\": [\n {\n \"shift\": \"<string>\",\n \"employee\": \"<string>\",\n \"locked\": true\n }\n ],\n \"weights\": {\n \"unassigned\": \"<string>\",\n \"maxWorkingDays\": \"<string>\",\n \"concurrent\": \"<string>\",\n \"sameDay\": \"<string>\",\n \"minRest\": \"<string>\",\n \"maxConsecutive\": \"<string>\",\n \"working\": \"<string>\",\n \"sameDayMinRest\": \"<string>\",\n \"minHours\": \"<string>\",\n \"minHoursUnassigned\": \"<string>\",\n \"maxHours\": \"<string>\",\n \"minShift\": \"<string>\",\n \"maxShift\": \"<string>\",\n \"shiftStart\": \"<string>\",\n \"latestShiftStart\": \"<string>\",\n \"shiftEnd\": \"<string>\",\n \"dayOfWeek\": \"<string>\",\n \"requirements\": \"<string>\",\n \"availability\": \"<string>\",\n \"skills\": \"<string>\",\n \"criticalSkills\": \"<string>\",\n \"locked\": \"<string>\",\n \"blacklist\": \"<string>\",\n \"pref\": \"<string>\",\n \"costs\": \"<string>\",\n \"wages\": \"<string>\",\n \"efficiency\": \"<string>\",\n \"distance\": \"<string>\",\n \"distanceAL\": \"<string>\",\n \"priority\": \"<string>\",\n \"softSkills\": \"<string>\",\n \"softSkillsLevel\": \"<string>\",\n \"fairness\": \"<string>\",\n \"counterDaysWorked\": \"<string>\",\n \"counterDaysIdle\": \"<string>\",\n \"counterHoursWorked\": \"<string>\",\n \"counterShiftTypesWorked\": \"<string>\",\n \"counterShiftTypesHours\": \"<string>\",\n \"counterWeekendsWorked\": \"<string>\",\n \"counterWeekendsIdle\": \"<string>\",\n \"counterMaxConsecutiveDays\": \"<string>\",\n \"sequenceDaysWorked\": \"<string>\",\n \"sequenceDaysIdle\": \"<string>\",\n \"sequenceHoursWorked\": \"<string>\",\n \"sequenceShiftTypesWorked\": \"<string>\",\n \"sequenceShiftTypesHours\": \"<string>\",\n \"sequenceWeekendsWorked\": \"<string>\",\n \"sequenceWeekendsIdle\": \"<string>\",\n \"sequenceMaxConsecutiveDays\": \"<string>\",\n \"restMinDuration\": \"<string>\",\n \"restMinConsecutive\": \"<string>\",\n \"restBeforeShift\": \"<string>\",\n \"restAfterShift\": \"<string>\",\n \"restMaxDuration\": \"<string>\",\n \"restTotalDuration\": \"<string>\",\n \"patternProhibited\": \"<string>\",\n \"patternPreferred\": \"<string>\",\n \"patternUnpreferred\": \"<string>\"\n },\n \"options\": {\n \"hardAvailability\": true,\n \"hardSkill\": true,\n \"hardBlacklist\": true,\n \"partialPlanning\": true,\n \"penaliseZeroHours\": true,\n \"useAvailabilityLocations\": true,\n \"alwaysScoreSharedSkills\": true,\n \"explanation\": {\n \"enabled\": true,\n \"filterHardConstraints\": true,\n \"onlyUnassigned\": true\n }\n },\n \"hook\": \"<string>\",\n \"label\": \"<string>\",\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"solveDuration": 123,
"errors": [
{
"message": "<string>",
"code": 123
}
],
"warnings": [
{
"message": "<string>",
"code": 123
}
]
}Authorizations
Api Key based authentication (apikey)
Query Parameters
Body
FILL request for solving, evaluating
List of employees
1Show child attributes
Show child attributes
List of shifts that should be assigned to employees
1Show child attributes
Show child attributes
List of Rules. Rules can be Counters or Series.
Show child attributes
Show child attributes
List of Rest definitions. A rest is defined for a fixed period or a duration.
Show child attributes
Show child attributes
List of shift demands. Demands are periodic minima and maxima for a certain number of employees to be present.
Show child attributes
Show child attributes
List of shift patterns. Patterns are sequences of shifts that can be desired or prohibited.
Show child attributes
Show child attributes
Buckets or groups of employees where fairness in workload is required.
Show child attributes
Show child attributes
List of shared skill requirements. Shared skills are skill requirements that govern a group of shifts.
Show child attributes
Show child attributes
List of assignments that are pre-set. (optional)
Show child attributes
Show child attributes
Weights adjust objectives and scores.
Show child attributes
Show child attributes
Options for tuning the solver
Show child attributes
Show child attributes
Webhook endpoint to receive POST request with the id.
255^(?!.*\$\{).*$Show child attributes
Show child attributes
Response
OK
Status of a solve job
Job ID
Status of the solve.
QUEUED, SOLVING, SOLVED, ERROR "SOLVING"
Duration of the solve in seconds
List of errors
Show child attributes
Show child attributes
List of warnings
Show child attributes
Show child attributes
Was this page helpful?
curl --request POST \
--url https://api.solvice.io/v2/fill/solve \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"employees": [
{
"name": "<string>",
"home": {
"lat": 123,
"lon": 123
},
"availability": [
{
"from": "2023-11-07T05:31:56Z",
"to": "2023-11-07T05:31:56Z",
"location": {
"lat": 123,
"lon": 123
}
}
],
"preference": [
"<string>"
],
"skills": [
{
"name": "<string>",
"expiry": "2022-03-10",
"weight": 123,
"period": {
"from": "2022-03-10T12:15:50",
"to": "2022-03-10T12:15:50",
"duration": "<string>",
"period": "<string>",
"excludes": [
"2023-12-25"
]
}
}
],
"hourlyPay": 123,
"efficiency": 123,
"periodRules": [
{
"period": {
"from": "2022-03-10T12:15:50",
"to": "2022-03-10T12:15:50",
"duration": "<string>",
"period": "<string>",
"excludes": [
"2023-12-25"
]
},
"maxWorkingDays": 123,
"minWorkingDays": 123,
"minWorkingDuration": "<string>",
"maxWorkingDuration": "<string>",
"minRestDurationBetweenShiftsSameDay": "<string>",
"minRestDuration": "<string>",
"maxShiftLength": "<string>",
"minShiftLength": "<string>",
"latestShiftStart": "<string>",
"earliestShiftStart": "<string>",
"latestShiftEnd": "<string>",
"minWeekendsIdle": 123,
"maxWeekendsIdle": 123
}
],
"contracts": [
{
"name": "<string>",
"max": "<string>",
"min": "<string>",
"maxConsecutiveWorkDays": 123,
"maxShiftsDay": 123,
"minRestBetweenShiftsSameDay": 123,
"minRest": "<string>",
"maxWorkingDays": 123,
"maxShiftLength": "<string>",
"minShiftLength": "<string>",
"latestShiftStart": "<string>",
"earliestShiftStart": "<string>",
"latestShiftEnd": "<string>"
}
]
}
],
"shifts": [
{
"name": "<string>",
"from": "2023-11-07T05:31:56Z",
"to": "2023-11-07T05:31:56Z",
"min": 123,
"max": 123,
"tags": [
{
"name": "<string>"
}
],
"skills": [
{
"name": "<string>",
"hard": true,
"weight": 123
}
],
"priority": 1,
"cost": 1,
"rests": [
{
"tags": [
"<string>"
],
"excludes": [
"<string>"
],
"period": {
"from": "2022-03-10T12:15:50",
"to": "2022-03-10T12:15:50",
"duration": "<string>",
"period": "<string>",
"excludes": [
"2023-12-25"
]
},
"min": "<string>",
"minConsecutive": "<string>",
"max": "<string>",
"frequency": 123
}
],
"blocklist": [
"<string>"
],
"value": 123,
"employees": [
"<string>"
],
"locked": [
true
],
"location": {
"lat": 123,
"lon": 123
}
}
],
"rules": [
{
"period": {
"from": "2022-03-10T12:15:50",
"to": "2022-03-10T12:15:50",
"duration": "<string>",
"period": "<string>",
"excludes": [
"2023-12-25"
]
},
"min": 123,
"max": 123,
"shifts": [
"<string>"
],
"then": {}
}
],
"rests": [
{
"tags": [
"<string>"
],
"excludes": [
"<string>"
],
"period": {
"from": "2022-03-10T12:15:50",
"to": "2022-03-10T12:15:50",
"duration": "<string>",
"period": "<string>",
"excludes": [
"2023-12-25"
]
},
"min": "<string>",
"minConsecutive": "<string>",
"max": "<string>",
"frequency": 123
}
],
"demands": [
{
"from": "2023-11-07T05:31:56Z",
"to": "2023-11-07T05:31:56Z",
"skills": [
{
"name": "<string>",
"hard": true,
"weight": 123
}
],
"name": "<string>",
"min": 123,
"max": 123
}
],
"patterns": [
{
"elements": [
{
"tags": [
"<string>"
]
}
],
"weight": 123
}
],
"fairnessBuckets": [
{
"employees": [
"<string>"
],
"shifts": [
"<string>"
],
"target": "<string>",
"period": {
"from": "2022-03-10T12:15:50",
"to": "2022-03-10T12:15:50",
"duration": "<string>",
"period": "<string>",
"excludes": [
"2023-12-25"
]
}
}
],
"requirements": [
{
"shifts": [
"<string>"
],
"skill": "<string>",
"value": 123
}
],
"assignments": [
{
"shift": "<string>",
"employee": "<string>",
"locked": true
}
],
"weights": {
"unassigned": "<string>",
"maxWorkingDays": "<string>",
"concurrent": "<string>",
"sameDay": "<string>",
"minRest": "<string>",
"maxConsecutive": "<string>",
"working": "<string>",
"sameDayMinRest": "<string>",
"minHours": "<string>",
"minHoursUnassigned": "<string>",
"maxHours": "<string>",
"minShift": "<string>",
"maxShift": "<string>",
"shiftStart": "<string>",
"latestShiftStart": "<string>",
"shiftEnd": "<string>",
"dayOfWeek": "<string>",
"requirements": "<string>",
"availability": "<string>",
"skills": "<string>",
"criticalSkills": "<string>",
"locked": "<string>",
"blacklist": "<string>",
"pref": "<string>",
"costs": "<string>",
"wages": "<string>",
"efficiency": "<string>",
"distance": "<string>",
"distanceAL": "<string>",
"priority": "<string>",
"softSkills": "<string>",
"softSkillsLevel": "<string>",
"fairness": "<string>",
"counterDaysWorked": "<string>",
"counterDaysIdle": "<string>",
"counterHoursWorked": "<string>",
"counterShiftTypesWorked": "<string>",
"counterShiftTypesHours": "<string>",
"counterWeekendsWorked": "<string>",
"counterWeekendsIdle": "<string>",
"counterMaxConsecutiveDays": "<string>",
"sequenceDaysWorked": "<string>",
"sequenceDaysIdle": "<string>",
"sequenceHoursWorked": "<string>",
"sequenceShiftTypesWorked": "<string>",
"sequenceShiftTypesHours": "<string>",
"sequenceWeekendsWorked": "<string>",
"sequenceWeekendsIdle": "<string>",
"sequenceMaxConsecutiveDays": "<string>",
"restMinDuration": "<string>",
"restMinConsecutive": "<string>",
"restBeforeShift": "<string>",
"restAfterShift": "<string>",
"restMaxDuration": "<string>",
"restTotalDuration": "<string>",
"patternProhibited": "<string>",
"patternPreferred": "<string>",
"patternUnpreferred": "<string>"
},
"options": {
"hardAvailability": true,
"hardSkill": true,
"hardBlacklist": true,
"partialPlanning": true,
"penaliseZeroHours": true,
"useAvailabilityLocations": true,
"alwaysScoreSharedSkills": true,
"explanation": {
"enabled": true,
"filterHardConstraints": true,
"onlyUnassigned": true
}
},
"hook": "<string>",
"label": "<string>",
"metadata": {}
}
'import requests
url = "https://api.solvice.io/v2/fill/solve"
payload = {
"employees": [
{
"name": "<string>",
"home": {
"lat": 123,
"lon": 123
},
"availability": [
{
"from": "2023-11-07T05:31:56Z",
"to": "2023-11-07T05:31:56Z",
"location": {
"lat": 123,
"lon": 123
}
}
],
"preference": ["<string>"],
"skills": [
{
"name": "<string>",
"expiry": "2022-03-10",
"weight": 123,
"period": {
"from": "2022-03-10T12:15:50",
"to": "2022-03-10T12:15:50",
"duration": "<string>",
"period": "<string>",
"excludes": ["2023-12-25"]
}
}
],
"hourlyPay": 123,
"efficiency": 123,
"periodRules": [
{
"period": {
"from": "2022-03-10T12:15:50",
"to": "2022-03-10T12:15:50",
"duration": "<string>",
"period": "<string>",
"excludes": ["2023-12-25"]
},
"maxWorkingDays": 123,
"minWorkingDays": 123,
"minWorkingDuration": "<string>",
"maxWorkingDuration": "<string>",
"minRestDurationBetweenShiftsSameDay": "<string>",
"minRestDuration": "<string>",
"maxShiftLength": "<string>",
"minShiftLength": "<string>",
"latestShiftStart": "<string>",
"earliestShiftStart": "<string>",
"latestShiftEnd": "<string>",
"minWeekendsIdle": 123,
"maxWeekendsIdle": 123
}
],
"contracts": [
{
"name": "<string>",
"max": "<string>",
"min": "<string>",
"maxConsecutiveWorkDays": 123,
"maxShiftsDay": 123,
"minRestBetweenShiftsSameDay": 123,
"minRest": "<string>",
"maxWorkingDays": 123,
"maxShiftLength": "<string>",
"minShiftLength": "<string>",
"latestShiftStart": "<string>",
"earliestShiftStart": "<string>",
"latestShiftEnd": "<string>"
}
]
}
],
"shifts": [
{
"name": "<string>",
"from": "2023-11-07T05:31:56Z",
"to": "2023-11-07T05:31:56Z",
"min": 123,
"max": 123,
"tags": [{ "name": "<string>" }],
"skills": [
{
"name": "<string>",
"hard": True,
"weight": 123
}
],
"priority": 1,
"cost": 1,
"rests": [
{
"tags": ["<string>"],
"excludes": ["<string>"],
"period": {
"from": "2022-03-10T12:15:50",
"to": "2022-03-10T12:15:50",
"duration": "<string>",
"period": "<string>",
"excludes": ["2023-12-25"]
},
"min": "<string>",
"minConsecutive": "<string>",
"max": "<string>",
"frequency": 123
}
],
"blocklist": ["<string>"],
"value": 123,
"employees": ["<string>"],
"locked": [True],
"location": {
"lat": 123,
"lon": 123
}
}
],
"rules": [
{
"period": {
"from": "2022-03-10T12:15:50",
"to": "2022-03-10T12:15:50",
"duration": "<string>",
"period": "<string>",
"excludes": ["2023-12-25"]
},
"min": 123,
"max": 123,
"shifts": ["<string>"],
"then": {}
}
],
"rests": [
{
"tags": ["<string>"],
"excludes": ["<string>"],
"period": {
"from": "2022-03-10T12:15:50",
"to": "2022-03-10T12:15:50",
"duration": "<string>",
"period": "<string>",
"excludes": ["2023-12-25"]
},
"min": "<string>",
"minConsecutive": "<string>",
"max": "<string>",
"frequency": 123
}
],
"demands": [
{
"from": "2023-11-07T05:31:56Z",
"to": "2023-11-07T05:31:56Z",
"skills": [
{
"name": "<string>",
"hard": True,
"weight": 123
}
],
"name": "<string>",
"min": 123,
"max": 123
}
],
"patterns": [
{
"elements": [{ "tags": ["<string>"] }],
"weight": 123
}
],
"fairnessBuckets": [
{
"employees": ["<string>"],
"shifts": ["<string>"],
"target": "<string>",
"period": {
"from": "2022-03-10T12:15:50",
"to": "2022-03-10T12:15:50",
"duration": "<string>",
"period": "<string>",
"excludes": ["2023-12-25"]
}
}
],
"requirements": [
{
"shifts": ["<string>"],
"skill": "<string>",
"value": 123
}
],
"assignments": [
{
"shift": "<string>",
"employee": "<string>",
"locked": True
}
],
"weights": {
"unassigned": "<string>",
"maxWorkingDays": "<string>",
"concurrent": "<string>",
"sameDay": "<string>",
"minRest": "<string>",
"maxConsecutive": "<string>",
"working": "<string>",
"sameDayMinRest": "<string>",
"minHours": "<string>",
"minHoursUnassigned": "<string>",
"maxHours": "<string>",
"minShift": "<string>",
"maxShift": "<string>",
"shiftStart": "<string>",
"latestShiftStart": "<string>",
"shiftEnd": "<string>",
"dayOfWeek": "<string>",
"requirements": "<string>",
"availability": "<string>",
"skills": "<string>",
"criticalSkills": "<string>",
"locked": "<string>",
"blacklist": "<string>",
"pref": "<string>",
"costs": "<string>",
"wages": "<string>",
"efficiency": "<string>",
"distance": "<string>",
"distanceAL": "<string>",
"priority": "<string>",
"softSkills": "<string>",
"softSkillsLevel": "<string>",
"fairness": "<string>",
"counterDaysWorked": "<string>",
"counterDaysIdle": "<string>",
"counterHoursWorked": "<string>",
"counterShiftTypesWorked": "<string>",
"counterShiftTypesHours": "<string>",
"counterWeekendsWorked": "<string>",
"counterWeekendsIdle": "<string>",
"counterMaxConsecutiveDays": "<string>",
"sequenceDaysWorked": "<string>",
"sequenceDaysIdle": "<string>",
"sequenceHoursWorked": "<string>",
"sequenceShiftTypesWorked": "<string>",
"sequenceShiftTypesHours": "<string>",
"sequenceWeekendsWorked": "<string>",
"sequenceWeekendsIdle": "<string>",
"sequenceMaxConsecutiveDays": "<string>",
"restMinDuration": "<string>",
"restMinConsecutive": "<string>",
"restBeforeShift": "<string>",
"restAfterShift": "<string>",
"restMaxDuration": "<string>",
"restTotalDuration": "<string>",
"patternProhibited": "<string>",
"patternPreferred": "<string>",
"patternUnpreferred": "<string>"
},
"options": {
"hardAvailability": True,
"hardSkill": True,
"hardBlacklist": True,
"partialPlanning": True,
"penaliseZeroHours": True,
"useAvailabilityLocations": True,
"alwaysScoreSharedSkills": True,
"explanation": {
"enabled": True,
"filterHardConstraints": True,
"onlyUnassigned": True
}
},
"hook": "<string>",
"label": "<string>",
"metadata": {}
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
employees: [
{
name: '<string>',
home: {lat: 123, lon: 123},
availability: [
{
from: '2023-11-07T05:31:56Z',
to: '2023-11-07T05:31:56Z',
location: {lat: 123, lon: 123}
}
],
preference: ['<string>'],
skills: [
{
name: '<string>',
expiry: '2022-03-10',
weight: 123,
period: {
from: '2022-03-10T12:15:50',
to: '2022-03-10T12:15:50',
duration: '<string>',
period: '<string>',
excludes: ['2023-12-25']
}
}
],
hourlyPay: 123,
efficiency: 123,
periodRules: [
{
period: {
from: '2022-03-10T12:15:50',
to: '2022-03-10T12:15:50',
duration: '<string>',
period: '<string>',
excludes: ['2023-12-25']
},
maxWorkingDays: 123,
minWorkingDays: 123,
minWorkingDuration: '<string>',
maxWorkingDuration: '<string>',
minRestDurationBetweenShiftsSameDay: '<string>',
minRestDuration: '<string>',
maxShiftLength: '<string>',
minShiftLength: '<string>',
latestShiftStart: '<string>',
earliestShiftStart: '<string>',
latestShiftEnd: '<string>',
minWeekendsIdle: 123,
maxWeekendsIdle: 123
}
],
contracts: [
{
name: '<string>',
max: '<string>',
min: '<string>',
maxConsecutiveWorkDays: 123,
maxShiftsDay: 123,
minRestBetweenShiftsSameDay: 123,
minRest: '<string>',
maxWorkingDays: 123,
maxShiftLength: '<string>',
minShiftLength: '<string>',
latestShiftStart: '<string>',
earliestShiftStart: '<string>',
latestShiftEnd: '<string>'
}
]
}
],
shifts: [
{
name: '<string>',
from: '2023-11-07T05:31:56Z',
to: '2023-11-07T05:31:56Z',
min: 123,
max: 123,
tags: [{name: '<string>'}],
skills: [{name: '<string>', hard: true, weight: 123}],
priority: 1,
cost: 1,
rests: [
{
tags: ['<string>'],
excludes: ['<string>'],
period: {
from: '2022-03-10T12:15:50',
to: '2022-03-10T12:15:50',
duration: '<string>',
period: '<string>',
excludes: ['2023-12-25']
},
min: '<string>',
minConsecutive: '<string>',
max: '<string>',
frequency: 123
}
],
blocklist: ['<string>'],
value: 123,
employees: ['<string>'],
locked: [true],
location: {lat: 123, lon: 123}
}
],
rules: [
{
period: {
from: '2022-03-10T12:15:50',
to: '2022-03-10T12:15:50',
duration: '<string>',
period: '<string>',
excludes: ['2023-12-25']
},
min: 123,
max: 123,
shifts: ['<string>'],
then: {}
}
],
rests: [
{
tags: ['<string>'],
excludes: ['<string>'],
period: {
from: '2022-03-10T12:15:50',
to: '2022-03-10T12:15:50',
duration: '<string>',
period: '<string>',
excludes: ['2023-12-25']
},
min: '<string>',
minConsecutive: '<string>',
max: '<string>',
frequency: 123
}
],
demands: [
{
from: '2023-11-07T05:31:56Z',
to: '2023-11-07T05:31:56Z',
skills: [{name: '<string>', hard: true, weight: 123}],
name: '<string>',
min: 123,
max: 123
}
],
patterns: [{elements: [{tags: ['<string>']}], weight: 123}],
fairnessBuckets: [
{
employees: ['<string>'],
shifts: ['<string>'],
target: '<string>',
period: {
from: '2022-03-10T12:15:50',
to: '2022-03-10T12:15:50',
duration: '<string>',
period: '<string>',
excludes: ['2023-12-25']
}
}
],
requirements: [{shifts: ['<string>'], skill: '<string>', value: 123}],
assignments: [{shift: '<string>', employee: '<string>', locked: true}],
weights: {
unassigned: '<string>',
maxWorkingDays: '<string>',
concurrent: '<string>',
sameDay: '<string>',
minRest: '<string>',
maxConsecutive: '<string>',
working: '<string>',
sameDayMinRest: '<string>',
minHours: '<string>',
minHoursUnassigned: '<string>',
maxHours: '<string>',
minShift: '<string>',
maxShift: '<string>',
shiftStart: '<string>',
latestShiftStart: '<string>',
shiftEnd: '<string>',
dayOfWeek: '<string>',
requirements: '<string>',
availability: '<string>',
skills: '<string>',
criticalSkills: '<string>',
locked: '<string>',
blacklist: '<string>',
pref: '<string>',
costs: '<string>',
wages: '<string>',
efficiency: '<string>',
distance: '<string>',
distanceAL: '<string>',
priority: '<string>',
softSkills: '<string>',
softSkillsLevel: '<string>',
fairness: '<string>',
counterDaysWorked: '<string>',
counterDaysIdle: '<string>',
counterHoursWorked: '<string>',
counterShiftTypesWorked: '<string>',
counterShiftTypesHours: '<string>',
counterWeekendsWorked: '<string>',
counterWeekendsIdle: '<string>',
counterMaxConsecutiveDays: '<string>',
sequenceDaysWorked: '<string>',
sequenceDaysIdle: '<string>',
sequenceHoursWorked: '<string>',
sequenceShiftTypesWorked: '<string>',
sequenceShiftTypesHours: '<string>',
sequenceWeekendsWorked: '<string>',
sequenceWeekendsIdle: '<string>',
sequenceMaxConsecutiveDays: '<string>',
restMinDuration: '<string>',
restMinConsecutive: '<string>',
restBeforeShift: '<string>',
restAfterShift: '<string>',
restMaxDuration: '<string>',
restTotalDuration: '<string>',
patternProhibited: '<string>',
patternPreferred: '<string>',
patternUnpreferred: '<string>'
},
options: {
hardAvailability: true,
hardSkill: true,
hardBlacklist: true,
partialPlanning: true,
penaliseZeroHours: true,
useAvailabilityLocations: true,
alwaysScoreSharedSkills: true,
explanation: {enabled: true, filterHardConstraints: true, onlyUnassigned: true}
},
hook: '<string>',
label: '<string>',
metadata: {}
})
};
fetch('https://api.solvice.io/v2/fill/solve', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.solvice.io/v2/fill/solve",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'employees' => [
[
'name' => '<string>',
'home' => [
'lat' => 123,
'lon' => 123
],
'availability' => [
[
'from' => '2023-11-07T05:31:56Z',
'to' => '2023-11-07T05:31:56Z',
'location' => [
'lat' => 123,
'lon' => 123
]
]
],
'preference' => [
'<string>'
],
'skills' => [
[
'name' => '<string>',
'expiry' => '2022-03-10',
'weight' => 123,
'period' => [
'from' => '2022-03-10T12:15:50',
'to' => '2022-03-10T12:15:50',
'duration' => '<string>',
'period' => '<string>',
'excludes' => [
'2023-12-25'
]
]
]
],
'hourlyPay' => 123,
'efficiency' => 123,
'periodRules' => [
[
'period' => [
'from' => '2022-03-10T12:15:50',
'to' => '2022-03-10T12:15:50',
'duration' => '<string>',
'period' => '<string>',
'excludes' => [
'2023-12-25'
]
],
'maxWorkingDays' => 123,
'minWorkingDays' => 123,
'minWorkingDuration' => '<string>',
'maxWorkingDuration' => '<string>',
'minRestDurationBetweenShiftsSameDay' => '<string>',
'minRestDuration' => '<string>',
'maxShiftLength' => '<string>',
'minShiftLength' => '<string>',
'latestShiftStart' => '<string>',
'earliestShiftStart' => '<string>',
'latestShiftEnd' => '<string>',
'minWeekendsIdle' => 123,
'maxWeekendsIdle' => 123
]
],
'contracts' => [
[
'name' => '<string>',
'max' => '<string>',
'min' => '<string>',
'maxConsecutiveWorkDays' => 123,
'maxShiftsDay' => 123,
'minRestBetweenShiftsSameDay' => 123,
'minRest' => '<string>',
'maxWorkingDays' => 123,
'maxShiftLength' => '<string>',
'minShiftLength' => '<string>',
'latestShiftStart' => '<string>',
'earliestShiftStart' => '<string>',
'latestShiftEnd' => '<string>'
]
]
]
],
'shifts' => [
[
'name' => '<string>',
'from' => '2023-11-07T05:31:56Z',
'to' => '2023-11-07T05:31:56Z',
'min' => 123,
'max' => 123,
'tags' => [
[
'name' => '<string>'
]
],
'skills' => [
[
'name' => '<string>',
'hard' => true,
'weight' => 123
]
],
'priority' => 1,
'cost' => 1,
'rests' => [
[
'tags' => [
'<string>'
],
'excludes' => [
'<string>'
],
'period' => [
'from' => '2022-03-10T12:15:50',
'to' => '2022-03-10T12:15:50',
'duration' => '<string>',
'period' => '<string>',
'excludes' => [
'2023-12-25'
]
],
'min' => '<string>',
'minConsecutive' => '<string>',
'max' => '<string>',
'frequency' => 123
]
],
'blocklist' => [
'<string>'
],
'value' => 123,
'employees' => [
'<string>'
],
'locked' => [
true
],
'location' => [
'lat' => 123,
'lon' => 123
]
]
],
'rules' => [
[
'period' => [
'from' => '2022-03-10T12:15:50',
'to' => '2022-03-10T12:15:50',
'duration' => '<string>',
'period' => '<string>',
'excludes' => [
'2023-12-25'
]
],
'min' => 123,
'max' => 123,
'shifts' => [
'<string>'
],
'then' => [
]
]
],
'rests' => [
[
'tags' => [
'<string>'
],
'excludes' => [
'<string>'
],
'period' => [
'from' => '2022-03-10T12:15:50',
'to' => '2022-03-10T12:15:50',
'duration' => '<string>',
'period' => '<string>',
'excludes' => [
'2023-12-25'
]
],
'min' => '<string>',
'minConsecutive' => '<string>',
'max' => '<string>',
'frequency' => 123
]
],
'demands' => [
[
'from' => '2023-11-07T05:31:56Z',
'to' => '2023-11-07T05:31:56Z',
'skills' => [
[
'name' => '<string>',
'hard' => true,
'weight' => 123
]
],
'name' => '<string>',
'min' => 123,
'max' => 123
]
],
'patterns' => [
[
'elements' => [
[
'tags' => [
'<string>'
]
]
],
'weight' => 123
]
],
'fairnessBuckets' => [
[
'employees' => [
'<string>'
],
'shifts' => [
'<string>'
],
'target' => '<string>',
'period' => [
'from' => '2022-03-10T12:15:50',
'to' => '2022-03-10T12:15:50',
'duration' => '<string>',
'period' => '<string>',
'excludes' => [
'2023-12-25'
]
]
]
],
'requirements' => [
[
'shifts' => [
'<string>'
],
'skill' => '<string>',
'value' => 123
]
],
'assignments' => [
[
'shift' => '<string>',
'employee' => '<string>',
'locked' => true
]
],
'weights' => [
'unassigned' => '<string>',
'maxWorkingDays' => '<string>',
'concurrent' => '<string>',
'sameDay' => '<string>',
'minRest' => '<string>',
'maxConsecutive' => '<string>',
'working' => '<string>',
'sameDayMinRest' => '<string>',
'minHours' => '<string>',
'minHoursUnassigned' => '<string>',
'maxHours' => '<string>',
'minShift' => '<string>',
'maxShift' => '<string>',
'shiftStart' => '<string>',
'latestShiftStart' => '<string>',
'shiftEnd' => '<string>',
'dayOfWeek' => '<string>',
'requirements' => '<string>',
'availability' => '<string>',
'skills' => '<string>',
'criticalSkills' => '<string>',
'locked' => '<string>',
'blacklist' => '<string>',
'pref' => '<string>',
'costs' => '<string>',
'wages' => '<string>',
'efficiency' => '<string>',
'distance' => '<string>',
'distanceAL' => '<string>',
'priority' => '<string>',
'softSkills' => '<string>',
'softSkillsLevel' => '<string>',
'fairness' => '<string>',
'counterDaysWorked' => '<string>',
'counterDaysIdle' => '<string>',
'counterHoursWorked' => '<string>',
'counterShiftTypesWorked' => '<string>',
'counterShiftTypesHours' => '<string>',
'counterWeekendsWorked' => '<string>',
'counterWeekendsIdle' => '<string>',
'counterMaxConsecutiveDays' => '<string>',
'sequenceDaysWorked' => '<string>',
'sequenceDaysIdle' => '<string>',
'sequenceHoursWorked' => '<string>',
'sequenceShiftTypesWorked' => '<string>',
'sequenceShiftTypesHours' => '<string>',
'sequenceWeekendsWorked' => '<string>',
'sequenceWeekendsIdle' => '<string>',
'sequenceMaxConsecutiveDays' => '<string>',
'restMinDuration' => '<string>',
'restMinConsecutive' => '<string>',
'restBeforeShift' => '<string>',
'restAfterShift' => '<string>',
'restMaxDuration' => '<string>',
'restTotalDuration' => '<string>',
'patternProhibited' => '<string>',
'patternPreferred' => '<string>',
'patternUnpreferred' => '<string>'
],
'options' => [
'hardAvailability' => true,
'hardSkill' => true,
'hardBlacklist' => true,
'partialPlanning' => true,
'penaliseZeroHours' => true,
'useAvailabilityLocations' => true,
'alwaysScoreSharedSkills' => true,
'explanation' => [
'enabled' => true,
'filterHardConstraints' => true,
'onlyUnassigned' => true
]
],
'hook' => '<string>',
'label' => '<string>',
'metadata' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.solvice.io/v2/fill/solve"
payload := strings.NewReader("{\n \"employees\": [\n {\n \"name\": \"<string>\",\n \"home\": {\n \"lat\": 123,\n \"lon\": 123\n },\n \"availability\": [\n {\n \"from\": \"2023-11-07T05:31:56Z\",\n \"to\": \"2023-11-07T05:31:56Z\",\n \"location\": {\n \"lat\": 123,\n \"lon\": 123\n }\n }\n ],\n \"preference\": [\n \"<string>\"\n ],\n \"skills\": [\n {\n \"name\": \"<string>\",\n \"expiry\": \"2022-03-10\",\n \"weight\": 123,\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n }\n }\n ],\n \"hourlyPay\": 123,\n \"efficiency\": 123,\n \"periodRules\": [\n {\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n },\n \"maxWorkingDays\": 123,\n \"minWorkingDays\": 123,\n \"minWorkingDuration\": \"<string>\",\n \"maxWorkingDuration\": \"<string>\",\n \"minRestDurationBetweenShiftsSameDay\": \"<string>\",\n \"minRestDuration\": \"<string>\",\n \"maxShiftLength\": \"<string>\",\n \"minShiftLength\": \"<string>\",\n \"latestShiftStart\": \"<string>\",\n \"earliestShiftStart\": \"<string>\",\n \"latestShiftEnd\": \"<string>\",\n \"minWeekendsIdle\": 123,\n \"maxWeekendsIdle\": 123\n }\n ],\n \"contracts\": [\n {\n \"name\": \"<string>\",\n \"max\": \"<string>\",\n \"min\": \"<string>\",\n \"maxConsecutiveWorkDays\": 123,\n \"maxShiftsDay\": 123,\n \"minRestBetweenShiftsSameDay\": 123,\n \"minRest\": \"<string>\",\n \"maxWorkingDays\": 123,\n \"maxShiftLength\": \"<string>\",\n \"minShiftLength\": \"<string>\",\n \"latestShiftStart\": \"<string>\",\n \"earliestShiftStart\": \"<string>\",\n \"latestShiftEnd\": \"<string>\"\n }\n ]\n }\n ],\n \"shifts\": [\n {\n \"name\": \"<string>\",\n \"from\": \"2023-11-07T05:31:56Z\",\n \"to\": \"2023-11-07T05:31:56Z\",\n \"min\": 123,\n \"max\": 123,\n \"tags\": [\n {\n \"name\": \"<string>\"\n }\n ],\n \"skills\": [\n {\n \"name\": \"<string>\",\n \"hard\": true,\n \"weight\": 123\n }\n ],\n \"priority\": 1,\n \"cost\": 1,\n \"rests\": [\n {\n \"tags\": [\n \"<string>\"\n ],\n \"excludes\": [\n \"<string>\"\n ],\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n },\n \"min\": \"<string>\",\n \"minConsecutive\": \"<string>\",\n \"max\": \"<string>\",\n \"frequency\": 123\n }\n ],\n \"blocklist\": [\n \"<string>\"\n ],\n \"value\": 123,\n \"employees\": [\n \"<string>\"\n ],\n \"locked\": [\n true\n ],\n \"location\": {\n \"lat\": 123,\n \"lon\": 123\n }\n }\n ],\n \"rules\": [\n {\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n },\n \"min\": 123,\n \"max\": 123,\n \"shifts\": [\n \"<string>\"\n ],\n \"then\": {}\n }\n ],\n \"rests\": [\n {\n \"tags\": [\n \"<string>\"\n ],\n \"excludes\": [\n \"<string>\"\n ],\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n },\n \"min\": \"<string>\",\n \"minConsecutive\": \"<string>\",\n \"max\": \"<string>\",\n \"frequency\": 123\n }\n ],\n \"demands\": [\n {\n \"from\": \"2023-11-07T05:31:56Z\",\n \"to\": \"2023-11-07T05:31:56Z\",\n \"skills\": [\n {\n \"name\": \"<string>\",\n \"hard\": true,\n \"weight\": 123\n }\n ],\n \"name\": \"<string>\",\n \"min\": 123,\n \"max\": 123\n }\n ],\n \"patterns\": [\n {\n \"elements\": [\n {\n \"tags\": [\n \"<string>\"\n ]\n }\n ],\n \"weight\": 123\n }\n ],\n \"fairnessBuckets\": [\n {\n \"employees\": [\n \"<string>\"\n ],\n \"shifts\": [\n \"<string>\"\n ],\n \"target\": \"<string>\",\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n }\n }\n ],\n \"requirements\": [\n {\n \"shifts\": [\n \"<string>\"\n ],\n \"skill\": \"<string>\",\n \"value\": 123\n }\n ],\n \"assignments\": [\n {\n \"shift\": \"<string>\",\n \"employee\": \"<string>\",\n \"locked\": true\n }\n ],\n \"weights\": {\n \"unassigned\": \"<string>\",\n \"maxWorkingDays\": \"<string>\",\n \"concurrent\": \"<string>\",\n \"sameDay\": \"<string>\",\n \"minRest\": \"<string>\",\n \"maxConsecutive\": \"<string>\",\n \"working\": \"<string>\",\n \"sameDayMinRest\": \"<string>\",\n \"minHours\": \"<string>\",\n \"minHoursUnassigned\": \"<string>\",\n \"maxHours\": \"<string>\",\n \"minShift\": \"<string>\",\n \"maxShift\": \"<string>\",\n \"shiftStart\": \"<string>\",\n \"latestShiftStart\": \"<string>\",\n \"shiftEnd\": \"<string>\",\n \"dayOfWeek\": \"<string>\",\n \"requirements\": \"<string>\",\n \"availability\": \"<string>\",\n \"skills\": \"<string>\",\n \"criticalSkills\": \"<string>\",\n \"locked\": \"<string>\",\n \"blacklist\": \"<string>\",\n \"pref\": \"<string>\",\n \"costs\": \"<string>\",\n \"wages\": \"<string>\",\n \"efficiency\": \"<string>\",\n \"distance\": \"<string>\",\n \"distanceAL\": \"<string>\",\n \"priority\": \"<string>\",\n \"softSkills\": \"<string>\",\n \"softSkillsLevel\": \"<string>\",\n \"fairness\": \"<string>\",\n \"counterDaysWorked\": \"<string>\",\n \"counterDaysIdle\": \"<string>\",\n \"counterHoursWorked\": \"<string>\",\n \"counterShiftTypesWorked\": \"<string>\",\n \"counterShiftTypesHours\": \"<string>\",\n \"counterWeekendsWorked\": \"<string>\",\n \"counterWeekendsIdle\": \"<string>\",\n \"counterMaxConsecutiveDays\": \"<string>\",\n \"sequenceDaysWorked\": \"<string>\",\n \"sequenceDaysIdle\": \"<string>\",\n \"sequenceHoursWorked\": \"<string>\",\n \"sequenceShiftTypesWorked\": \"<string>\",\n \"sequenceShiftTypesHours\": \"<string>\",\n \"sequenceWeekendsWorked\": \"<string>\",\n \"sequenceWeekendsIdle\": \"<string>\",\n \"sequenceMaxConsecutiveDays\": \"<string>\",\n \"restMinDuration\": \"<string>\",\n \"restMinConsecutive\": \"<string>\",\n \"restBeforeShift\": \"<string>\",\n \"restAfterShift\": \"<string>\",\n \"restMaxDuration\": \"<string>\",\n \"restTotalDuration\": \"<string>\",\n \"patternProhibited\": \"<string>\",\n \"patternPreferred\": \"<string>\",\n \"patternUnpreferred\": \"<string>\"\n },\n \"options\": {\n \"hardAvailability\": true,\n \"hardSkill\": true,\n \"hardBlacklist\": true,\n \"partialPlanning\": true,\n \"penaliseZeroHours\": true,\n \"useAvailabilityLocations\": true,\n \"alwaysScoreSharedSkills\": true,\n \"explanation\": {\n \"enabled\": true,\n \"filterHardConstraints\": true,\n \"onlyUnassigned\": true\n }\n },\n \"hook\": \"<string>\",\n \"label\": \"<string>\",\n \"metadata\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.solvice.io/v2/fill/solve")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"employees\": [\n {\n \"name\": \"<string>\",\n \"home\": {\n \"lat\": 123,\n \"lon\": 123\n },\n \"availability\": [\n {\n \"from\": \"2023-11-07T05:31:56Z\",\n \"to\": \"2023-11-07T05:31:56Z\",\n \"location\": {\n \"lat\": 123,\n \"lon\": 123\n }\n }\n ],\n \"preference\": [\n \"<string>\"\n ],\n \"skills\": [\n {\n \"name\": \"<string>\",\n \"expiry\": \"2022-03-10\",\n \"weight\": 123,\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n }\n }\n ],\n \"hourlyPay\": 123,\n \"efficiency\": 123,\n \"periodRules\": [\n {\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n },\n \"maxWorkingDays\": 123,\n \"minWorkingDays\": 123,\n \"minWorkingDuration\": \"<string>\",\n \"maxWorkingDuration\": \"<string>\",\n \"minRestDurationBetweenShiftsSameDay\": \"<string>\",\n \"minRestDuration\": \"<string>\",\n \"maxShiftLength\": \"<string>\",\n \"minShiftLength\": \"<string>\",\n \"latestShiftStart\": \"<string>\",\n \"earliestShiftStart\": \"<string>\",\n \"latestShiftEnd\": \"<string>\",\n \"minWeekendsIdle\": 123,\n \"maxWeekendsIdle\": 123\n }\n ],\n \"contracts\": [\n {\n \"name\": \"<string>\",\n \"max\": \"<string>\",\n \"min\": \"<string>\",\n \"maxConsecutiveWorkDays\": 123,\n \"maxShiftsDay\": 123,\n \"minRestBetweenShiftsSameDay\": 123,\n \"minRest\": \"<string>\",\n \"maxWorkingDays\": 123,\n \"maxShiftLength\": \"<string>\",\n \"minShiftLength\": \"<string>\",\n \"latestShiftStart\": \"<string>\",\n \"earliestShiftStart\": \"<string>\",\n \"latestShiftEnd\": \"<string>\"\n }\n ]\n }\n ],\n \"shifts\": [\n {\n \"name\": \"<string>\",\n \"from\": \"2023-11-07T05:31:56Z\",\n \"to\": \"2023-11-07T05:31:56Z\",\n \"min\": 123,\n \"max\": 123,\n \"tags\": [\n {\n \"name\": \"<string>\"\n }\n ],\n \"skills\": [\n {\n \"name\": \"<string>\",\n \"hard\": true,\n \"weight\": 123\n }\n ],\n \"priority\": 1,\n \"cost\": 1,\n \"rests\": [\n {\n \"tags\": [\n \"<string>\"\n ],\n \"excludes\": [\n \"<string>\"\n ],\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n },\n \"min\": \"<string>\",\n \"minConsecutive\": \"<string>\",\n \"max\": \"<string>\",\n \"frequency\": 123\n }\n ],\n \"blocklist\": [\n \"<string>\"\n ],\n \"value\": 123,\n \"employees\": [\n \"<string>\"\n ],\n \"locked\": [\n true\n ],\n \"location\": {\n \"lat\": 123,\n \"lon\": 123\n }\n }\n ],\n \"rules\": [\n {\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n },\n \"min\": 123,\n \"max\": 123,\n \"shifts\": [\n \"<string>\"\n ],\n \"then\": {}\n }\n ],\n \"rests\": [\n {\n \"tags\": [\n \"<string>\"\n ],\n \"excludes\": [\n \"<string>\"\n ],\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n },\n \"min\": \"<string>\",\n \"minConsecutive\": \"<string>\",\n \"max\": \"<string>\",\n \"frequency\": 123\n }\n ],\n \"demands\": [\n {\n \"from\": \"2023-11-07T05:31:56Z\",\n \"to\": \"2023-11-07T05:31:56Z\",\n \"skills\": [\n {\n \"name\": \"<string>\",\n \"hard\": true,\n \"weight\": 123\n }\n ],\n \"name\": \"<string>\",\n \"min\": 123,\n \"max\": 123\n }\n ],\n \"patterns\": [\n {\n \"elements\": [\n {\n \"tags\": [\n \"<string>\"\n ]\n }\n ],\n \"weight\": 123\n }\n ],\n \"fairnessBuckets\": [\n {\n \"employees\": [\n \"<string>\"\n ],\n \"shifts\": [\n \"<string>\"\n ],\n \"target\": \"<string>\",\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n }\n }\n ],\n \"requirements\": [\n {\n \"shifts\": [\n \"<string>\"\n ],\n \"skill\": \"<string>\",\n \"value\": 123\n }\n ],\n \"assignments\": [\n {\n \"shift\": \"<string>\",\n \"employee\": \"<string>\",\n \"locked\": true\n }\n ],\n \"weights\": {\n \"unassigned\": \"<string>\",\n \"maxWorkingDays\": \"<string>\",\n \"concurrent\": \"<string>\",\n \"sameDay\": \"<string>\",\n \"minRest\": \"<string>\",\n \"maxConsecutive\": \"<string>\",\n \"working\": \"<string>\",\n \"sameDayMinRest\": \"<string>\",\n \"minHours\": \"<string>\",\n \"minHoursUnassigned\": \"<string>\",\n \"maxHours\": \"<string>\",\n \"minShift\": \"<string>\",\n \"maxShift\": \"<string>\",\n \"shiftStart\": \"<string>\",\n \"latestShiftStart\": \"<string>\",\n \"shiftEnd\": \"<string>\",\n \"dayOfWeek\": \"<string>\",\n \"requirements\": \"<string>\",\n \"availability\": \"<string>\",\n \"skills\": \"<string>\",\n \"criticalSkills\": \"<string>\",\n \"locked\": \"<string>\",\n \"blacklist\": \"<string>\",\n \"pref\": \"<string>\",\n \"costs\": \"<string>\",\n \"wages\": \"<string>\",\n \"efficiency\": \"<string>\",\n \"distance\": \"<string>\",\n \"distanceAL\": \"<string>\",\n \"priority\": \"<string>\",\n \"softSkills\": \"<string>\",\n \"softSkillsLevel\": \"<string>\",\n \"fairness\": \"<string>\",\n \"counterDaysWorked\": \"<string>\",\n \"counterDaysIdle\": \"<string>\",\n \"counterHoursWorked\": \"<string>\",\n \"counterShiftTypesWorked\": \"<string>\",\n \"counterShiftTypesHours\": \"<string>\",\n \"counterWeekendsWorked\": \"<string>\",\n \"counterWeekendsIdle\": \"<string>\",\n \"counterMaxConsecutiveDays\": \"<string>\",\n \"sequenceDaysWorked\": \"<string>\",\n \"sequenceDaysIdle\": \"<string>\",\n \"sequenceHoursWorked\": \"<string>\",\n \"sequenceShiftTypesWorked\": \"<string>\",\n \"sequenceShiftTypesHours\": \"<string>\",\n \"sequenceWeekendsWorked\": \"<string>\",\n \"sequenceWeekendsIdle\": \"<string>\",\n \"sequenceMaxConsecutiveDays\": \"<string>\",\n \"restMinDuration\": \"<string>\",\n \"restMinConsecutive\": \"<string>\",\n \"restBeforeShift\": \"<string>\",\n \"restAfterShift\": \"<string>\",\n \"restMaxDuration\": \"<string>\",\n \"restTotalDuration\": \"<string>\",\n \"patternProhibited\": \"<string>\",\n \"patternPreferred\": \"<string>\",\n \"patternUnpreferred\": \"<string>\"\n },\n \"options\": {\n \"hardAvailability\": true,\n \"hardSkill\": true,\n \"hardBlacklist\": true,\n \"partialPlanning\": true,\n \"penaliseZeroHours\": true,\n \"useAvailabilityLocations\": true,\n \"alwaysScoreSharedSkills\": true,\n \"explanation\": {\n \"enabled\": true,\n \"filterHardConstraints\": true,\n \"onlyUnassigned\": true\n }\n },\n \"hook\": \"<string>\",\n \"label\": \"<string>\",\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.solvice.io/v2/fill/solve")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"employees\": [\n {\n \"name\": \"<string>\",\n \"home\": {\n \"lat\": 123,\n \"lon\": 123\n },\n \"availability\": [\n {\n \"from\": \"2023-11-07T05:31:56Z\",\n \"to\": \"2023-11-07T05:31:56Z\",\n \"location\": {\n \"lat\": 123,\n \"lon\": 123\n }\n }\n ],\n \"preference\": [\n \"<string>\"\n ],\n \"skills\": [\n {\n \"name\": \"<string>\",\n \"expiry\": \"2022-03-10\",\n \"weight\": 123,\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n }\n }\n ],\n \"hourlyPay\": 123,\n \"efficiency\": 123,\n \"periodRules\": [\n {\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n },\n \"maxWorkingDays\": 123,\n \"minWorkingDays\": 123,\n \"minWorkingDuration\": \"<string>\",\n \"maxWorkingDuration\": \"<string>\",\n \"minRestDurationBetweenShiftsSameDay\": \"<string>\",\n \"minRestDuration\": \"<string>\",\n \"maxShiftLength\": \"<string>\",\n \"minShiftLength\": \"<string>\",\n \"latestShiftStart\": \"<string>\",\n \"earliestShiftStart\": \"<string>\",\n \"latestShiftEnd\": \"<string>\",\n \"minWeekendsIdle\": 123,\n \"maxWeekendsIdle\": 123\n }\n ],\n \"contracts\": [\n {\n \"name\": \"<string>\",\n \"max\": \"<string>\",\n \"min\": \"<string>\",\n \"maxConsecutiveWorkDays\": 123,\n \"maxShiftsDay\": 123,\n \"minRestBetweenShiftsSameDay\": 123,\n \"minRest\": \"<string>\",\n \"maxWorkingDays\": 123,\n \"maxShiftLength\": \"<string>\",\n \"minShiftLength\": \"<string>\",\n \"latestShiftStart\": \"<string>\",\n \"earliestShiftStart\": \"<string>\",\n \"latestShiftEnd\": \"<string>\"\n }\n ]\n }\n ],\n \"shifts\": [\n {\n \"name\": \"<string>\",\n \"from\": \"2023-11-07T05:31:56Z\",\n \"to\": \"2023-11-07T05:31:56Z\",\n \"min\": 123,\n \"max\": 123,\n \"tags\": [\n {\n \"name\": \"<string>\"\n }\n ],\n \"skills\": [\n {\n \"name\": \"<string>\",\n \"hard\": true,\n \"weight\": 123\n }\n ],\n \"priority\": 1,\n \"cost\": 1,\n \"rests\": [\n {\n \"tags\": [\n \"<string>\"\n ],\n \"excludes\": [\n \"<string>\"\n ],\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n },\n \"min\": \"<string>\",\n \"minConsecutive\": \"<string>\",\n \"max\": \"<string>\",\n \"frequency\": 123\n }\n ],\n \"blocklist\": [\n \"<string>\"\n ],\n \"value\": 123,\n \"employees\": [\n \"<string>\"\n ],\n \"locked\": [\n true\n ],\n \"location\": {\n \"lat\": 123,\n \"lon\": 123\n }\n }\n ],\n \"rules\": [\n {\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n },\n \"min\": 123,\n \"max\": 123,\n \"shifts\": [\n \"<string>\"\n ],\n \"then\": {}\n }\n ],\n \"rests\": [\n {\n \"tags\": [\n \"<string>\"\n ],\n \"excludes\": [\n \"<string>\"\n ],\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n },\n \"min\": \"<string>\",\n \"minConsecutive\": \"<string>\",\n \"max\": \"<string>\",\n \"frequency\": 123\n }\n ],\n \"demands\": [\n {\n \"from\": \"2023-11-07T05:31:56Z\",\n \"to\": \"2023-11-07T05:31:56Z\",\n \"skills\": [\n {\n \"name\": \"<string>\",\n \"hard\": true,\n \"weight\": 123\n }\n ],\n \"name\": \"<string>\",\n \"min\": 123,\n \"max\": 123\n }\n ],\n \"patterns\": [\n {\n \"elements\": [\n {\n \"tags\": [\n \"<string>\"\n ]\n }\n ],\n \"weight\": 123\n }\n ],\n \"fairnessBuckets\": [\n {\n \"employees\": [\n \"<string>\"\n ],\n \"shifts\": [\n \"<string>\"\n ],\n \"target\": \"<string>\",\n \"period\": {\n \"from\": \"2022-03-10T12:15:50\",\n \"to\": \"2022-03-10T12:15:50\",\n \"duration\": \"<string>\",\n \"period\": \"<string>\",\n \"excludes\": [\n \"2023-12-25\"\n ]\n }\n }\n ],\n \"requirements\": [\n {\n \"shifts\": [\n \"<string>\"\n ],\n \"skill\": \"<string>\",\n \"value\": 123\n }\n ],\n \"assignments\": [\n {\n \"shift\": \"<string>\",\n \"employee\": \"<string>\",\n \"locked\": true\n }\n ],\n \"weights\": {\n \"unassigned\": \"<string>\",\n \"maxWorkingDays\": \"<string>\",\n \"concurrent\": \"<string>\",\n \"sameDay\": \"<string>\",\n \"minRest\": \"<string>\",\n \"maxConsecutive\": \"<string>\",\n \"working\": \"<string>\",\n \"sameDayMinRest\": \"<string>\",\n \"minHours\": \"<string>\",\n \"minHoursUnassigned\": \"<string>\",\n \"maxHours\": \"<string>\",\n \"minShift\": \"<string>\",\n \"maxShift\": \"<string>\",\n \"shiftStart\": \"<string>\",\n \"latestShiftStart\": \"<string>\",\n \"shiftEnd\": \"<string>\",\n \"dayOfWeek\": \"<string>\",\n \"requirements\": \"<string>\",\n \"availability\": \"<string>\",\n \"skills\": \"<string>\",\n \"criticalSkills\": \"<string>\",\n \"locked\": \"<string>\",\n \"blacklist\": \"<string>\",\n \"pref\": \"<string>\",\n \"costs\": \"<string>\",\n \"wages\": \"<string>\",\n \"efficiency\": \"<string>\",\n \"distance\": \"<string>\",\n \"distanceAL\": \"<string>\",\n \"priority\": \"<string>\",\n \"softSkills\": \"<string>\",\n \"softSkillsLevel\": \"<string>\",\n \"fairness\": \"<string>\",\n \"counterDaysWorked\": \"<string>\",\n \"counterDaysIdle\": \"<string>\",\n \"counterHoursWorked\": \"<string>\",\n \"counterShiftTypesWorked\": \"<string>\",\n \"counterShiftTypesHours\": \"<string>\",\n \"counterWeekendsWorked\": \"<string>\",\n \"counterWeekendsIdle\": \"<string>\",\n \"counterMaxConsecutiveDays\": \"<string>\",\n \"sequenceDaysWorked\": \"<string>\",\n \"sequenceDaysIdle\": \"<string>\",\n \"sequenceHoursWorked\": \"<string>\",\n \"sequenceShiftTypesWorked\": \"<string>\",\n \"sequenceShiftTypesHours\": \"<string>\",\n \"sequenceWeekendsWorked\": \"<string>\",\n \"sequenceWeekendsIdle\": \"<string>\",\n \"sequenceMaxConsecutiveDays\": \"<string>\",\n \"restMinDuration\": \"<string>\",\n \"restMinConsecutive\": \"<string>\",\n \"restBeforeShift\": \"<string>\",\n \"restAfterShift\": \"<string>\",\n \"restMaxDuration\": \"<string>\",\n \"restTotalDuration\": \"<string>\",\n \"patternProhibited\": \"<string>\",\n \"patternPreferred\": \"<string>\",\n \"patternUnpreferred\": \"<string>\"\n },\n \"options\": {\n \"hardAvailability\": true,\n \"hardSkill\": true,\n \"hardBlacklist\": true,\n \"partialPlanning\": true,\n \"penaliseZeroHours\": true,\n \"useAvailabilityLocations\": true,\n \"alwaysScoreSharedSkills\": true,\n \"explanation\": {\n \"enabled\": true,\n \"filterHardConstraints\": true,\n \"onlyUnassigned\": true\n }\n },\n \"hook\": \"<string>\",\n \"label\": \"<string>\",\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"solveDuration": 123,
"errors": [
{
"message": "<string>",
"code": 123
}
],
"warnings": [
{
"message": "<string>",
"code": 123
}
]
}