{"templateId":"quinyx-soap-operation","sharedDataIds":{"sidebar":"sidebar-api/v1/sidebars.yaml"},"props":{"op":{"name":"wsdlUpdateEmployeeSkills","soapAction":"uri:FlexForce/wsdlUpdateEmployeeSkills","style":"rpc","inputMessage":"wsdlUpdateEmployeeSkillsRequest","outputMessage":"wsdlUpdateEmployeeSkillsResponse","inputParts":{"apiKey":"xsd:string","skills":"complexType:UpdateEmployeeSkills"},"outputParts":{"return":"complexType:UpdateEmployeeSkills"},"service":"FlexForce","port":"FlexForcePort","description":"Add, update, or overwrite job skills on one or more employees.","deprecated":false,"inputPartDescriptions":{"apiKey":"API key of the unit.","skills":"Array of `UpdateEmployeeSkill` records — one per employee being updated."},"outputPartDescriptions":{"return":"Array of `UpdateEmployeeSkill` records reflecting the saved state."},"inputPartMeta":{"apiKey":{"required":true},"skills":{"required":false}},"outputPartMeta":{}},"types":{"UpdateEmployeeSkills":{"kind":"array","elements":[],"arrayItemType":"tns:UpdateEmployeeSkill"},"UpdateEmployeeSkill":{"kind":"object","elements":[{"name":"persId","type":"xsd:int","minOccurs":"1","maxOccurs":"1","required":true},{"name":"badgeNo","type":"xsd:string","minOccurs":"0","maxOccurs":"1","required":false},{"name":"addSkills","type":"xsd:int","minOccurs":"0","maxOccurs":"1","required":false},{"name":"jobSkills","type":"tns:JobSkills","minOccurs":"0","maxOccurs":"1","required":false},{"name":"validationErrors","type":"tns:ArrayOfString","minOccurs":"0","maxOccurs":"1","required":false}],"arrayItemType":null},"JobSkills":{"kind":"array","elements":[],"arrayItemType":"tns:JobSkill"},"JobSkill":{"kind":"object","elements":[{"name":"skillId","type":"xsd:int","minOccurs":"0","maxOccurs":"1","required":false},{"name":"extSkillId","type":"xsd:string","minOccurs":"0","maxOccurs":"1","required":false},{"name":"skillExpires","type":"xsd:int","minOccurs":"1","maxOccurs":"1","required":true,"values":[{"value":0,"description":"Skill never expires"},{"value":1,"description":"Expiring date is set"}]},{"name":"skillExpiringDate","type":"xsd:dateTime","minOccurs":"1","maxOccurs":"1","required":true,"format":"YYYY-MM-DD"}],"arrayItemType":null},"ArrayOfString":{"kind":"array","elements":[],"arrayItemType":"xsd:string"}},"samples":[{"id":"curl","label":"curl","lang":"bash","source":"curl -X POST 'https://api.quinyx.com/FlexForceWebServices.php' \\\n  -H 'Content-Type: text/xml; charset=utf-8' \\\n  -H 'SOAPAction: \"uri:FlexForce/wsdlUpdateEmployeeSkills\"' \\\n  --data @- <<'EOF'\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:tns=\"https://api.quinyx.com/soap/FlexForce\">\n  <soap:Body>\n    <tns:wsdlUpdateEmployeeSkills>\n    <apiKey xsi:type=\"xsd:string\">string</apiKey>\n    <skills xsi:type=\"SOAP-ENC:Array\" SOAP-ENC:arrayType=\"tns:UpdateEmployeeSkill[1]\">\n      <item xsi:type=\"tns:UpdateEmployeeSkill\">\n        <persId xsi:type=\"xsd:int\">0</persId>\n        <badgeNo xsi:type=\"xsd:string\">string</badgeNo>\n        <addSkills xsi:type=\"xsd:int\">0</addSkills>\n        <jobSkills xsi:type=\"SOAP-ENC:Array\" SOAP-ENC:arrayType=\"tns:JobSkill[1]\">\n          <item xsi:type=\"tns:JobSkill\">\n            <skillId xsi:type=\"xsd:int\">0</skillId>\n            <extSkillId xsi:type=\"xsd:string\">string</extSkillId>\n            <skillExpires xsi:type=\"xsd:int\">0</skillExpires>\n            <skillExpiringDate xsi:type=\"xsd:dateTime\">2024-01-01T00:00:00Z</skillExpiringDate>\n          </item>\n        </jobSkills>\n        <validationErrors xsi:type=\"SOAP-ENC:Array\" SOAP-ENC:arrayType=\"xsd:string[1]\">\n          <item xsi:type=\"xsd:string\">string</item>\n        </validationErrors>\n      </item>\n    </skills>\n    </tns:wsdlUpdateEmployeeSkills>\n  </soap:Body>\n</soap:Envelope>\nEOF"},{"id":"python-zeep","label":"Python (zeep)","lang":"python","source":"from zeep import Client\n\nclient = Client('https://api.quinyx.com/FlexForceWebServices.php?wsdl')\n\nresult = client.service.wsdlUpdateEmployeeSkills(\n    apiKey='string',\n    skills=[{\n            'persId': 0,\n            'badgeNo': 'string',\n            'addSkills': 0,\n            'jobSkills': [{\n                    'skillId': 0,\n                    'extSkillId': 'string',\n                    'skillExpires': 0,\n                    'skillExpiringDate': '2024-01-01T00:00:00Z',\n                }],\n            'validationErrors': ['string'],\n        }],\n)\n\nprint(result)"},{"id":"java-jaxws","label":"Java (JAX-WS)","lang":"java","source":"import jakarta.xml.ws.Service;\nimport javax.xml.namespace.QName;\nimport java.net.URL;\n\nURL wsdlURL = new URL(\"https://api.quinyx.com/FlexForceWebServices.php?wsdl\");\nQName serviceName = new QName(\"https://api.quinyx.com/soap/FlexForce\", \"FlexForce\");\nService service = Service.create(wsdlURL, serviceName);\nFlexForcePortType port = service.getPort(FlexForcePortType.class);\n\n// Populate request fields, then call:\n// WsdlUpdateEmployeeSkillsResponse response = port.wsdlUpdateEmployeeSkills(...);\n        // apiKey: \"string\"\n        // skills: [{\"persId\":0,\"badgeNo\":\"string\",\"addSkills\":0,\"jobSkills\":[{\"skillId\":0,\"extSkillId\":\"string\",\"skillExpires\":0,\"skillExpiringDate\":\"2024-01-01T00:00:00Z\"}],\"validationErrors\":[\"string\"]}]"}],"responseExample":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:tns=\"https://api.quinyx.com/soap/FlexForce\">\n  <soap:Body>\n    <tns:wsdlUpdateEmployeeSkillsResponse>\n    <return xsi:type=\"SOAP-ENC:Array\" SOAP-ENC:arrayType=\"tns:UpdateEmployeeSkill[1]\">\n      <item xsi:type=\"tns:UpdateEmployeeSkill\">\n        <persId xsi:type=\"xsd:int\">0</persId>\n        <badgeNo xsi:type=\"xsd:string\">string</badgeNo>\n        <addSkills xsi:type=\"xsd:int\">0</addSkills>\n        <jobSkills xsi:type=\"SOAP-ENC:Array\" SOAP-ENC:arrayType=\"tns:JobSkill[1]\">\n          <item xsi:type=\"tns:JobSkill\">\n            <skillId xsi:type=\"xsd:int\">0</skillId>\n            <extSkillId xsi:type=\"xsd:string\">string</extSkillId>\n            <skillExpires xsi:type=\"xsd:int\">0</skillExpires>\n            <skillExpiringDate xsi:type=\"xsd:dateTime\">2024-01-01T00:00:00Z</skillExpiringDate>\n          </item>\n        </jobSkills>\n        <validationErrors xsi:type=\"SOAP-ENC:Array\" SOAP-ENC:arrayType=\"xsd:string[1]\">\n          <item xsi:type=\"xsd:string\">string</item>\n        </validationErrors>\n      </item>\n    </return>\n    </tns:wsdlUpdateEmployeeSkillsResponse>\n  </soap:Body>\n</soap:Envelope>","proseHtml":null,"changelogHtml":"<h2>Change log</h2>\n<table>\n<thead>\n<tr>\n<th>Date</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>2018-09-18</td>\n<td>Copied from old documentation and expanded UpdateEmployeeSkill element with optional parameter <code>addSkills</code></td>\n</tr>\n<tr>\n<td>2020-09-15</td>\n<td>Added minOccurs=0 to not required fields</td>\n</tr>\n</tbody></table>\n","typeElementDescriptions":{"AbsenceRecord":{"id":"Unique id of the absence. Required when updating an existing record.","persId":"PersId of the employee. Set to `0` when using `badgeNo`.","badgeNo":"Badge number of the employee. Required (when `persId` is not used) to create an absence.","leaveId":"Leave type id. Set to `0` when using `leaveExtCode`. Required (when `leaveExtCode` is not used) to create an absence.","leaveExtCode":"External code for the leave type. Set to empty when `leaveId` is used.","fromDate":"Start date. Required to create an absence.","fromTime":"Start time. Required to create an absence","toDate":"End date. Required to create an absence.","toTime":"End time. Required to create an absence","isPreliminary":"Legacy Quinyx Classic field, currently no effect in Quinyx","sickLevel":"Decimal — `1` = 100%.","managerComments":"Free-text manager comment.","leaveReason":"Free-text leave reason.","decisionId":"Decision id. Set to `0` when using `decisionNo`.","decisionNo":"Decision number. Set to empty when using `decisionId`. Requires `customerNo`.","customerNo":"Customer number, used together with `decisionNo` to identify the decision.","teamId":"Team id. Set to `0` when using `teamExtCode`.","teamExtCode":"External team code. Set to empty when using `teamId`.","externalInfo1":"External information field 1.","externalInfo2":"External information field 2.","externalInfo3":"External information field 3.","useDefaultAbsenceSchedule":"`true` to add the absence schedule from the leave reason","validationErrors":"Returned in the response only. Array of error strings on failure; empty on success."},"AdditionalFieldData":{"key":"Mandatory. Identifier of the additional field (e.g. \"ssn\" or \"position\").","value":"The value of the additional field. Format depends on the field type:\n\n- `string` → the string\n- `bool` → `0` or `1`\n- `choice` → the choice key\n- `date` → YYYY-MM-DD\n\nA blank string means an unspecified value (except for `bool`, which has no unspecified value)."},"Agreement":{"id":"Internal id of the agreement.","extAgreementId":"External id of the agreement. Can be used in integrations to identify the agreement with an external code; also supported when updating via wsdlUpdateAgreements.","persId":"Internal id of the employee.","badgeNo":"Employee badge no.","weekHours":"Full-time working hours.","minHours":"Not used.","maxHours":"Not used.","salary":"Hourly salary — the first salary entry on the agreement.","premiumSalary":"Not used.","premiumSalary2":"Not used.","premiumSalary3":"Not used.","periodType":"Schedule period type.","periodDay":"Not used.","periodStart":"First day in the schedule period.","periodLength":"Number of days or months in the schedule period.","weeklyAvg":"Average working hours per week.","empLevel":"Employment level, where 1.00 = 100%. The first employment rate on the agreement.","templateId":"Internal template id; use wsdlGetAgreementTemplates to list agreement templates and their ids. Set to 0 if no template shall be assigned to the agreement.","hourly":"Indicates whether the employee is hourly employed.","fromDate":"Agreement start date.","toDate":"Agreement end date. If `expires` is 0 (false) this date is unused, as the agreement then never expires.","expires":"Indicates whether the agreement has an expiry date.","comment":"Free comment text.","vacations":"List of future absence.","redDays":"List of bank holidays.","overTime1":"Not used.","overTime2":"Not used.","overTime3":"Not used.","xtrawork":"Lists the employee's notices of interest.","shifts":"Not used.","ts":"Timestamp of when the agreement was last modified.","restId":"Internal id of the unit.","roundingBreaks":"Indicates whether punched breaks shall be rounded to match scheduled breaks.","punchRoundings":"List of time-punch derivation rules.","agreementOvertimeMethods":"List of overtime methods related to the agreement.","isMainAgreement":"Indicates whether the agreement is the employee's main agreement.","additionalField1":"Free text field.","additionalField2":"Free text field.","additionalField3":"Free text field.","additionalField4":"Free text field.","additionalField5":"Free text field.","monthlySalary":"The first salary entry on the agreement.","name":"Agreement's name."},"AgreementInfoByDate":{"badgeNo":"Badge number of the employee.","agreementId":"Internal id of the matching agreement.","extAgreementId":"External id of the agreement, when set.","agreementUnitId":"Internal id of the unit that owns the agreement.","agreementUnitName":"Display name of the unit that owns the agreement.","agreementTemplateId":"Internal id of the agreement template, when the agreement is template-based.","agreementTemplateName":"Display name of the agreement template, when applicable.","employmentRate":"Employment rate (1.0 = 100%, 0.42 = 42%).","additionByWorkedYears":"Salary addition based on years worked.","additionByAge":"Salary addition based on the employee's age.","additionByPersonalAdjustment":"Salary addition from a personal adjustment.","hourlySalary":"Hourly salary on the queried date.","monthlySalary":"Monthly salary on the queried date, when set.","calculatedSalary":"Effective salary on the queried date, including all additions."},"AgreementSalary":{"fromDate":"From which date the employment salary shall be used, it will be affective until next items from date.\n\nFirst item will always be ‘1970-01-01’","monthlyHoursDivisor":"Factor that is used to calculate hourly salary"},"AgreementTemplateV2":{"id":"Primary key","templateName":"Name of the Template","extTemplateId":"This value can be used to identify the agreement template by an external code. Mapping of the external code to Quinyx internal id is done in settings>tables>integration keys","schedulePeriodLength":"Length of schedule period according to the schedule period type","schedulePeriodStartDate":"The start date of the schedule period.","fullEmploymentDays":"Number of working days in the period","fullEmploymentDaysPerWeek":"Number of working days in a week, used together with full time employment days and full time employment hours to calculate nominal hours","fullEmploymentHrs":"Number of working hours in in the period, as specified by the full-time employment days","excludeSundaysInWorkHours":"Indicate if Sundays shall reduce working hours, only used together with overtime based on workday model","breakRounding":"Indicates if breaks shall be rounded to match scheduled breaks","breakIsWorkTime":"Indicate if scheduled breaks shall be considered as working time","dayBreak":"Daybreak used in relation to counting of scheduled and worked hours which affect also over time calculation","weeklyAvg":"Average working hours per week","stdRedDays":"Indicates if standard bank holidays are used","stdOverTime":"Indicates if standard overtime and UT schedules are used","minHrsWeek":"Minimum working hours per week","maxDays":"Max consecutive working days in a row","minFreeDays":"Minimum free days following the maximum period","maxHourDay":"Maximum hours per day","maxHourWeek":"Maximum hours per week","minRest":"Minimum hours rest per day","minRestWeek":"Minimum hours rest per week","seqDays":"Number of days in sequence rule period.","seqMaxDays":"Maximum number of working days in sequence period.","seqMaxHrs":"Maximum number of working hours in sequence period.","weekStart":"First day of the week.","atDayBreak":"Indicates if daily rest should be directly after daybreak","dayBreakRest":"Defines the start of the day, and is used for rules like daily/weekly rest","minBreak":"Minimum length of breaks in minutes","maxBreak":"Maximum length of breaks in minutes","weeksAvail":"Number of weeks in available schedule","schedWeekEnds":"Indicates if weekend can be scheduled","minWeekEndYear":"Minimum number of free weekends per year","maxTimeWoBreak":"Maximum number of working hours without break","scheduleLockPeriod":"Period for warning about late changes","scheduleLockPeriodType":"Type of period for warning about late changes.","checkAvailability":"Indicates if availability shall be checked","appPayOnAbsence":"Approve payment on absence","payOtime":"Indicate how overtime shall be compensated.","payUT":"Indicate how unsocial time shall be compensated.","showIgnoreOtime":"Indicates if user can select ignore overtime in web punch","showUnspecifiedLeaveInWP":"Indicates if unspecified leave can be selected in web punch","allowPunchingOnSubshifts":"Indicates if user can punch on subshifts","genMoretime":"Indicates if additional time shall be generated (only applies to old over time methods).","overtimeMethod":"Old overtime method.","overtimeWindow":"Number of days for over time method 3","autoPunchOut":"Number of hours before employee will be automatically punched out","lateChange":"Indicates if late change shall be compensated","lateChangeUT":"The unsocial time level that shall be used as compensation","breakDayrest":"Indicate if break of daily rest shall be compensated","breakDayrestUT":"The unsocial time level that shall be used as compensation","breakWeekrest":"Indicate if break of weekly rest shall be compensated","breakWeekrestUT":"The unsocial time level that shall be used as compensation","timeBank":"Indicate if flex time/bank time shall be used","payrollSystem":"Payroll system","adjustForLeave":"Indicates if nominal hours shall be reduced for leave","advancedTimeRules":"Indicates if advanced time rules shall be used (danish rules)","otCancelsUt":"Indicates if over time shall override unsocial time","allowOverrideOverlapping":"Indicates if warning of overlapping shift can be ignored.","utThreshold":"Working hours that shall be reached during specified period, for unsocial time to be paid","dailyOvertimeHours":"Number of hours before daily overtime will be generated, used with overtime method 5","weeklyOvertimeHours":"Number of hours before daily overtime will be generated, used with overtime method 5","noCostPeriodStart":"Start day for period where cost shall not be calculated","noCostPeriodEnd":"End day for period where cost shall not be calculated","balancePeriodLength":"Number of days/months in balance period","balancePeriodHours":"Number of working hours in balance period","balancePeriodStartDate":"Start date of the balance period","useWorkDayModel":"Use work day model for nominal hours calculation, only used with new overtime","availability":"Array of `AvailabilityTimePeriod` records.","overtimePeriods":"Array of `OvertimePeriod` records for overtime windows.","utPeriods":"Array of `OvertimePeriod` records for unsocial-time windows.","monthlyHours":"Array of `MonthlyHours` records. Only used when the schedule period is months.","overtimeMethods":"Array of `agreementOvertimeMethod` records. Used with the new overtime feature.","punchDeviations":"Array of `punchRounding` records.","employmentRates":"Array of `EmploymentRate` records.","nominalDaysPerWeek":"Array of `NominalDayPerWeek` records.","salaries":"Array of `AgreementSalary` records.","salaryAdditionsAgeBased":"Array of `SalaryAdditionByYear` records — age-based salary additions.","salaryAdditionsYearsWorkedBased":"Array of `SalaryAdditionByYear` records — years-worked-based salary additions.","bankHolidays":"Array of `BankHoliday` records that apply to employees on this template.","socialCosts":"Array of `SocialCost` records — social and vacation costs.","ts":"Timestamp formatted to ISO 8601"},"AgreementTemplate":{"id":"Primary key","templateName":"Name of the Template","weekHours":"Preferred hours in a week","minHours":"Minimum hours in a week","maxHours":"Maximum hours in a week","salary":"Normal hour hourly salary, first entry on the template.","premiumSalary":"OverTime 1 – hourly salary","fromDate":"Agreement start date","toDate":"Agreement end date. Only valid if expires is set.","expires":"1 indicates that the agreement has an expiry date.","periodDay":"Not used.","periodStart":"Date when Agreement got valid","empLevel":"First employment rate on the template.","ts":"Timestamp formatted to ISO 8601"},"AgreementTemplatesSalaryType":{"templateId":"Internal id of the agreement template.","externalTemplateId":"External code identifying the agreement template, when set.","restId":"Unit id the template belongs to.","stCode":"Code for the salary type in the payroll system.","salaryCode":"Salary code shown in Quinyx.","localLabel":"Custom name for the salary type when set; otherwise the standard English name.","defaultLabel":"Default name for the standard salary type in English.","trackerId":"First tracker id, or `0` when not set.","trackerOperator":"- `0` — increase\n- `1` — decrease\n\nFor Dutch Time Trackers (periodized with *Standard deduction order = First to expire*):\n\n- `0` — increase Statutory balances\n- `1` — decrease Statutory balances\n- `2` — increase NonStatutory balances\n- `3` — decrease NonStatutory balances\n- `4` — first-to-expire logic","trackerFactor":"Multiplier applied to the first tracker.","trackerId2":"Second tracker id, or `0` when not set.","trackerOperator2":"Operator for the second tracker. Same enum as `trackerOperator`.","trackerFactor2":"Multiplier applied to the second tracker.","trackerId3":"Third tracker id, or `0` when not set.","trackerOperator3":"Operator for the third tracker. Same enum as `trackerOperator`.","trackerFactor3":"Multiplier applied to the third tracker.","requiresApproval":"When true, transactions of this salary type require approval before counting.","round":"Rounding mode for the salary value.","roundCeil":"Whether rounding uses ceiling.","isLeave":"True when the salary type represents leave.","inUse":"True when the salary type has activity.","isActive":"True when the salary type is enabled on this template.","salaryTypeCategory":"Category id for the salary type.","salaryCost":"Cost amount associated with the salary type.","costType":"Cost type id.","minimumValue":"Minimum allowed value for this salary type.","maximumValue":"Maximum allowed value for this salary type.","transferToPayroll":"True when the salary type is included in payroll transfers.","utReduction":"Unsocial-time reduction factor.","roundingSalaryTypeId":"Id of the salary type used to absorb rounding remainders.","notGeneratedAtSameTime":"Salary-type ids (comma-separated) that must not be generated at the same time as this one.","ts":"Timestamp of the last update, ISO 8601."},"AgreementTemplatesSalaryTypesResponse":{"agreementTemplatesSalaryTypes":"Array of `AgreementTemplatesSalaryType` records.","validationErrors":"Array of validation errors. Empty on success."},"AgreementTemplatesV2Response":{"agreementTemplates":"List of agreement templates matching the request filters.","validationErrors":"Server-side validation errors, if any."},"AgreementV2":{"id":"Primary key","extAgreementId":"External id of the agreement","templateId":"Id of the agreement template, empty if the agreement is not inheriting values from a template","extTemplateId":"External id of template","name":"Name of the agreement","restId":"Id of the unit the agreement is related to","employeeId":"Id of the employee","badgeNo":"Badge number of the employee","toDate":"Note that the date specified here is only used if expires is set to true","expires":"Indicates if the agreement expires; if not, the toDate is ignored","schedulePeriodLength":"Length of schedule period according to the schedule period type","schedulePeriodStartDate":"The start date of the schedule period.","fullEmploymentDays":"Number of working days in the period","fullEmploymentDaysPerWeek":"Number of working days in a week, used together with full time employment days and full time employment hours to calculate nominal hours","fullEmploymentHrs":"Number of working hours in the period, as specified by the full time employment days","excludeSundaysInWorkHours":"Indicate if Sundays shall reduce working hours, only used together with overtime based on workday model","breakRounding":"Indicates if breaks shall be rounded to match scheduled breaks","breakIsWorkTime":"Indicate if scheduled breaks shall be considered as working time","dayBreak":"Daybreak used in relation to counting of scheduled and worked hours which affect also over time calculation","weeklyAvg":"Average working hours per week","minHrsWeek":"Minimum working hours per week","maxDays":"Max consecutive working days in a row","minFreeDays":"Minimum free days following the maximum period","maxHourDay":"Maximum hours per day","maxHourWeek":"Maximum hours per week","minRest":"Minimum hours rest per day","minRestWeek":"Minimum hours rest per week","seqDays":"Number of days in sequence rule period.","seqMaxDays":"Maximum number of working days in sequence period.","seqMaxHrs":"Maximum number of working hours in sequence period.","weekStart":"First day of the week.","atDayBreak":"Indicates if daily rest should be directly after daybreak","dayBreakRest":"Defines the start of the day, and is used for rules like daily/weekly rest","minBreak":"Minimum length of breaks in minutes","maxBreak":"Maximum length of breaks in minutes","weeksAvail":"Number of weeks in available schedule","schedWeekEnds":"Indicates if weekend can be scheduled","minWeekEndYear":"Minimum number of free weekends per year","maxTimeWoBreak":"Maximum number of working hours without break","scheduleLockPeriod":"Period for warning about late changes","scheduleLockPeriodType":"Type of period for warning about late changes.","checkAvailability":"Indicates if availability shall be checked","appPayOnAbsence":"Approve payment on absence","payOtime":"Indicate how overtime shall be compensated.","payUT":"Indicate how unsocial time shall be compensated.","showIgnoreOtime":"Indicates if user can select ignore overtime in web punch","showUnspecifiedLeaveInWP":"Indicates if unspecified leave can be selected in web punch","allowPunchingOnSubshifts":"Indicates if user can punch on subshifts","genMoretime":"Indicates if additional time shall be generated (only applies to old over time methods).","overtimeMethod":"Old overtime method.","overtimeWindow":"Number of days for over time method 3","autoPunchOut":"Number of hours before employee will be automatically punched out","lateChange":"Indicates if late change shall be compensated","lateChangeUT":"The unsocial time level that shall be used as compensation","breakDayrest":"Indicate if break of daily rest shall be compensated","breakDayrestUT":"The unsocial time level that shall be used as compensation","breakWeekrest":"Indicate if break of weekly rest shall be compensated","breakWeekrestUT":"The unsocial time level that shall be used as compensation","timeBank":"Indicate if flex time/bank time shall be used","payrollSystem":"Payroll system","adjustForLeave":"Indicates if nominal hours shall be reduced for leave","advancedTimeRules":"Indicates if advanced time rules shall be used (danish rules)","otCancelsUt":"Indicates if over time shall override unsocial time","allowOverrideOverlapping":"Indicates if warning of overlapping shift can be ignored.","utThreshold":"Working hours that shall be reached during specified period, for unsocial time to be paid","dailyOvertimeHours":"Number of hours before daily overtime will be generated, used with overtime method 5","weeklyOvertimeHours":"Number of hours before daily overtime will be generated, used with overtime method 5","noCostPeriodStart":"Start day for period where cost shall not be calculated","noCostPeriodEnd":"End day for period where cost shall not be calculated","balancePeriodLength":"Number of days/months in balance period","balancePeriodHours":"Number of working hours in balance period","balancePeriodStartDate":"Start date of the balance period","useWorkDayModel":"Use work day model for nominal hours calculation, only used with new overtime","isMainAgreement":"Indicates if this is the main agreement of the employee","additionalField1":"Free field","additionalField2":"Free field","additionalField3":"Free field","additionalField4":"Free field","additionalField5":"Free field","useTempAvail":"Indicates if template values is used for availability","useTempTimeRules":"Indicates if template values is used for time rules","useTempSalary":"Indicates if template values is used for salary related information","useTempWorkTime":"Indicates if template values is used for work time related information","useTempEmploymentRate":"Indicates if template values is used for employment rates","useTempMonthHours":"Indicates if template values is used for monthly hours","useTempTandA":"Indicates if template values is used for time related information","useTemplateBalancePeriod":"Indicates if template values is used for balance period","useTempCosts":"Indicates if template values is used for social and leave costs","useTempNominalDaysPerWeek":"Indicates if template values are used for nominal days per week","useStdTimeRules":"Indicates if standard time rules shall be used","signStatus":"E-signature status.","useTemplateAgeBasedSalaryAddition":"Indicates if template values are used for age based salary additions","salaryAdditionsYearsWorkedBased":"Array of `SalaryAdditionByYear` records — years-worked-based salary additions.","useTemplateYearsWorkedBasedSalaryAddition":"Indicates if template values are used for years worked based salary additions","ts":"Timestamp of last updated time, formatted to ISO 8601","weeklyRestType":"Weekly rest is checked."},"AgreementsV2Response":{"agreements":"Array of `AgreementV2` records matching the request filters.","validationErrors":"Array of validation errors. Empty on success."},"BreakCalculationRule":{"weekday":"Apply only on certain weekdays","hours":"Shift hours","breakMinutes":"Length of break generated","breakType":"Break type","distribute":"Where to place the break","noOfBreaks":"Number of breaks to insert","afterHours":"For distribute = 3 (after)"},"Category":{"id":"Primary key.","categoryName":"Display name of the category.","extCode":"External code. Not used for staff categories or shift categories.","role":"Role id. Only meaningful for staff categories.","ts":"Timestamp of the last update, ISO 8601."},"Customer":{"id":"Primary key.","name":"Customer name.","contact":"Contact person.","address1":"Address line 1.","address2":"Address line 2.","zip":"Zip / postal code.","city":"City.","country":"Country.","cellPhone":"Mobile phone number.","phoneNo":"Phone number.","email":"Email address.","dateCreated":"May be `0000-00-00` (returned as a string).","locale":"Locale code (e.g. `en_US`, `se_SV`).","ts":"Timestamp of the last update, ISO 8601."},"District":{"id":"Primary key.","groupId":"Neo group id.","extGroupId":"Neo external group id.","name":"District name.","managerId":"Internal employee id of the district manager. Null when not set.","managerBadgeNo":"External (badge) id of the manager. Returned when defined on the district.","managerMemberOfRestaurant":"API key of the unit where the manager is employed. Returned when defined on the district.","managerGroupId":"Manager group id. `0` when no manager group is set.","ts":"Timestamp of the last update, ISO 8601."},"DeletedEmployee":{"persId":"Employee ID","unitId":"ID of employee’s unit","badgeNo":"Employee badge no","deleted":"When employee was deleted"},"EligibilityRule":{"id":"Primary key.","name":"Rule name.","employeeConditionAmount":"Example: has worked at least (45) days during the last 5 weeks; 45 is the employee condition amount.","periodConditionAmount":"Example: has worked at least 45 days during the last (5) weeks; 5 is the period condition amount.","ignoreOvertimeShifts":"If true, Timepunches with Shifts connected to Shift types where ‘Overtime shift’ is ON, will not be counted as worked time.","allowedAbsences":"Note: This setting cannot be used if `countAbsences` is true."},"Employee":{"id":"Primary key.","badgeNo":"Badge number of the employee.","givenName":"First name.","familyName":"Last name.","address1":"Address line 1.","address2":"Address line 2.","zip":"Zip / postal code.","city":"City.","cellPhone":"Mobile phone number.","phoneNo":"Phone number.","email":"Email address.","leaveDate":"Only meaningful when `active = 0`.","lastDayOfEmployment":"Last working day. Only set when `active = 0`.","socsecNo":"Social Security Number.","country":"Country.","restId":"Unit primary key.","staffCat":"Staff category primary key.","extStaffCategory":"External staff category id.","staffCatName":"Display name of the staff category.","section":"Section / department primary key.","sectionName":"Display name of the section.","info":"Additional information about the employee.","cardNo":"Time & Attendance card number.","passwordTandA":"MD5-hashed password used for third-party T&A applications.","nextOfKind":"Name of next of kin.","nextPhone":"Phone number of next of kin.","costCentre":"Internal id of the cost centre.","costCentreExtCode":"External id of the cost centre. Empty string when not set.","role":"Legacy role id — no longer used. Role is now derived from the staff category.","punchType":"Punch type controlling how the employee registers time punches.","myDistrict":"District id for district managers.","reportingTo":"Badge number of the employee's manager.","hasBankId":"`1` when the employee has BankID, `0` otherwise.","legalGuardianName":"Full name of the employee's legal guardian (if any).","legalGuardianEmail":"Email address of the employee's legal guardian (if any).","rank":"Rank of the employee.","autoMan":"Auto-manager flag. Returned by `wsdlGetEmployeesV2` (added in version 380).","groupRoles":"Always empty in the V1 response; populated by `wsdlGetEmployeesV2` when `includeNeoRoles = true`.","ts":"Timestamp of the last update, ISO 8601."},"EmployeeAttachment":{"employeeId":"Quinyx internal id of the employee.","attachments":"Array of `FileAttachment` records to upload.","validationErrors":"Array of validation errors. Empty on success."},"EmployeeBadgeNo":{"badgeNo":"Badge number of an employee to query."},"EmployeeRolloutHours":{"badgeNo":"Badge number of the employee.","hours":"Rolled-out base-schedule hours for this employee in the requested period."},"EmployeeTime":{"badgeNo":"Badge number of the employee.","date":"The date the row summarises.","workedHours":"Worked hours on the date.","leaveHours":"Total absence hours on the date.","leaveReason":"Comma-separated absence codes that applied on the date.","costCentre":"Cost centre for the employee on the date.","lastPunchOut":"Last punch-out time on the date.","agreementName":"Name of the employee's agreement (template name when no personal agreement exists).","lastModified":"Last modification of the most recent punch on the date.","costCentreHomeUnit":"Cost centre of the employee's home unit."},"EmploymentRate":{"fromDate":"From which date the employment rate shall be used, it will be affective until next items from date.\n\nFirst item will always be ‘1970-01-01’","rate":"Employment rate — its representation differs by operation. On write (wsdlUpdateAgreementsV2) send a whole-number percentage from 0 to 100 (`50` = 50%, `100` = 100%); it is divided by 100 before storage. On read (wsdlGetAgreementsV2) it is returned as the stored fraction from 0 to 1 (`0.5` = 50%, `1.0` = 100%)."},"FileAttachment":{"fileName":"File name shown to the recipient.","fileContent":"Base64-encoded file contents.","fileId":"Returned in the response only — server-assigned id for the stored file.","validationErrors":"Array of validation errors. Empty on success."},"Geo":{"latitude":"Latitude.","longitude":"Longitude.","radius":"Radius (metres).","comment":"Free-form comment."},"GetAgreementTemplatesSalaryTypesRequest":{"templateId":"Pass agreement template id to get salary types connected yo that agreement","externalTemplateId":"Pass external agreement template id to get salary types connected yo that agreement","onlyActive":"Allows selecting only active salary types"},"GetAgreementTemplatesV2":{"templateId":"Pass in 0 to select all agreement templates.","extTemplateId":"This value can be used to identify the agreement template by an external code. Mapping of the external code to Quinyx internal id is done in settings>tables>integration keys","modifiedAfter":"Pass an empty string (`\"\"`) if this parameter should be ignored, or a date to return agreement templates modified later than that date."},"GetAgreementsV2":{"agreementId":"Optional. If provided, only the selected agreement will be returned.","extAgreementId":"Optional. If provided, and if agreementId is not provided, then only the agreement with the specified external ID will be returned.","sectionId":"Optional selection on employee section","employeeId":"Optional. If provided, agreements belonging to this employee will be searched for on the entire customer, irrespective of the unit selected by the API key.","badgeNo":"Optional. If provided, agreements belonging to this employee will be searched for on the entire customer, irrespective of the unit selected by the API key.","fromDate":"Optional selection on agreements valid from this date","toDate":"Optional selection on agreements valid before this date","modifiedAfter":"Pass an empty string (`\"\"`) if this parameter should be ignored, or a date to return agreements modified later than that date."},"GetEmployeeSkillsResponse":{"validationErrors":"Array of validation errors. Empty on success.","employeesSkills":"Array of `employeeSkill` records — one per matched employee."},"GetSchedulesV2":{"employeeId":"Filter to a single employee by Quinyx id.","badgeNo":"Filter to a single employee by badge number.","section":"Filter to a single section by integration key.","fromDate":"Start of the range.","toDate":"End of the range.","modifiedAfter":"Only return shifts modified after this timestamp.","modifiedBefore":"Only return shifts modified before this timestamp.","scheduledShifts":"Include scheduled shifts","absenceShifts":"Include absence shifts","allUnits":"**Deprecated** — functionality will be removed. Includes shifts from all units under the same client. Only usable with a small amount of units, time period, and number of schedule objects.","includeCosts":"Include cost fields in the output","useFixedSchedule":"Use fixed schedules instead of actual schedules for the response and cost calculation","includeNOI":"Include notice-of-interest shifts in the output. Available from version 326","includeTags":"Include shift and sub-shift tags in the output"},"GetSchedulesV3":{"employeeId":"Filter to a single employee by Quinyx id.","badgeNo":"Filter to a single employee by badge number.","section":"Filter to a single section by integration key.","fromDate":"Start of the range. Minimum date is `2000-01-01`.","toDate":"End of the range. Maximum date is `2040-12-31`.","modifiedAfter":"Only return shifts modified after this timestamp.","modifiedBefore":"Only return shifts modified before this timestamp.","scheduledShifts":"Include scheduled shifts","absenceShifts":"Include absence shifts","includeCosts":"Include cost fields in the output","useFixedSchedule":"Use fixed schedules instead of actual schedules for the response and cost calculation","includeNOI":"Include notice-of-interest shifts in the output. Available from version 326","includeTags":"Include shift and sub-shift tags in the output","includeExtScheduleId":"Include `extScheduleId` on each shift, when set"},"GetTextItem":{"id":"Id of the text item.","ttext":"Display name of the text item.","extCode":"External id of the text item (e.g. the code used in a payroll system).","showInWebpunch":"`0` / `1`. Whether the item is shown in Webpunch (cost centres only).","checked":"`true` / `false`. Whether the unit has this item checked."},"GetTimePunchesResponse":{"timepunches":"Array of `TimePunch` records matching the request.","validationErrors":"Array of validation errors. Empty on success."},"Group":{"id":"Group primary key.","name":"Group name.","members":"Array of `GroupMember` — the employees who belong to this group.","ts":"Timestamp of the last update, ISO 8601."},"GroupMember":{"id":"Member primary key.","groupId":"Group this membership belongs to.","employeeId":"Internal employee id.","badgeNo":"Employee badge number.","name":"Full name of the employee.","ts":"Timestamp of the last update, ISO 8601."},"GroupsRoles":{"groupId":"Required if `extGroupId` is not provided.","extGroupId":"If `groupId` is not provided `extGroupId` is used to determine the groupId. Note: providing an erroneous or duplicate value will result in an integration key validation exception.","roleId":"Mandatory. Required if `extNeoRoleId` is not provided.","extNeoRoleId":"If `roleId` is set, this will be ignored.","startDate":"This date should always be set so the date is defined correctly; otherwise different logic applies depending on whether a role is new or being updated. If not set, the current date is used, which can result in overlapping-role errors when prior roles exist."},"InfoByDate":{"date":"The date the agreement info should reflect.","EmployeeBadgeNo":"Wrapper carrying one or more `badgeNo` entries identifying the employees to query."},"JobSkill":{"skillId":"Quinyx internal id of the skill. Required unless `extSkillId` is supplied.","extSkillId":"External skill id. Used when `skillId` is not supplied.","skillExpiringDate":"Date the skill expires for the employee."},"LeaveApplication":{"id":"Primary key.","header":"Header / subject of the leave application.","bodytext":"Body text of the leave application.","senddate":"Date the application was submitted. ISO 8601.","fromPersId":"Employee primary id of the sender.","fromBadgeNo":"Badge number of the sender.","toPersId":"Primary id of the store manager the application was sent to.","moderated":"Not used.","leaveReason":"Display name of the leave reason.","fromDate":"First day of the leave.","fromTime":"Start time on the first day.","toDate":"Last day of the leave.","toTime":"End time on the last day.","restId":"Store (unit) primary key.","extCode":"External code used for synchronising with external systems.","estHours":"Estimated hours of the leave.","estSalary":"Estimated salary during the leave.","sickLevel":"Sick level expressed as a decimal (`0.55` = 55%, `1` = 100%).","ts":"Timestamp of the last update, ISO 8601."},"LeaveApplicationV2":{"id":"Id in the leave-application table.","header":"Subject of the leave application.","bodytext":"Body text of the leave application.","senddate":"ISO 8601 timestamp when the application was sent.","fromPersId":"Quinyx persId of the employee who applied for leave.","fromBadgeNo":"Badge number of the employee who applied for leave.","toPersId":"persId of the manager the application was sent to for approval.","beenViewed":"Status of the leave application:","leaveReason":"Type of leave.","oldLeaveReason":"Previous leave reason name when the type was changed after the application was created.","fromDate":"First day of the leave.","fromTime":"Start time of the leave.","toDate":"Last day of the leave.","toTime":"End time of the leave.","restId":"Unit id the leave application was created on.","extCode":"External code for the leave reason. Used to identify the type of leave in external applications.","estHours":"Estimated hours of the leave (derived from underlying shift hours).","estSalary":"Estimated salary during the leave.","sickLevel":"Sick level expressed as a decimal (`0.55` = 55%, `1` = 100%).","externalInfo1":"External information field 1.","externalInfo2":"External information field 2.","externalInfo3":"External information field 3.","approvedByManager":"`true` when the manager has approved the leave.","approvedByEmployee":"`true` when the employee has confirmed the leave.","ts":"ISO 8601 timestamp of the last modification."},"LeaveReason":{"id":"Primary key.","name":"Display name of the leave reason.","extCode":"External code.","confirmationText":"Text shown when confirming a leave taken with this reason.","abbrCode":"Abbreviation code.","ts":"Timestamp of the last update, ISO 8601."},"Mail":{"toPersId":"Quinyx `persId`. Set to 0 or skip if sending to a unit manager or to a manager group (relates to Classic configuration, deprecated).","sendToManagerType":"Send to the unit manager or a manager group. Set to 0 or skip if `toPersId` is used; if set to 1 or 2, any value in `toPersId` is disregarded.","subject":"Subject line of the Qmail.","msg":"Qmail message body.","fromPersId":"Sender. Quinyx `persId`. If set to 0 or skipped, the sender is set to the unit manager as defined on the unit card.","attachments":"An array of `MailAttachment`. Each attachment carries `fileName` and `fileContent` (base64-encoded). Up to 10 attachments per Qmail.","attachmentsArePayslips":"Requires Mobile Payslip to be activated for the customer. When true and attachments are provided, marks every attachment as a payslip so mobile users can see them."},"MailAttachment":{"fileName":"File name shown to the recipient.","fileContent":"Base64-encoded file contents."},"MinShiftLength":{"length":"Length in hours"},"NeoGroup":{"id":"Group id.","extGroupId":"External id of the group, when set.","name":"Group name.","type":"Group type.","belongsTo":"Parent group reference."},"NeoRole":{"id":"Role id.","extNeoRoleId":"External Neo role id, when set.","name":"Role name."},"NominalDayPerWeek":{"fromDate":"From which date the employment rate shall be used, it will be affective until next items from date.\n\nFirst item will always be ‘1970-01-01’","nominalDaysPerWeek":"Expressed as an integer"},"OvertimeMethod":{"id":"Internal id of the overtime method.","name":"Display name of the overtime method.","type":"Salary type","base":"Working-quota base","periodType":"Overtime period","startDate":"Start date of the overtime period.","periodLength":"Length of the overtime period, in units defined by `periodType`.","hours":"Number of hours in the working quota.","countUpwards":"When true, hours for the overtime are included when calculating subsequent overtimes.","thresholdType":"Threshold base:","thresholdHours":"Number of hours that must be reached in the threshold period to start generating overtime.","thresholdLength":"Length of the threshold period, in units defined by `thresholdType`.","thresholdStartDate":"Start date of the threshold period.","otLevelType":"Source the overtime levels are based on","otLevels":"Array of `otLevel` records."},"PayrollTag":{"tagCategoryName":"Name of the tag category.","tagCategoryExternalId":"External id of the tag category.","tagName":"Display name of the tag.","tagCode":"Internal code of the tag.","tagExternalId":"External id of the tag.","customFields":"Array of `TagCustomField` records carrying tag-specific custom values."},"PayrollV2":{"id":"Employee id.","empName":"Employee display name.","restId":"Unit id the salary row belongs to.","badgeNo":"Employee badge number.","socsecNo":"Employee social-security number, e.g. `700101-0123`.","cardNo":"Employee card number.","pType":"Payroll row type code.","date":"Calendar date the row applies to.","salType":"External salary type code.","in":"Start of the segment.","out":"End of the segment.","hours":"Number of hours for this row.","salaryMgrAttest":"Only included when `approvedSalaryStatus` is set on the request. `true` when the salary has been approved (always `true` when the salary does not require approval).","transactionEmpAttest":"Only included when `approvedSalaryStatus` is set on the request. `true` when the employee has approved this time.","transactionMgrAttest":"Only included when `approvedSalaryStatus` is set on the request. `true` when the manager has approved this time.","transactionCustAttest":"`true` when the customer has approved this time. Only available with the CRM module.","costCentre":"Cost centre attached to the underlying punch/shift.","projectNo":"Project number attached to the underlying punch/shift.","accountNo":"Account number attached to the underlying punch/shift.","agrmntAdditionalField1":"Agreement additional field 1.","agrmntAdditionalField2":"Agreement additional field 2.","agrmntAdditionalField3":"Agreement additional field 3.","agrmntAdditionalField4":"Agreement additional field 4.","agrmntAdditionalField5":"Agreement additional field 5.","externalInfo1":"External information field 1 from the underlying punch/shift.","externalInfo2":"External information field 2 from the underlying punch/shift.","externalInfo3":"External information field 3 from the underlying punch/shift.","decisionNo":"Decision number attached to the underlying punch/shift.","customerNo":"Customer number attached to the underlying punch/shift.","teamId":"Team id the row is associated with.","teamExtCode":"External code of the team the row is associated with.","scheduleId":"Unique id of the shift the row was generated from.","punchId":"Unique id of the time punch. **Note:** this id can be empty when the salary type was generated by a bank-holiday rule rather than a punch.","punchDate":"Date of the underlying time punch.","orgScheduleId":"Original shift id — used when the shift was split by absence, to keep track of the origin.","leaveAppId":"Unique id of the underlying leave application.","segmentStartDate":"Calendar start date of the generated salary type. Not related to `date`.","productiveTime":"`true` when this segment counts as productive time.","netCost":"Net cost for the row. Only present when `includeCosts=true`.","absenceCost":"Absence cost for the row. Only present when `includeCosts=true`.","socialCost":"Social cost for the row. Only present when `includeCosts=true`.","totalCost":"Total cost for the row. Only present when `includeCosts=true`.","tags":"Array of `PayrollTag` records. Only present when `includeTags=true`.","stCode":"Salary type code. Only present when `includeStCode=true`."},"Portrait":{"portrait":"Base64-encoded JPEG of the employee's portrait.","ts":"Timestamp of the last update, ISO 8601."},"ProcessLeavesRecord":{"leaveId":"The leave application id in Quinyx.","managerComments":"Manager comment shown to the employee.","validationErrors":"Returned in the response only. Array of error strings on failure; empty on success."},"PunchValidation":{"badgeNumber":"The badgeNumber used","cardNumber":"The cardNumber used","punchIn":"The final punch in time set will be returned.\n\nIf action 3, this will be the in time for the new punch created","punchOut":"Will only be set when using action 2","punchId":"The ID of the created punch","shiftId":"If punch gets matched to a shift, the shiftId will be returned","status":"Returns the status of the punch:\n\n- No action (Will include validationErrors)\n- Punched in\n- Punched out\n- Punched out existing and punched in new","validationErrors":"An array of validation error messages."},"RestaurantKey":{"id":"Internal unit id; stable across renames.","name":"Display name shown in the Quinyx UI.","API_key":"Unit-scoped key — treat as a secret, do not log."},"ResultTransfer":{"extTransferId":"extTransferId you sent with the request of wsdl","url":"Only if status is Ready To Download","status":"In Progress,Failed OR Ready to Download"},"Role":{"id":"Role id.","name":"Role name."},"SalaryCompensation":{"reddayId":"Red-day (bank-holiday) id connected to this salary compensation.","salaryCodes":"Comma-separated list of Salary Types (Standard Codes) used in the average-compensation calculation when `calculationType = 1`.","salaryCodeName":"Salary Type (Standard Code) emitted as the sum of all individual calculated `salaryCodes` compensations, or as an hours output when `calculationType = 1`.","eligibilityRuleIds":"Comma-separated list of Eligibility Rule ids.","periodLength":"Depending on `periodType`, number of days or number of weeks.","allowedAbsences":"Comma-separated list of Leave Type ids that count as a worked day in the calculation. If left empty, no absences count as a worked day.","fixedNrOfWorkedDays":"If set, the actual number of worked days is not used. Cannot be set together with `percentageOfSummedSalaries`.","includeAllAbsencesCountedAsWorkedHours":"When `true`, overrides `allowedAbsences` logic. When false, `allowedAbsences`\nlogic is used.","countVirtualShiftAsWorkingDay":"When true, virtual shifts count as a worked day in the average calculation.","deductWorkingHoursFromCompensation":"When `true`, time counted as worked time is deducted from the compensation\non the day of the bank holiday.","percentageOfSummedSalaries":"If set, the calculation is `salary hours * (percentageOfSummedSalaries / 100)`. Cannot be set together with `fixedNrOfWorkedDays`."},"SalaryCostLimit":{"fromDate":"Date from which the limit applies; effective until the next item’s fromDate. The first item is always 1970-01-01.","limit":"Salary cost limit."},"SalaryCostPeriod":{"fromDate":"Date from which the period applies; effective until the next item’s fromDate. The first item is always 1970-01-01.","periodLength":"Number of months or days in the period."},"Section":{"id":"Primary key. Can also be used as the identifier when updating an existing section.","extSectionId":"External section id. Can be used as the identifier when updating.","extGroupId":"External Neo group id. Can be used as the identifier when updating.","restId":"Store (unit) id the section belongs to.","name":"Section name. Maximum 50 characters.","managerId":"Employee id of the section manager. `0` when no manager is appointed.","managerGroupId":"Manager group id. `0` when no manager group is appointed.","costCentre":"Cost centre id.","costCentreExtCode":"External cost centre code. Ignored on input when `costCentre` is set. Empty string when not set.","ts":"Timestamp of the last update, ISO 8601.","validationErrors":"Array of validation errors. Empty on success."},"Schedule":{"id":"Id of the scheduled or absence shift.","restId":"Unit id the shift belongs to.","begDate":"Shift start date.","begTime":"Shift start time.","endDate":"Shift end date.","endTime":"Shift end time.","breakType":"Break configuration code.","begBreak":"Start of break 1.","endBreak":"End of break 1.","begBreak2":"Start of break 2.","endBreak2":"End of break 2.","begBreak3":"Start of break 3.","endBreak3":"End of break 3.","begBreak4":"Start of break 4.","endBreak4":"End of break 4.","persId":"Quinyx id of the assigned employee. `0` when the shift is unassigned.","badgeNo":"Badge number of the assigned employee.","status":"Assignment status","grabbAble":"`1` when the assigned employee is offering the shift for a swap.","grabbId":"Legacy field. Always `0`.","approved":"Approval flag — `1` once approved, `0` otherwise.","managerId":"Id of the manager who owns the shift.","categoryId":"Shift type id.","categoryName":"Shift type name.","comment":"Free-text comment on the shift.","section":"Section id (not the integration key).","sectionName":"Section display name.","costEstimate":"Cost estimate for the shift.","hours":"Total shift hours.","fixSchedId":"Id of the fixed schedule the shift belongs to, if any.","shiftChanged":"`1` when the shift was modified since rollout.","costCentre":"Cost centre id attached to the shift.","salaryType":"Salary type id attached to the shift.","accountNo":"Account number attached to the shift.","projectNo":"Project number attached to the shift.","unitName":"Display name of the unit.","accountNoExtCode":"External code of the account number.","costCentreExtCode":"External code of the cost centre.","projectNoExtCode":"External code of the project number.","salaryTypeExtCode":"External code of the salary type. Not used.","decisionNo":"Decision number attached to the shift.","customerNo":"Customer number attached to the shift.","agrmntAdditionalField1":"Agreement additional field 1.","agrmntAdditionalField2":"Agreement additional field 2.","agrmntAdditionalField3":"Agreement additional field 3.","agrmntAdditionalField4":"Agreement additional field 4.","agrmntAdditionalField5":"Agreement additional field 5.","agrmntPeriodStart":"Start of the agreement period.","agrmntPeriodType":"Agreement period type code.","agrmntPeriodLength":"Agreement period length.","agrmntWorkingHours":"Working hours configured on the agreement.","udf_value_id":"User-defined field value id.","orgScheduleId":"For absence shifts, the id of the scheduled shift the absence originates from. `0` on scheduled shifts and on absence shifts with no origin.","leaveId":"Id of the leave reason.","leaveExtCode":"External code of the leave reason.","productiveTime":"`true` when the shift counts as productive time.","shiftTypeExtCode":"External code of the shift type, when the shift type is mapped under integration keys.","ts":"ISO 8601 timestamp of the last modification."},"ScheduleV2":{"scheduleId":"Id of the scheduled shift. Omitted when the record is an absence shift.","absenceScheduleId":"Id of the absence shift. Omitted when the record is a scheduled shift. When an absence shift originates from a scheduled shift, a reference to the source is in `orgScheduleId`.","restId":"Unit id the shift belongs to.","begDate":"Shift start date.","begTime":"Shift start time.","endDate":"Shift end date.","endTime":"Shift end time.","breakType":"Break configuration code.","begBreak":"Start of break 1.","endBreak":"End of break 1.","begBreak2":"Start of break 2.","endBreak2":"End of break 2.","begBreak3":"Start of break 3.","endBreak3":"End of break 3.","begBreak4":"Start of break 4.","endBreak4":"End of break 4.","persId":"Quinyx id of the assigned employee. `0` when the shift is unassigned.","badgeNo":"Badge number of the assigned employee.","status":"Assignment status","grabbAble":"`1` when the assigned employee is offering the shift for a swap.","grabbId":"Legacy field. Always `0`.","approved":"Approval flag — `1` once approved, `0` otherwise.","managerId":"Id of the manager who owns the shift.","categoryId":"Shift type id.","categoryName":"Shift type name.","comment":"Free-text comment on the shift.","section":"Section id (not the integration key).","sectionName":"Section display name.","hours":"Total shift hours.","fixSchedId":"Id of the fixed schedule the shift belongs to, if any.","shiftChanged":"`1` when the shift was modified since rollout.","costCentre":"Cost centre id attached to the shift.","accountNo":"Account number attached to the shift.","projectNo":"Project number attached to the shift.","unitName":"Display name of the unit.","accountNoExtCode":"External code of the account number.","costCentreExtCode":"External code of the cost centre.","projectNoExtCode":"External code of the project number.","salaryTypeExtCode":"External code of the salary type, when the shift type is mapped under integration keys.","decisionNo":"Decision number attached to the shift.","customerNo":"Customer number attached to the shift.","agrmntAdditionalField1":"Agreement additional field 1.","agrmntAdditionalField2":"Agreement additional field 2.","agrmntAdditionalField3":"Agreement additional field 3.","agrmntAdditionalField4":"Agreement additional field 4.","agrmntAdditionalField5":"Agreement additional field 5.","agrmntPeriodStart":"Start of the agreement period.","agrmntPeriodType":"Agreement period type code.","agrmntPeriodLength":"Agreement period length.","agrmntWorkingHours":"Working hours configured on the agreement.","udf_value_id":"User-defined field value id.","orgScheduleId":"For absence shifts, the id of the scheduled shift the absence originates from. `0` on scheduled shifts and on absence shifts with no origin.","leaveId":"Id of the leave reason.","leaveExtCode":"External code of the leave reason.","productiveTime":"`true` when the shift is configured to count as productive time (i.e. towards the schedule summary headcount).","shiftTypeExtCode":"External code of the shift type, when the shift type is mapped under integration keys.","ts":"ISO 8601 timestamp of the last modification.","leaveReasonId":"Id of the leave reason.","agreementId":"Id of the agreement attached to the shift.","agreementTemplateId":"Id of the agreement template attached to the shift.","hourlyEmployed":"`true` when the employee is hourly employed.","absenceShift":"`true` when the record represents an absence shift.","unassignedShiftCost":"Estimated total cost based on the default shift type. Only included on unassigned shifts when `includeCosts=true`.","netCost":"Net cost. Only included on assigned shifts when `includeCosts=true`.","absenceCost":"Absence (holiday compensation) cost. Only included on assigned shifts when `includeCosts=true`.","socialCost":"Social cost. Only included on assigned shifts when `includeCosts=true`.","totalCost":"Total cost (`netCost + absenceCost + socialCost`). Only included on assigned shifts when `includeCosts=true`.","shiftRequests":"Array of `ShiftRequest` records — shift booking and shift swapping requests.","fixSchedOwnerEmployeeId":"Employee id of the owner of the fixed schedule the shift was rolled out from, if any.","fixSchedOwnerBadgeNo":"Badge number of the owner of the fixed schedule the shift was rolled out from, if any.","approvedLeave":"`true` when an absence shift has been approved by a manager. `false` for non-leave shifts.","countAsScheduledHours":"`true` when the shift counts towards scheduled hours.","approvedLeaveByEmployee":"`true` when an absence shift has been approved by the employee. `false` for non-leave shifts.","subShifts":"Array of `SubShift` records attached to the shift.","tags":"Array of `ShiftCategoriesTag` records. Only present when `includeTags=true`.","extScheduleId":"External id of the shift, when one is set."},"SchedulesV2Response":{"schedules":"Array of `ScheduleV2` records matching the filters.","validationErrors":"Array of human-readable validation messages, populated when the request was rejected."},"ScheduleV3":{"scheduleId":"Id of the scheduled shift. Omitted when the record is an absence shift.","absenceScheduleId":"Id of the absence shift. Omitted when the record is a scheduled shift. When an absence shift originates from a scheduled shift, a reference to the source is in `orgScheduleId`.","restId":"Unit id the shift belongs to.","begDate":"Shift start date.","begTime":"Shift start time.","endDate":"Shift end date.","endTime":"Shift end time.","breakType":"Indicates whether break should be shown. Used by the mobile app only.","begBreak":"Start of break 1.","endBreak":"End of break 1.","begBreak2":"Start of break 2.","endBreak2":"End of break 2.","begBreak3":"Start of break 3.","endBreak3":"End of break 3.","begBreak4":"Start of break 4.","endBreak4":"End of break 4.","persId":"Quinyx id of the assigned employee. `0` when the shift is unassigned.","badgeNo":"Badge number of the assigned employee.","status":"Assignment status","grabbAble":"`1` when the assigned employee is offering the shift for a swap.","grabbId":"Legacy field. Always `0`.","approved":"Approval flag. `0` when a notice of interest is created from mobile (path\n`/user/noi`); `1` when a shift booking is approved from mobile","managerId":"Id of the manager who owns the shift.","categoryId":"Shift type id.","categoryName":"Shift type name.","comment":"Free-text comment on the shift.","section":"Section id (not the integration key).","sectionName":"Section display name.","hours":"Total shift hours.","fixSchedId":"Legacy field from Classic.","shiftChanged":"`1` when the shift was modified since rollout.","costCentre":"Cost centre id attached to the shift.","accountNo":"Account number attached to the shift.","projectNo":"Project number attached to the shift.","unitName":"Display name of the unit.","accountNoExtCode":"External code of the account number.","costCentreExtCode":"External code of the cost centre.","projectNoExtCode":"External code of the project number.","salaryTypeExtCode":"External code of the salary type, when the shift type is mapped under integration keys.","decisionNo":"Decision number attached to the shift.","customerNo":"Customer number attached to the shift.","agrmntAdditionalField1":"Agreement additional field 1.","agrmntAdditionalField2":"Agreement additional field 2.","agrmntAdditionalField3":"Agreement additional field 3.","agrmntAdditionalField4":"Agreement additional field 4.","agrmntAdditionalField5":"Agreement additional field 5.","agrmntPeriodStart":"Start of the agreement period.","agrmntPeriodType":"Agreement period type code.","agrmntPeriodLength":"Agreement period length.","agrmntWorkingHours":"Working hours configured on the agreement.","udf_value_id":"Legacy field from Classic.","orgScheduleId":"For absence shifts, the id of the scheduled shift the absence originates from. `0` on scheduled shifts and on absence shifts with no origin.","leaveId":"Id of the leave reason.","leaveExtCode":"External code of the leave reason.","productiveTime":"`true` when the shift is configured to count as productive time (i.e. towards the schedule summary headcount).","shiftTypeExtCode":"External code of the shift type, when the shift type is mapped under integration keys.","ts":"ISO 8601 timestamp of the last modification.","leaveReasonId":"Id of the leave reason.","agreementId":"Id of the agreement attached to the shift.","agreementTemplateId":"Id of the agreement template attached to the shift.","hourlyEmployed":"`true` when the employee is hourly employed.","absenceShift":"`true` when the record represents an absence shift.","unassignedShiftCost":"Estimated total cost based on the default shift type. Only included on unassigned shifts when `includeCosts=true`.","netCost":"Net cost. Only included on assigned shifts when `includeCosts=true`.","absenceCost":"Absence (holiday compensation) cost. Only included on assigned shifts when `includeCosts=true`.","socialCost":"Social cost. Only included on assigned shifts when `includeCosts=true`.","totalCost":"Total cost (`netCost + absenceCost + socialCost`). Only included on assigned shifts when `includeCosts=true`.","shiftRequests":"Array of `ShiftRequest` records — shift booking and shift swapping requests.","fixSchedOwnerEmployeeId":"Legacy field from Classic.","fixSchedOwnerBadgeNo":"Legacy field from Classic.","approvedLeave":"`true` when an absence shift has been approved by a manager. `false` for non-leave shifts.","countAsScheduledHours":"`true` when the shift counts towards scheduled hours.","approvedLeaveByEmployee":"`true` when an absence shift has been approved by the employee. `false` for non-leave shifts.","subShifts":"Array of `SubShift` records attached to the shift.","tags":"Array of `ShiftCategoriesTag` records. Only present when `includeTags=true`.","extScheduleId":"External id of the shift, when one is set. Only present when `includeExtScheduleId=true`.","dayCount":"Day number of an absence (1-based within the absence sequence).","countAsWorkedHours":"`true` when punched time on the shift should be counted as worked hours.","isFreeDay":"`true` when the shift represents a free day on which the employee is not expected to work."},"SchedulesV3Response":{"schedules":"Array of `ScheduleV3` records matching the filters.","validationErrors":"Array of human-readable validation messages, populated when the request was rejected."},"ScheduleTask":{"id":"Primary key.","scheduleId":"Id of the shift this task belongs to.","categoryId":"Shift category id.","begTime":"Task start time (`00:00:00`–`23:59:59`).","endTime":"Task end time.","ts":"Timestamp of the last update, ISO 8601.","name":"Display name of the category.","onCall":"`0` or `1` — whether the task is an on-call slot."},"ScheduleCategorySkill":{"scatName":"Skill category name.","skillDescription":"Description of the skill."},"Shift":{"scheduleId":"Set to `0` or `\"\"` to create a new shift; supply an existing id to update that shift.","begDate":"Shift begin date.","endDate":"Shift end date.","begTime":"Shift begin time.","endTime":"Shift end time.","persId":"Quinyx id of the employee. Set to `0` if `badgeNo` is used.","badgeNo":"Badge number of the employee. Leave empty if `persId` is used.","shiftCategoryId":"Mandatory to define unless `shiftTypeExtCode` is specified, in which case it can be empty but must still be present.","agreementId":"Agreement id.\n\n`0` = none.","extScheduleId":"External id of the shift. Can only be set when creating a shift; it cannot be edited/updated on an existing shift.","deleteShift":"Whether to delete the shift.","sectionId":"Id in the section table.","extSectionId":"External section id.","comment":"Description of the given shift.","countsAsScheduledHours":"Default inherits from the setting on the shift type.","isFreeDay":"Default inherits from the setting on the shift type.","shiftTypeExtCode":"External code for the shift type, which can be defined through an integration key type.","costCentreId":"Cost centre id.","costCentreExtCode":"External cost centre code.","projectId":"Project id.","projectExtCode":"External project code.","accountId":"Account id.","accountExtCode":"External account code.","tasks":"An array of `Task` records. If present but empty, all tasks are removed; if non-empty, only the included tasks are set.","applyShiftTypeRules":"When set, the shift type rules are applied.","validationErrors":"Array of validation error messages returned for the shift."},"ShiftCategory":{"id":"Primary key.","shiftTypeExtId":"External id of the shift type, when set.","name":"Display name of the shift category.","restId":"Unit (restaurant) id the category belongs to.","begTime":"Default start time. Range `00:00:00`–`23:59:59`.","endTime":"Default end time.","breakType":"`0` hides breaks on the scheduling screen; `1` shows them.","begBreak":"First break start.","endBreak":"First break end.","begBreak2":"Second break start.","endBreak2":"Second break end.","begBreak3":"Third break start.","endBreak3":"Third break end.","begBreak4":"Fourth break start.","endBreak4":"Fourth break end.","section":"Section id. Returns `1` when no section is assigned.","costCentre":"Cost centre id.","salaryType":"Salary type id.","accountNo":"Account id.","projectNo":"Project id.","costCentreExtCode":"External id of the cost centre. Empty string when not set.","salaryTypeExtCode":"External id of the salary type. Empty string when not set.","accountNoExtCode":"External id of the account. Empty string when not set.","projectNoExtCode":"External id of the project. Empty string when not set.","isActive":"True when the shift category is active.","isFreeDay":"True when the shift category represents a free day.","countPunchHours":"True when punched hours count for this shift category.","countScheduleHours":"True when scheduled hours count for this shift category.","sharedToAllUnits":"Whether the shift type is shared to all units. Can only be set via wsdlUpdateShiftTypes on create/update; categories created in the GUI default to `true`.","scheduleCategoryUnits":"Per-unit visibility list. Can only be set via wsdlUpdateShiftTypes.","tags":"Tags connected to the shift type (when `includeTags = true`).","skills":"Skills connected to the shift type (when `includeSkills = true`).","ts":"Timestamp of the last update, ISO 8601.","shiftTypeCategoryName":"Display name of the shift type category, when set."},"ShiftCategoriesTag":{"tagCategoryName":"Name of the tag category.","tagCategoryExternalId":"External id of the tag category.","tagName":"Display name of the tag.","tagCode":"Internal code of the tag.","tagExternalId":"External id of the tag.","customFields":"Array of `TagCustomField` records carrying tag-specific custom values."},"ShiftRequest":{"employeeId":"Quinyx id of the employee applying for the swap or booking.","badgeNo":"Badge number of the employee applying for the swap or booking.","requestType":"Type of request:","swappedScheduleId":"Id of the shift to swap with, when `requestType=1`.","fulfills":"`true` when the requesting employee fulfils the rules for the shift.","ts":"ISO 8601 timestamp of when the request was made."},"Skill":{"skillId":"Unique id of the skill.","skillDescription":"Description of the skill.","ts":"Timestamp of the last update, ISO 8601."},"SkillCategory":{"scatId":"Unique id of the skill category.","scatShortname":"Short name of the category.","scatName":"Display name of the category.","skills":"Array of `Skill` records belonging to this category.","ts":"Timestamp of the last update, ISO 8601."},"SkillItem":{"skillId":"Quinyx internal id of the skill. When set, the existing skill is updated; otherwise a new skill is created.","extSkillId":"External skill id. When set without `skillId`, the matching existing skill is updated; otherwise a new skill is created.","skillDescription":"Description of the skill.","skillCategoryId":"Id of the skill category this skill belongs to.","ts":"Timestamp of the last update, ISO 8601.","validationErrors":"Array of validation errors. Empty on success."},"StandardOpenHours":{"dayOfWeek":"Day of the week.","timeStart":"Opening time.","timeEnd":"Closing time.","dateStart":"Date from which this entry is valid."},"DeviatingOpenHours":{"timeStart":"Opening time.","timeEnd":"Closing time.","date":"Date the deviation applies to."},"SubShift":{"id":"Task id.","categoryId":"Shift type id of the sub-shift.","categoryName":"Shift type name of the sub-shift.","begTime":"Sub-shift start time.","endTime":"Sub-shift end time.","section":"Section id attached to the sub-shift.","projectNo":"Project number attached to the sub-shift.","costCentre":"Cost centre id attached to the sub-shift.","tags":"Array of `ShiftCategoriesTag` records. Only present when `includeTags=true`."},"Tag":{"categoryExternalId":"External id of the tag category.","tagExternalId":"External id of the tag."},"TagCustomField":{"label":"Custom field label.","value":"Custom field value."},"Task":{"shiftTypeExtCode":"External shift-type code. Ignored when `shiftTypeId` is set.","shiftTypeId":"Shift-type id. Takes priority over `shiftTypeExtCode`.","begTime":"Task start time.","endTime":"Task end time."},"TemplateOverTime":{"id":"Primary key","ts":"Timestamp formatted to ISO 8601"},"TemplateRedDay":{"id":"Primary key","ts":"Timestamp formatted to ISO 8601"},"TemplateShift":{"id":"Primary key","ts":"Timestamp formatted to ISO 8601"},"TextItem":{"id":"Id of the text item. Pass to update an existing one; omit to create a new one.","ttext":"Display name of the text item.","extCode":"External id of the text item (e.g. the code used in a payroll system).","showInWebpunch":"`0` / `1`. Only honoured when `tag = D` (cost centres). Defaults to `1` when omitted for cost centres.","checked":"`true` / `false`. Whether the text item is checked / active.","validationErrors":"Returned in the response only. Array of error strings on failure; empty on success."},"TimePunch":{"id":"Internal id in timepunch table.","employeeName":"Full name of the employee.","restId":"Unit id the punch belongs to.","badgeNo":"Badge number of the employee.","socsecNo":"Social security number of the employee.","cardNo":"Card number used for the punch.","employeeId":"Quinyx internal id of the employee.","externalInfo1":"External information field 1.","externalInfo2":"External information field 2.","externalInfo3":"External information field 3.","subShiftReference":"Subshift reference id when the punch is attached to a subshift task.","punchIn":"The timezone provided in the response should be ignored. The timestamp will be in the local timezone of the unit. In other words if the timezone is +3, the time returned is in +3 although the timezone will show +1 which is incorrect","punchOut":"The timezone provided in the response should be ignored. The timestamp will be in the local timezone of the unit. In other words if the timezone is +3, the time returned is in +3 although the timezone will show +1 which is incorrect","hours":"Number of hours as a decimal value","approvedByEmployee":"Indicates if the punch has been approved by the employee","approvedByManager":"Indicates if the punch has been approved by the manager","approvedByCustomer":"Indicates if the punch has been approved by customer, this is only applicable if the punch is related to a customer in the customer and order module.","costCentre":"External code for the cost centre","projectNo":"External code for the project","accountNo":"External code for the account number","agrmntAdditionalField1":"Additional information from the employee agreement.","agrmntAdditionalField2":"Additional information from the employee agreement.","agrmntAdditionalField3":"Additional information from the employee agreement.","agrmntAdditionalField4":"Additional information from the employee agreement.","agrmntAdditionalField5":"Additional information from the employee agreement.","decisionNo":"Decision number, used in the customer and order module","customerNo":"Decision number, used in the customer and order module","scheduleId":"Identifies the shift the time punch is related to.","transferredToPayroll":"Indicates if time punch has been transferred to payroll and locked.","deleted":"Indicates if the time punch has been deleted.","isOpen":"True if the punch is open (employee has not punched out)","comment":"Comment entered on the punch by the employee","managerComment":"Comment entered on the punch by the manager","shiftCategoryId":"Shift Type Id connected to the punch(if shiftTaskInfo is set to true)","extShiftCategoryId":"External Shift Type Id connected to the punch(if shiftTaskInfo is set to true)","shiftCategoryName":"Shift Type Name connected to the punch(if shiftTaskInfo is set to true)","orgPunchIn":"The original punch in time, before rounding or correction is done","orgPunchOut":"The original punch out time, before rounding or correction is done"},"TransferStatus":{"extTransferId":"External transfer id supplied with the request.","status":"Current status of the transfer (`In Progress`, `Failed`, `Ready to Download`).","validationErrors":"Array of validation errors, if any."},"Unit":{"id":"Unit id.","extUnitId":"External unit id.","groupId":"Group id (Neo).","extGroupId":"External group id (Neo).","name":"Unit name.","extApplicationId":"Application id shown on the unit card.","managerId":"Employee id of the unit manager.","managerBadgeNo":"Badge number of the unit manager.","managerGroupId":"Manager group id.","maxHourDay":"Maximum hours per day.","maxHourWeek":"Maximum hours per week.","minShift":"Minimum shift length.","minRest":"Minimum rest between shifts.","publishedTo":"Last date to which shifts are published to the employee section and can be booked.","currency":"Currency code (e.g. `USD`, `SEK`).","noBreaks":"Number of breaks per shift (0–4).","premium1":"When salary/cost for overtime 1 is not specified on agreements or shift types, it is calculated as `normal * premium1 / 100`.","premium2":"When salary/cost for overtime 2 is not specified on agreements or shift types, it is calculated as `normal * premium2 / 100`.","businessBreak":"Business break setting for the unit.","costCentre":"Internal id of the cost centre.","costCentreExtCode":"External id of the cost centre. Empty string when not set.","districtId":"District the unit belongs to. `0` if no district is set.","country":"Country.","address":"Street address.","zipCode":"Zip / postal code.","city":"City.","municipality":"Municipality.","nextBadgeNo":"Next badge number to assign in this unit.","timeZone":"IANA time zone name.","ssoLoginOnly":"When true, only SSO login is permitted for this unit.","geos":"Array of `Geo` coordinates associated with the unit.","ts":"Timestamp of the last update, ISO 8601.","standardOpenHours":"Array of `StandardOpenHours` rows defining the unit's regular opening hours.","deviatingOpenHours":"Array of `DeviatingOpenHours` rows for one-off openings or closures.","validationErrors":"Populated when a call (e.g. `wsdlGetUnits`) is made with a non-root API key. Empty otherwise."},"UnitEmployee":{"api_key":"API key of the employee's home unit.","unitName":"Name of the employee's home unit.","extApplicationId":"External application id of the home unit (when configured on the unit card).","badgeNo":"Badge number of the employee.","employeeId":"Quinyx internal id of the employee.","email":"Email of the employee."},"UnitKey":{"id":"Unit id.","groupId":"Group id (Neo).","extGroupId":"External group id.","name":"Unit name.","extUnitId":"External unit id.","API_key":"The unit's API key. Treat as confidential.","extApplicationId":"External application id. Only returned when non-empty.","districtId":"District id of the unit.","costCentre":"Cost centre id.","costCentreExtCode":"External cost centre code.","validationErrors":"Populated only when the call is made with a non-root API key."},"UnitKeyV2":{"id":"Unit id.","companyNo":"Company number from the unit card.","districtGroupId":"Group id of the unit's district.","districtExtGroupId":"External group id of the unit's district.","publishedTo":"Schedule publication date. `1970-01-01` means nothing is published.","groupId":"Group id (Neo).","extGroupId":"External group id.","name":"Unit name.","extUnitId":"External unit id.","API_key":"The unit's API key. Treat as confidential.","extApplicationId":"External application id. Only returned when non-empty.","districtId":"District id of the unit.","costCentre":"Cost centre id.","costCentreExtCode":"External cost centre code.","validationErrors":"Populated only when the call is made with a non-root API key."},"UpdateAgreement":{"id":"Identifies the agreement. Optional parameter that can be omitted or set to 0 if not used.","extAgreementId":"External identification of the agreement; will automatically map to an internal id.","name":"If name is not supplied a default based on the agreement template or the employee's name will be used.","badgeNo":"Identifies the employee and is required if `id` is not specified.","restId":"Identifies the unit of the employee.","weekHours":"Preferred hours in a week.","minHours":"Minimum hours in a week.","maxHours":"Maximum hours in a week.","salary":"For hourly agreements this sets the hourly salary; for monthly agreements it sets the monthly salary and hourly salary is recalculated based on working hours.","monthlySalary":"Monthly salary. Overrides anything set by `salary`.","hourlySalary":"Hourly salary. Overrides anything set by `salary`.","premiumSalary":"Not used anymore.","premiumSalary2":"Not used anymore.","premiumSalary3":"Not used anymore.","fromDate":"From this date the agreement is valid.","toDate":"To this date the agreement is valid.","periodType":"Salary period type.","periodStart":"The date that the agreement became valid.","periodLength":"Salary period length. If `periodType` is 0 and `periodLength` is 1 the total salary period is 1 month.","weeklyAvg":"Calculated hours a week.","empLevel":"Employment level. 1 = 100%, 0 = 0%, 0.42 = 42%.","templateId":"If an agreement template is used, this id represents the primary key from wsdlGetAgreementTemplates.","useTempAvail":"Indicates whether availability from the agreement template is used, or specified on the individual agreement.","useTempTimeRules":"Indicates whether time rules from the agreement template are used, or specified on the individual agreement.","useTempSalary":"Indicates whether salary information from the agreement template is used, or specified on the individual agreement.","useTempWorkTime":"Indicates whether working time from the agreement template is used, or specified on the individual agreement.","useTempMonthHours":"Indicates whether monthly hours from the agreement template are used, or specified on the individual agreement.","useTempRedDates":"Not used anymore.","useTempTandA":"Indicates whether time options from the agreement template are used, or specified on the individual agreement.","overtimeMethod":"Overtime Method:","additionalField1":"Additional information 1 used for customer information.","additionalField2":"Additional information 2 used for customer information.","additionalField3":"Additional information 3 used for customer information.","additionalField4":"Additional information 4 used for customer information.","additionalField5":"Additional information 5 used for customer information.","useTempCosts":"Indicates whether social cost and absence cost from the agreement template are used, or specified on the individual agreement.","roundingBreaks":"Indicates whether breaks should be rounded to origin schedule breaks. Only valid for agreements whose punch type is \"punching in/out and breaks\".","punchRoundings":"An array of `punchRounding` rules.","agreementOvertimeMethods":"An array of `agreementOvertimeMethod` rules.","isMainAgreement":"Indicates whether the agreement should be set as the main agreement for the employee.","showUnspecifiedLeaveInWP":"False means ignore leave reason in Webpunch 3.","customMonthlyHoursDivisor":"If set, updates the customMonthlyHoursDivisor field. If `hourly` is also false, hourly salary is recalculated based on the new divisor.","validationErrors":"Returned in the response only. Array of error strings if the update failed; empty array on success."},"UpdateAgreementV2":{"id":"Agreement Id. Can be omitted or set to 0 if not used.","extAgreementId":"External code (max 50 characters) used to identify the agreement. If no agreement is found for the given `extAgreementId`, a new agreement is created. Must be unique.","templateId":"Specifies the agreement template to use. Use wsdlGetAgreementTemplates to retrieve available template ids.","extTemplateId":"External code used to identify the agreement template.","name":"If no name is specified, the template name will be used for new agreements.","restId":"Only used in the response — the API key sets the unit for the agreement.","employeeId":"Identifies the employee using the Quinyx id.","badgeNo":"Identifies the employee using the badge number.","fromDate":"If not provided, today's date is used.","toDate":"If not provided, today + 1 year is used.","expires":"Indicates whether the agreement expires. If false, `toDate` is ignored.","comment":"Free-form comment on the agreement.","schedulePeriodLength":"Length of schedule period according to the schedule period type","schedulePeriodStartDate":"The start date of the schedule period.","fullEmploymentDays":"Number of working days in the period","fullEmploymentDaysPerWeek":"Number of working days in a week, used together with full time employment days and full time employment hours to calculate nominal hours","fullEmploymentHrs":"Number of working hours in the period, as specified by the full time employment days","excludeSundaysInWorkHours":"Indicate if Sundays shall reduce working hours, only used together with overtime based on workday model","breakRounding":"Indicates if breaks shall be rounded to match scheduled breaks","breakIsWorkTime":"Indicate if scheduled breaks shall be considered as working time","dayBreak":"Daybreak used in relation to counting of scheduled and worked hours which affect also over time calculation","minHrsWeek":"Minimum working hours per week","maxDays":"Max consecutive working days in a row","minFreeDays":"Minimum free days following the maximum period","maxHourDay":"Maximum hours per day","maxHourWeek":"Maximum hours per week","minRest":"Minimum hours rest per day","minRestWeek":"Minimum hours rest per week","seqDays":"Number of days in sequence rule period.","seqMaxDays":"Maximum number of working days in sequence period.","seqMaxHrs":"Maximum number of working hours in sequence period.","weekStart":"First day of the week.","atDayBreak":"Indicates if daily rest should be directly after daybreak","dayBreakRest":"Defines the start of the day, and is used for rules like daily/weekly rest","minBreak":"Minimum length of breaks in minutes","maxBreak":"Maximum length of breaks in minutes","weeksAvail":"Number of weeks in available schedule","schedWeekEnds":"Indicates if weekend can be scheduled","minWeekEndYear":"Minimum number of free weekends per year","maxTimeWoBreak":"Maximum number of working hours without break","scheduleLockPeriod":"Period for warning about late changes","scheduleLockPeriodType":"Type of period for warning about late changes.","checkAvailability":"Indicates if availability shall be checked","appPayOnAbsence":"Approve payment on absence","payOtime":"Indicate how overtime shall be compensated.","payUT":"Indicate how unsocial time shall be compensated.","showIgnoreOtime":"Indicates if user can select ignore overtime in web punch","showUnspecifiedLeaveInWP":"Indicates if unspecified leave can be selected in web punch","allowPunchingOnSubshifts":"Indicates if user can punch on subshifts","genMoretime":"Indicates if additional time shall be generated (only applies to old over time methods).","overtimeMethod":"Old overtime method.","overtimeWindow":"Number of days for over time method 3","autoPunchOut":"Number of hours before employee will be automatically punched out","lateChange":"Indicates if late change shall be compensated","lateChangeUT":"The unsocial time level that shall be used as compensation","breakDayrest":"Indicate if break of daily rest shall be compensated","breakDayrestUT":"The unsocial time level that shall be used as compensation","breakWeekrest":"Indicate if break of weekly rest shall be compensated","breakWeekrestUT":"The unsocial time level that shall be used as compensation","timeBank":"Indicate if flex time/bank time shall be used","adjustForLeave":"Indicates if nominal hours shall be reduced for leave","advancedTimeRules":"Indicates if advanced time rules shall be used (danish rules)","otCancelsUt":"Indicates if over time shall override unsocial time","allowOverrideOverlapping":"Indicates if warning of overlapping shift can be ignored.","utThreshold":"Working hours that shall be reached during specified period, for unsocial time to be paid","dailyOvertimeHours":"Number of hours before daily overtime will be generated, used with overtime method 5","weeklyOvertimeHours":"Number of hours before daily overtime will be generated, used with overtime method 5","noCostPeriodStart":"Start day for period where cost shall not be calculated","noCostPeriodEnd":"End day for period where cost shall not be calculated","balancePeriodLength":"Number of days/months in balance period","balancePeriodHours":"Number of working hours in balance period","balancePeriodStartDate":"Start date of the balance period","useWorkDayModel":"Use work day model for nominal hours calculation, only used with new overtime","isMainAgreement":"Indicates if this is the main agreement of the employee","additionalField1":"Free field","additionalField2":"Free field","additionalField3":"Free field","additionalField4":"Free field","additionalField5":"Free field","useTempAvail":"Indicates if template values is used for availability","useTempTimeRules":"Indicates if template values is used for time rules","useTempSalary":"Indicates if template values is used for salary related information","useTempWorkTime":"Indicates if template values is used for work time related information","useTempEmploymentRate":"Indicates if template values is used for employment rates","useTempMonthHours":"Indicates if template values is used for monthly hours","useTempTandA":"Indicates if template values is used for time related information","useTemplateBalancePeriod":"Indicates if template values is used for balance period","useTempCosts":"Indicates if template values is used for social and leave costs","useTempNominalDaysPerWeek":"Indicates if template values are used for nominal days per week","useStdTimeRules":"Indicates if standard time rules shall be used","availability":"An array of `AvailabilityTimePeriod`.","monthlyHours":"An array of `MonthlyHours`.","overtimeMethods":"An array of `agreementOvertimeMethod`. Used with the new overtime feature.","punchDeviations":"An array of `punchRounding`.","employmentRatesAdd":"Use this section to add employment rates to current entry","employmentRatesReplace":"Use this section to replace current employment rates with specified values","nominalDaysPerWeekAdd":"Use this section to add nominal days per week to current entry","nominalDaysPerWeekReplace":"Use this section to replace current nominal days per week with specified values","salariesAdd":"Use this section to add salaries to current entry","salariesReplace":"Use this section to replace current salaries with specified values","salaryAdditionsAgeBasedAdd":"Use this section to add salary additions with specified values","salaryAdditionsAgeBasedReplace":"Use this section to replace current salary additions with specified values","useTemplateAgeBasedSalaryAddition":"Indicates if template values are used for age based salary additions","salaryAdditionsYearsWorkedBasedReplace":"Use this section to replace current salary additions with specified values","useTemplateYearsWorkedBasedSalaryAddition":"Indicates if template values are used for years worked based salary additions","salaryAdditionsDateBasedReplace":"Use this section to replace current salary additions with specified values","breakCalculationRules":"An array of `BreakCalculationRule`.","validationErrors":"Returned in the response only. Array of error strings if the update failed; empty array on success.","hoursPerDay":"Specifies the working hours per day, if nominalHoursType = 1"},"UpdateDistrict":{"id":"Can be used as the identifier when updating an existing district.","groupId":"Returned in the response. Should not be set in the request.","extGroupId":"Can be used as the identifier when updating; created on the new or updated district otherwise.","name":"District name. Required when creating.","managerId":"Employee id of the district manager.","managerBadgeNo":"Badge number of the district manager.","validationErrors":"Array of validation errors. Empty on success."},"UpdateEmployee":{"badgeNo":"Mandatory. `badgeNo` is the unique identifier for this employee. If it is not found in Quinyx the employee is inserted; if it exists the employee is updated.","newBadgeNo":"New `badgeNo` to replace the existing one.","loginId":"A second option to log in to Quinyx WFM, used instead of email. Deprecated for login — can still be used as an SSO identifier.","restId":"Identification of the employee unit. Not used on input — the API key identifies the employee's unit.","givenName":"First name. Mandatory when creating a new employee.","familyName":"Last name. Mandatory when creating a new employee.","email":"Used as login. Will be rewritten by Quinyx WFM if the provided email is not unique; the output will contain the changed email.","earlyAccessDate":"If set to a date earlier than `employedDate`, the employee can access the Quinyx mobile app from this date. Used only on creation — ignored on update. Creates an early-access role starting on this date and ending the day before `employedDate`.","cardNo":"Used in T&A integrations.","staffCat":"The staff category id. If not provided, the staff category with the lowest role is used as the default.","extStaffCategory":"The external staff category id.","punchType":"Not used.","password":"MD5-hashed password used to log in to Quinyx.","passwordTandA":"MD5-hashed password used to log in to third-party T&A applications.","active":"Indicates whether the employee is active and can log in / show up in Quinyx.","passive":"Indicates whether the employee is passive.","isLockedMsg":"Message shown to the user when they try to log in while the account is locked.","leaveDate":"Must be a valid date but can be empty in the request when `active = 1`. Only required when `active = 0`. The employee's last working day. The leave date cannot equal `employedDate`.","socsecNo":"Social Security Number.","costCentre":"Main cost centre for the employee.","role":"Legacy role id — no longer used. Role is now derived from the staff category.","rank":"Rank of the employee. Must not be larger than 100.","nextOfKind":"Name of next of kin.","nextPhone":"Phone number of next of kin.","info":"Additional information.","useSMS":"Information will be sent by SMS.","useMail":"Information will be sent by email.","useQmail":"Information will be sent by Qmail.","reportingTo":"`-1` or a BadgeNo. Pass `-1` to reset the employee's manager. Otherwise the badge number of the employee's manager — must be a user with a higher role than the employee on any group or (in Classic) a staff category at or above section manager.","resetPassword":"The employee must reset their password at next login.","extCostCentre":"External identifier of the cost centre. The code is configured under cost centres in tables.","extSectionId":"External identifier of the section. Configured under Group management → Section integration keys, or via wsdlUpdateSections. Maps an external code to the internal section id.","resetSection":"Removes the section from the employee when true. If both `resetSection` and `extSectionId` are passed, `extSectionId` is ignored.","DeleteFutureUnattestedPunches":"Indicates whether future time punches are deleted when the employee's home unit changes.","shareAble":"Indicates whether the employee is shareable by other units.\n\nNote: this feature must be enabled by Quinyx Support before the shareable status is visible inside Quinyx — contact Support if you can't see it.","workInUnits":"An array of units the employee may work in beyond their home unit.","workInUnitsUpdateOption":"Required when sending `workInUnits`.","sharedScheduling":"Indicates whether fixed schedules are shareable to other units.","allowAttestOfOwnPunches":"Indicates whether a manager can attest their own punches and absences.","hasBankId":"Indicates whether the employee has BankID.","legalGuardianName":"Full name of the employee's legal guardian (if any).","legalGuardianEmail":"Email address of the employee's legal guardian (if any).","additionalFields":"Array of `AdditionalFieldData` — see the type definition.","emailFixConflict":"Not a real field on the employee — it's a switch. When set to 1, email conflicts are handled by generating a new email and returning a warning for each affected employee.","keepShiftsOnMove":"Controls what happens to existing shifts when an employee moves between units.\n- `false`: shifts are unassigned and fixed schedules move to the new unit.\n- `true`: shifts and fixed schedules stay in the old unit, and the employee is automatically shared back to the old unit. It can only be used when the employee is shareable.\nNote: \"Fixed Schedules\" here refers to Classic and is not the same as Base Schedule. `shareAble` must be set to `true` in a separate call before `keepShiftsOnMove` has any effect.","myDistrict":"District id for District managers.","replaceNeoGroup":"`true` replaces all current Neo group(s); `false` adds the group(s) to the employee.","generateNextBadgeNo":"When true and `badgeNo` is empty, Quinyx assigns the next available badge number in the unit/customer.","groupRoles":"An array of `GroupsRoles` — see the type definition.","updateNeoGroup":"Update an existing role without removing others. Pass the existing `groupId` and `roleId` so Quinyx can match the row and update `startDate` / `endDate`.","throwExceptionOnHomeUnitEndDate":"Strongly recommended to set to `true`. When true, you receive an exception if you are updating roles and the role being updated is the only role on the employee's home unit.","validationErrors":"Returned in the response only. Array of error strings if the update failed; empty array on success."},"UpdateEmployeePortrait":{"badgeNo":"Badge number of the employee whose portrait is being uploaded.","portrait":"Base64-encoded image to use as the employee's portrait.","validationErrors":"Returned in the response only. Array of error strings if the update failed for this employee; empty array on success."},"UpdateEmployeeSkill":{"persId":"Quinyx internal id of the employee. Set to `0` when using `badgeNo`.","badgeNo":"Badge number of the employee. Identifies the employee when `persId` is not used.","addSkills":"When `1`, the supplied skills are merged with the employee's existing skills (matching ids are updated). When missing or not `1`, all existing skills are replaced with the supplied set.","jobSkills":"Array of `JobSkill` records to assign.","validationErrors":"Returned in the response only. Array of error strings if the update failed; empty on success."},"UpdateShiftType":{"name":"Display name of the shift type.","id":"Id of the shift type. Required when updating; leave empty / `0` to create.","shiftTypeExtId":"External id of the shift type. When present in the DB it overrides `id`; otherwise it's created/updated alongside the shift type.","comment":"Free-form comment (e.g. location address).","costHourly":"Hourly cost used to estimate the cost of unassigned shifts.","timeStart":"Default start time. Seconds must be `00`. Empty for none.","timeEnd":"Default end time. Must be set when `timeStart` is set.","sectionId":"Section id, or `0` for no section.","breakStart":"First break start. Empty for none.","breakEnd":"First break end. Required when `breakStart` is set.","breakStart2":"Second break start.","breakEnd2":"Second break end. Required when `breakStart2` is set.","breakStart3":"Third break start.","breakEnd3":"Third break end.","breakStart4":"Fourth break start.","breakEnd4":"Fourth break end.","shiftTypeCatId":"Shift-type category id.","skills":"Array of `Skill` records to attach to the shift type.","costCentreId":"Cost-centre id, or `0` / empty for none.","costCentreExtCode":"External cost-centre code. Ignored when `costCentreId` is set.","projectId":"Project id, or `0` / empty for none.","projectExtCode":"External project code. Ignored when `projectId` is set.","accountId":"Account id, or `0` / empty for none.","accountExtCode":"External account code. Ignored when `accountId` is set.","bgColor":"Background colour as a decimal value.","textColor":"Text colour as a decimal value. Not used by Quinyx Web (Neo); applies to Classic only.","useColors":"`true` to honour `bgColor`/`textColor`. Empty or unparseable values are treated as false.","costUT1":"Cost factor for unsocial-time level 1.","costUT2":"Cost factor for unsocial-time level 2.","costUT3":"Cost factor for unsocial-time level 3.","costUT4":"Cost factor for unsocial-time level 4.","costUT5":"Cost factor for unsocial-time level 5.","costUT6":"Cost factor for unsocial-time level 6.","costUT7":"Cost factor for unsocial-time level 7.","costUT8":"Cost factor for unsocial-time level 8.","isActive":"Whether the shift type is active.","isFreeDay":"Whether the shift type represents a free day.","countPunchHours":"Whether punched hours count for this shift type.","countScheduleHours":"Whether scheduled hours count for this shift type.","tasks":"Array of `Task` records — subshift tasks attached to this shift type.","sharedToAllUnits":"When true, share the shift type with every unit on the customer.","replace":"`true` deletes existing `scheduleCategoryUnits` entries and writes the supplied set; `false` only appends. Mandatory when setting `scheduleCategoryUnits`.","scheduleCategoryUnits":"Array of `scheduleCategoryUnit` — per-unit visibility configuration.","tags":"Array of `Tag` records to attach to the shift type. Empty array clears all tags.","validationErrors":"Returned in the response only. Array of error strings on failure; empty on success."},"UpdateTimePunch":{"id":"Id of the timepunch to edit, leave 0 when inserting new.","persId":"Set to 0 if badgeNo or cardNo is used.","badgeNo":"Set to 0 if persId or cardNo is used.","cardNo":"Set to 0 if persId or badgeNo is used.","auth1":"Time attested by employee","bossAuth":"Time attested by manager","shiftReference":"Shift id to connect punch to, 0 to select best choice automatically.","applyRounding":"set to true to enable punch in/out rounding based on agreement settings","agreementId":"Internal agreement id. If not set or set to 0, the system picks the agreement relevant to the time punch.","comment":"Free-form comment from the employee.","costCentreCode":"Internal cost-centre id.","mgrComment":"Free-form manager comment.","projectCode":"Internal project id.","salaryType":"Salary type id.","salaryTypeExtCode":"External salary-type code.","externalInfo1":"External information field 1.","externalInfo2":"External information field 2.","externalInfo3":"External information field 3.","decisionId":"Decision id.","decisionNo":"Decision number. Requires `customerNo`.","customerNo":"Customer number, used together with `decisionNo`.","teamId":"Team id.","teamExtCode":"External team code.","validationErrors":"Returned in the response only. Array of error strings on failure; empty on success."},"WorkInUnit":{"extUnitId":"Note: providing an erroneous or duplicate value will result in an integration key validation exception."},"agreementOvertimeMethod":{"overtimeMethodId":"Use webservice wsdlGetOvertimeMethods to get id’s of existing methods.","order":"Indicates the order in which overtime methods are calculated"},"baseScheduleRollout":{"badgeNos":"Array of employee badge numbers to query.","fromDateTime":"Start of the date/time range.","toDateTime":"End of the date/time range."},"baseScheduleRolloutData":{"employeesRolloutHours":"Array of `EmployeeRolloutHours` rows — one per requested employee.","validationErrors":"Array of validation errors. Empty on success."},"createUnitInfo":{"id":"Unit id.","extApplicationId":"External application id, if one was supplied on input.","name":"Unit name.","API_key":"API key issued for the new unit.","validationErrors":"Array of validation errors. Empty on success."},"empSkill":{"skillDescription":"Description of the skill.","shiftTypeName":"Shift type the skill is linked to, when set.","shiftTypeId":"Shift type id the skill is linked to, when set.","skillExpires":"`1` when an expiring date is set, `0` otherwise.","skillExpiringDate":"Date the skill expires, when `skillExpires = 1`."},"employeeSkill":{"unitName":"Name of the employee's home unit.","employeeBadgeNo":"Badge number of the employee.","employeeFirstName":"Given name of the employee.","employeeFamilyName":"Family name of the employee.","skills":"Array of `empSkill` records the employee holds."},"getLeaveApplicationsV2Request":{"employeeId":"Optional selection on employee, shall be Quinyx internal identification of the employee if used.","badgeNo":"Optional selection on employee, using the employee badge number.","sectionId":"Optional selection on section, shall be Quinyx internal identification of the section if used.","fromDate":"Selects leave applications with end date that is after specified fromDate.","toDate":"Selects leave applications with from date that is before specified toDate.","modifiedAfter":"Used to select transactions that have been modified after specified date and time.","allUnits":"Indicates if request shall include leave applications for all units or only the unit specified by the api key.NOTE:Depending on size this option could result in a time out. In that case loop through each unit."},"getPayrollV2Request":{"fromDate":"Inclusive start of the range.","toDate":"Inclusive end of the range.","attest":"Set to `true` to include only approved time punches.","pSalType":"Comma-separated transaction type filter","empInUnitOnly":"`true` to return only staff from the current unit; `false` to also include everyone who has worked on this unit from other units.","employeeId":"Filter on a single Quinyx employee id.","badgeNo":"Filter on a single employee badge number.","isTransferingToPayroll":"Set to `true` to only include salaries that get sent to payroll.","approvedSalaryStatus":"Limit results by salary approval status:","includeCosts":"Include `netCost`, `absenceCost`, `socialCost`, and `totalCost` in the response","costCalculationType":"Cost calculation method. Has no effect unless `includeCosts` is `true`.","includeTags":"Set to `true` to include `tags` on each `PayrollV2` row.","includeStCode":"Set to `true` to include `stCode` (salary type code) on each `PayrollV2` row."},"getTimePunchesRequest":{"employeeId":"Optional selection on employee, using the internal identification of the employee.","badgeNo":"Optional selection on employee, using the employee badge number.","sectionId":"Optional selection on section, using internal identification of the section.","shiftTaskInfo":"If you want to include the shift type connected to the punch","transferredToPayroll":"Include time punches that has been transferred to payroll and locked.","notTransferredToPayroll":"Include time punches that hasn’t been transferred to payroll.","approved":"Include approved time punches.","unapproved":"Include unapproved time punches.","active":"Include active punches (not deleted)","deleted":"Include deleted time punches.","allUnits":"Include punches from ALL units instead of the unit specified by API key only","modifiedAfter":"2021-01-01 00:00:00 .This is compared to the timestamp of the timepunch that is stored in CET.","employeeUnitMode":"Controls which punches to fetch based on the unit of the API key. Either fetch all punches\nfrom employees who has that unit as home unit, alternatively to fetch all punches punched\nat that unit (no matter the home unit of the employee punching in)"},"hoursDay":{"hours":"0 to 24"},"moveEmployee":{"badgeNo":"Employee badge number.","sharableOnNewUnitFrom":"Date the employee becomes shared to the new unit.","newUnitStartDate":"Date the employee is actually moved to the new home unit.","oldUnitEndShareDate":"Date the share with the old unit ends.","unitExtCode":"Legacy field. When supplied, overrides the target unit implied by the `apiKey`. New unit external code defined under *Settings → Tables → Integration key types*.","reportingTo":"Badge number of the employee's manager. Must be a user with a higher role than the employee on any group, or (in Classic) a staff category at or above section manager. When omitted, `reportingTo` is reset on the employee after the move.","section":"External code defined under *Settings → Tables → Integration key types* and Integration keys. When omitted, the section is reset on the employee after the move.","costCentre":"External code defined under *Settings → Tables → Cost centres*.","moveId":"Identifier of the scheduled move. Generated and returned on the initial request; pass it back to amend a pending move.","validationErrors":"Array of validation errors. Empty on success."},"otLevel":{"hours":"Hours that must be reached for this overtime level to apply."},"punchRounding":{"minutes":"Minutes needed to apply the rule. For adjustment type, indicates the interval."},"reverseInfo":{"endDate":"maximum 31 days","badgeNos":"maximum 200 employees","validationErrors":"Not an active part of the request. will only be visible in the response."},"scheduleCategoryUnit":{"externalUnitId":"External unit id. Ignored when `unitId` is supplied.","unitId":"Unit id. Required when `externalUnitId` is not set.","visibleInWebpunch":"`true` to make this shift type visible in Webpunch for the unit."},"searchOption":{"extTransferId":"Choosable text string to identify the “payroll run”. Used later on in wsdlGetResultTransferToPayroll","userIds":"its an array of user id","badgeNos":"if userIds is specified this will be ignored","unitIds":"unit Ids of the employee. You only have access to the unit id of the api key unless the api key is for the root unit id of the customer, in this case u have access to all the units","extUnitIds":"if unitIds is specified this will be ignored","costCentres":"CostCentre Ids","extCostCentres":"External CostCentres Ids","sectionIds":"Section ids","extSectionIds":"Ext Section Ids","staffCategories":"Staff Categories Ids","skills":"Skill ids","includeNotFullyApproved":"`true` means that if there are any unattested punches in the selected period (i.e., the\nperiod is not fully approved), the period will be included (only attested punches).\nfalse means that if there is even one unattested punch, the entire period will be\nexcluded.","payrollSystem":"Controller Name,\n\nif you dont specific it we will use a default salary file we created for this service","isPreliminary":"Select if the payroll file should be preliminary or final (final locking all transactions)","lockSalaryPeriod":"The lockSalaryPeriod variable will either lock or unlock the period given the values (1 or 0). If it is omitted it will not change the current status at all.","uploadFileToServer":"true if upload to ftp( don't forget to setup your ftp setting), default = false"},"standardBankHoliday":{"id":"Id of the Bank holiday","redDate":"Date of the Bank holiday","description":"Name of the Bank holiday","reduxBefRedDay":"The reduction of nominal hours on a day before bankholiday","reduxBefRedDayType":"Whether the reduction is expressed in percent or hours","reduxRedDay":"The reduction of nominal hours on a bankholiday","reduxRedDayType":"Whether the reduction is expressed in percent or hours","countAsScheduledHours":"Select and define times if only certain times are to be counted against overtime and the unsocial hours limit.","noDates":"Defined dates that if they are scheduled on this date, They then can not be scheduled on the defined date","salaryTypeRules":"Array of rules, see below for definition","manualSalaries":"Array of manual salaries, see below for definition","overtimes":"Array of standardovertime for the bank holiday","createLeaveIfScheduled":"Enter if leave is to be created if there is no time punch","createLeaveReasonId":"If above is set to 1. What leavereason is to be created","onlyTheseUnitGroups":"The unit groups the bank holiday is connected to"},"standardOvertime":{"firstType":"It must be set to 1 when it is Unsocial time"},"timeTracker":{"userId":"Quinyx internal id of the employee. Specify either this or `badgeNo`.","badgeNo":"Badge number of the employee. Specify either this or `userId`.","timeTrackerId":"Time tracker id.","period":"Period (year) for periodized trackers. If omitted, default rules pick the period.","date":"Defaults to today.","value":"Decimal value. Only 4 decimals are honoured (rounded half-up).","replaceTimeTracker":"Replace any existing transaction with the same `timeTrackerId` and `date` instead of appending. Set this with `operation = 1`, `value = 0.0`, and a `date` to delete all manual transactions on a day.","validationErrors":"Returned in the response only."},"timeTrackerListItem":{"userId":"Quinyx internal id of the user.","timeTrackerId":"Id of the time tracker.","timeTrackerName":"Display name of the time tracker.","validationErrors":"Array of validation errors. Empty on success."},"ttBalanceItem":{"badgeNo":"Badge number identifying the employee.","userId":"Quinyx internal id of the user.","timeTrackerId":"Id of the time tracker.","period":"Period (year) for periodized time trackers. Mandatory when the tracker is periodized.","date":"Date at which the balance should be calculated. Defaults to today."},"ttBalanceResultItem":{"userId":"Quinyx internal id of the user.","badgeNo":"Badge number of the user.","timeTrackerId":"Id of the time tracker.","period":"Period (year) for periodized time trackers.","balance":"Calculated balance for the (user, tracker, date) combination.","date":"Date at which the balance was calculated.","validationErrors":"Array of validation errors. Empty on success."},"ttFirstToExpireBalanceItem":{"userId":"Employee ID. Specify either badgeNo or this.","badgeNo":"Badge number. Specify either this or userId.","timeTrackerId":"Time tracker ID","period":"Period (year) for periodized time trackers. Mandatory for periodized time trackers.","date":"If not provided, the current date will be used."},"ttFirstToExpireBalanceResultItem":{"timeTrackerId":"Time tracker ID","period":"Period (year)","balance":"The calculated balance","validationErrors":"An array of validation error messages. Will be empty array if there are no errors"},"unitInfo":{"name":"Unit name. Max 50 characters.","extApplicationId":"External application id for the unit.","districtId":"District id. Required only when the customer is set up with districts."},"updateManualSalary":{"timepunchId":"Id of the existing time punch to attach the salary line to. Optional when `punchDateTime` + (`employeeId` or `badgeNo`) are supplied.","salaryCode":"Salary code of the manual salary line.","hours":"Number of hours for the manual salary line.","punchDateTime":"Required when `timepunchId` is not supplied.","employeeId":"Quinyx internal id of the employee. Optional when `badgeNo` or `timepunchId` is supplied.","badgeNo":"Badge number of the employee. Optional when `employeeId` or `timepunchId` is supplied.","overridevalidations":"When true, bypass validation for locked periods.","validationErrors":"Returned in the response only when the request row fails validation."},"updateUnit":{"extUnitId":"External unit id.","extGroupId":"External Neo group id.","name":"Unit name. Max 50 characters.","extApplicationId":"Application id shown on the unit card.","managerId":"Employee id of the unit manager.","managerBadgeNo":"Badge number of the unit manager. Ignored when `managerId` is also set.","managerGroupId":"Manager group id.","maxHourDay":"Maximum hours per day.","maxHourWeek":"Maximum hours per week.","minShift":"Minimum shift length.","minRest":"Minimum rest between shifts.","publishedTo":"Last date to which shifts are published to the employee section and can be booked.","currency":"Currency code (e.g. `USD`, `SEK`).","noBreaks":"Number of breaks per shift (0–4).","premium1":"When salary/cost for overtime 1 is not specified on agreements or shift types, it is calculated as `normal * premium1 / 100`.","premium2":"When salary/cost for overtime 2 is not specified on agreements or shift types, it is calculated as `normal * premium2 / 100`.","costCentre":"Internal id of the cost centre.","costCentreExtCode":"External id of the cost centre.","districtId":"District the unit belongs to. `0` removes the district assignment.","country":"Country.","address":"Street address.","zipCode":"Zip / postal code.","city":"City.","municipality":"Municipality.","nextBadgeNo":"Next badge number to assign in this unit.","timeZone":"IANA time zone name.","ssoLoginOnly":"`1` to require SSO login only; `0` to allow standard login.","geos":"Array of `Geo` coordinates to apply (see `geosOption`).","standardOpenHours":"Array of `StandardOpenHours` entries defining the unit's regular opening hours.","deviatingOpenHours":"Array of `DeviatingOpenHours` entries for one-off openings or closures."}},"typeElementExamples":{"Agreement":{"id":56781,"extAgreementId":"X001","persId":15436,"weekHours":"40.10","minHours":"0.00","maxHours":"0.00","salary":"156.00","premiumSalary":"0.00","premiumSalary2":"0.00","premiumSalary3":"0.00","periodDay":0,"periodLength":7,"weeklyAvg":"40.00","empLevel":"1.00","templateId":879,"ts":"2016-02-29T16:49:22+01:00","restId":193},"BreakCalculationRule":{"hours":5.2,"breakMinutes":15,"noOfBreaks":1},"Category":{"id":23,"categoryName":"A new type","extCode":"A10","ts":"2008-07-01T20:15:36+02:00"},"Employee":{"id":56781},"EmployeeAttachment":{"employeeId":56781},"FileAttachment":{"fileName":"1.txt"},"GetSchedulesV3":{"employeeId":12345},"SalaryAdditionByDate":{"salaryAddition":"100.00"},"SalaryAdditionByYear":{"from":"5","salaryAddition":"100.00"},"SalaryCompensation":{"salaryCodes":"1020,1030","eligibilityRuleIds":"1,2,3","allowedAbsences":"123,456","fixedNrOfWorkedDays":10,"percentageOfSummedSalaries":"20.0"},"Schedule":{"id":67891,"restId":4,"persId":3,"hours":"8.00","ts":"1976-11-22T11:53:28+02:00"},"ScheduleV2":{"scheduleId":67891,"absenceScheduleId":98,"restId":4,"persId":3,"hours":"8.00","ts":"1976-11-22T11:53:28+02:00"},"ScheduleV3":{"scheduleId":67891,"absenceScheduleId":98,"restId":4,"persId":3,"hours":"8.00","ts":"1976-11-22T11:53:28+02:00"},"Shift":{"scheduleId":"134","begDate":"2018-01-02","endDate":"2018-01-02","begTime":"12:26:00","endTime":"17:26:00","begBreak":"00:00:00","endBreak":"00:00:00","begBreak2":"00:00:00","endBreak2":"00:00:00","begBreak3":"00:00:00","endBreak3":"00:00:00","begBreak4":"00:00:00","endBreak4":"00:00:00","persId":"16","badgeNo":"19888","shiftCategoryId":"10","deleteShift":0,"comment":"Description content","countsAsScheduledHours":true,"applyShiftTypeRules":true},"Task":{"shiftTypeId":12,"begTime":"14:45:00","endTime":"15:15:00"},"TimePunch":{"id":67891,"punchIn":"2015-12-31T08:00:00+01:00","punchOut":"2015-12-31T17:00:00+01:00","ts":"2015-12-31T08:00:00+02:00","orgPunchIn":"2015-12-31T08:00:00+02:00","orgPunchOut":"2015-12-31T17:00:00+02:00"},"Unit":{"id":67891},"UnitKey":{"id":67891,"name":"Ica Kvantum"},"UnitKeyV2":{"id":67891,"name":"Ica Kvantum"},"UpdateTimePunch":{"punchIn":"10:15:00","punchOut":"18:05:00"},"badgeNo":{"badgeNo":"56781"},"baseScheduleRollout":{"fromDateTime":"2020-11-05T00:00:00","toDateTime":"2020-11-24T00:00:00"},"getPayrollV2Request":{"fromDate":"2015-05-01","toDate":"2015-05-07","attest":1,"pSalType":"0,1,2,3","empInUnitOnly":1,"employeeId":123,"badgeNo":1000,"isTransferingToPayroll":1,"approvedSalaryStatus":0,"includeCosts":0,"costCalculationType":2,"includeTags":0,"includeStCode":0},"reverseInfo":{"startDate":"2019-01-01","endDate":"2019-01-30"},"searchOption":{"fromDate":"2013-04-01","toDate":"2013-04-30"},"standardBankHoliday":{"redDate":"2020-12-24","description":"New years day","reduxBefRedDay":"100.00","reduxRedDay":"100.00","createLeaveReasonId":12356,"onlyTheseUnitGroups":"[490,855]"},"ttBalanceItem":{"badgeNo":"1121","userId":56781,"timeTrackerId":1442,"period":2017,"date":"2017-01-01"},"ttFirstToExpireBalanceItem":{"userId":56781,"badgeNo":"1121","timeTrackerId":1442,"period":2017,"date":"2017-01-01"},"ttFirstToExpireBalanceResultItem":{"userId":"56781","badgeNo":"1121","date":"2017-01-01"}},"typeDescriptions":{"AbsenceRecord":"An absence (leave application) record used by wsdlUpdateAbsence.","AbsenceRecords":"Array of `AbsenceRecord` records; payload type for wsdlUpdateAbsence.","AdditionalFieldData":"A key/value pair representing an additional field on an entity.","Agreement":"The full agreement record returned by wsdlGetAgreements (deprecated — use wsdlGetAgreementsV2).","AgreementInfoByDate":"A single employee's agreement details on a queried date, returned by wsdlGetAgreementInfoByDate.","AgreementSalary":"A salary entry on this agreement template, effective from a given date.","AgreementTemplateV2":"An agreement template (version 2) — defines defaults that agreements can inherit.","AgreementTemplate":"An agreement template (legacy).","AgreementTemplatesSalaryType":"A salary type configured on an agreement template.","AgreementTemplatesSalaryTypes":"Array of `AgreementTemplatesSalaryType` records.","AgreementTemplatesSalaryTypesResponse":"Response wrapper for wsdlGetAgreementTemplatesSalaryTypes.","AgreementTemplatesV2Response":"Wrapper for the wsdlGetAgreementTemplatesV2 response.","AgreementV2":"An agreement record (version 2) — the per-employee employment configuration.","Agreements":"Array of `Agreement` records; payload type for the legacy `wsdlGetAgreements`.","AgreementsV2":"Array of `AgreementV2` records.","AgreementsV2Response":"Response wrapper for wsdlGetAgreementsV2.","AvailabilityTimePeriod":"A weekday/time-range slot during which the employee is available to work.","BankHoliday":"A bank holiday observed under this agreement template.","BreakCalculationRule":"A rule for automatically inserting breaks into shifts.","Categories":"Array of `Category` records; payload type for wsdlGetCategories.","Category":"A staff category, leave reason, account, cost centre or project (depending on the calling op).","Customer":"The customer (account) record for a unit.","Customers":"Array of `Customer` records; payload type for wsdlGetCustomers.","District":"A district on the customer.","Districts":"Array of `District` records; payload type for wsdlGetDistricts.","DeletedEmployee":"A summary record for a deleted employee.","EligibilityRule":"An eligibility rule used by salary compensations.","EligibilityRules":"Array of `EligibilityRule` records; payload type for wsdlGetEligibilityRules / wsdlUpdateEligibilityRules / wsdlDeleteEligibilityRules.","Employee":"An employee record returned by wsdlGetEmployees (and the basis for the response of wsdlGetEmployeesV2).","EmployeeAttachment":"Attachments to upload onto a single employee.","EmployeeAttachments":"Array of `EmployeeAttachment` records; payload type for wsdlUpdateEmployeeAttachments.","EmployeeBadgeNo":"A list of employee badge numbers — input wrapper for wsdlGetAgreementInfoByDate.","EmployeeRolloutHours":"Rolled-out base-schedule hours for one employee.","EmployeesRolloutHours":"Array of `EmployeeRolloutHours` records.","EmployeeTime":"A daily worked/absence-hours summary for one employee, returned by wsdlGetActiveAndAbsenceHours.","EmployeesTimes":"Array of `EmployeeTime` records; payload type for wsdlGetActiveAndAbsenceHours.","Employees":"Array of `Employee` records; payload type for wsdlGetEmployees.","EmploymentRate":"An employment rate effective from a given date.","FileAttachment":"A single uploaded file: filename plus base64 content.","FileAttachments":"Array of `FileAttachment` records.","Geo":"A geographic coordinate associated with a unit.","Geos":"Array of `Geo` coordinates.","GetAgreementInfoByDate":"Array of `AgreementInfoByDate` records; response payload for wsdlGetAgreementInfoByDate.","GetAgreementTemplatesSalaryTypesRequest":"Request payload for wsdlGetAgreementTemplatesSalaryTypes.","GetAgreementTemplatesV2":"Request payload for wsdlGetAgreementTemplatesV2.","GetAgreementsV2":"Filter set for wsdlGetAgreementsV2.","GetEmployeeSkillsResponse":"Response wrapper for wsdlGetEmployeeSkills.","GetSchedulesV2":"Request payload for wsdlGetSchedulesV2.","GetSchedulesV3":"Request payload for wsdlGetSchedulesV3.","GetTextItem":"A text item returned by wsdlGetTextItems.","GetTextItems":"Array of `GetTextItem` records; payload type for wsdlGetTextItems.","GetTimePunchesResponse":"Response wrapper for wsdlGetTimePunches.","Group":"An employee group on a unit.","GroupMember":"An employee membership in an employee group.","GroupMembers":"Array of `GroupMember` records.","Groups":"Array of `Group` records; payload type for wsdlGetEmployeeGroups.","GroupsRoles":"A group + role assignment on an employee, optionally bounded by start/end dates.","InfoByDate":"Request payload for wsdlGetAgreementInfoByDate — a date plus the employees to query.","JobSkill":"A single skill assignment used inside `UpdateEmployeeSkill`.","JobSkills":"Array of `JobSkill` records.","LeaveApplication":"A leave application record.","LeaveApplications":"Array of `LeaveApplication` records; payload type for wsdlGetDeletedLeaveApplications and wsdlGetLeaveApplications.","LeaveApplicationV2":"A leave application record (version 2), returned by wsdlGetLeaveApplicationsV2.","LeaveApplicationsV2":"Array of `LeaveApplicationV2` records — the body of a `GetLeaveApplicationsV2Response`.","LeaveReason":"A leave reason configured on the unit.","LeaveReasons":"Array of `LeaveReason` records; payload type for wsdlGetLeaveReasons.","Mail":"A single Qmail message — recipient, sender, body, and optional attachments.","MailAttachment":"A single Qmail attachment.","MailAttachments":"Array of `MailAttachment` records.","Mails":"Array of `Mail` records; payload type for wsdlSendQmail.","MinShiftLength":"A minimum shift length rule for a given time-of-day window.","MonthlyHours":"Working hours for one calendar month, used as nominal hours when the schedule period is defined in months.","NeoGroup":"A group defined in Quinyx Neo.","NeoGroups":"Array of `NeoGroup` records; payload type for wsdlGetNeoGroups.","NeoRole":"A role defined in Quinyx Neo.","NeoRoles":"Array of `NeoRole` records; payload type for wsdlGetNeoRoles.","NominalDayPerWeek":"A nominal-days-per-week value effective from a given date.","NominalDaysPerWeek":"A list of nominal days per week values that apply to the employees with this agreement.","OvertimeMethod":"A configured overtime method on the customer.","OvertimeMethods":"Array of `OvertimeMethod` records; payload type for wsdlGetOvertimeMethods.","OvertimePeriod":"An overtime period definition on this agreement template.","PayrollTag":"A tag attached to a payroll row, included when `includeTags=true` is set on the request.","PayrollTags":"Array of `PayrollTag` records attached to a `PayrollV2` row.","PayrollV2":"A single payroll row returned by wsdlGetPayrollV2.","PayrollsV2":"Array of `PayrollV2` rows returned by wsdlGetPayrollV2.","Portrait":"An employee portrait — the base64-encoded image and its last-modified timestamp.","ProcessLeavesRecord":"A single leave-processing decision used by wsdlProcessLeaves.","ProcessLeavesRecords":"Array of `ProcessLeavesRecord` records; payload type for wsdlProcessLeaves.","PunchValidation":"Result of a wsdlPunch call, including any validation errors.","RestaurantKey":"Identifier triple for a restaurant/unit, plus its scoped API key.","ResultTransfer":"Status and (when ready) download URL for a payroll transfer.","Role":"A Classic role.","Roles":"Array of `Role` records; payload type for wsdlGetRoles.","SalaryAdditionByDate":"A salary addition effective from a given date.","SalaryAdditionByYear":"A salary addition keyed to a year value (e.g. age- or seniority-based).","SalaryCompensation":"A salary compensation rule.","SalaryCompensations":"Array of `SalaryCompensation` records; payload type for wsdlUpdateSalaryCompensations / wsdlGetSalaryCompensations.","SalaryCostLimit":"Effective salary-cost limit from a given date onward.","SalaryCostLimits":"A list of salary cost limits that apply to the employees with this agreement template.","SalaryCostPeriod":"Effective salary-cost period from a given date onward.","SalaryCostPeriods":"A list of salary cost periods that apply to the employees with this agreement template.","Section":"A section record (a sub-unit of a unit).","Sections":"Array of `Section` records; payload type for wsdlGetSections / wsdlUpdateSections.","Schedule":"A scheduled or absence shift returned by wsdlGetSchedules / wsdlGetSchedulesForAllUnits.","Schedules":"Array of `Schedule` records; payload type for wsdlGetSchedules, wsdlGetSchedulesForAllUnits, and wsdlGetDeletedSchedules.","ScheduleV2":"A scheduled or absence shift returned by wsdlGetSchedulesV2.","SchedulesV2":"Array of `ScheduleV2` records — the body of a `SchedulesV2Response`.","SchedulesV2Response":"Response wrapper for wsdlGetSchedulesV2, carrying the matched shifts plus any validation errors.","ScheduleV3":"A scheduled or absence shift returned by wsdlGetSchedulesV3.","SchedulesV3":"Array of `ScheduleV3` records — the body of a `SchedulesV3Response`.","SchedulesV3Response":"Response wrapper for wsdlGetSchedulesV3, carrying the matched shifts plus any validation errors.","ScheduleTask":"A schedule task — a categorised time block inside a shift.","ScheduleTasks":"Array of `ScheduleTask` records; payload type for wsdlGetScheduleTasks.","ScheduleCategorySkill":"A skill attached to a shift category, returned in `ShiftCategory.skills`.","ScheduleCategorySkills":"Array of `ScheduleCategorySkill` records.","Shift":"A scheduled or worked shift.","Shifts":"Array of `Shift` records; payload type for wsdlUpdateShifts (and the return type of several Schedule ops).","ShiftCategory":"A shift category (shift type) configured on a unit.","ShiftCategories":"Array of `ShiftCategory` records; payload type for wsdlGetShiftCategories.","ShiftCategoriesTag":"A tag attached to a shift, returned on `ScheduleV2`/`ScheduleV3` when `includeTags=true`.","ShiftCategoriesTags":"Array of `ShiftCategoriesTag` records attached to a shift or sub-shift.","ShiftRequest":"A shift booking or shift swapping request, attached to `ScheduleV2`/`ScheduleV3.shiftRequests`.","ShiftRequests":"Array of `ShiftRequest` records attached to a shift.","Skill":"A single skill inside a `SkillCategory`.","SkillCategory":"A skill category — groups related skills together.","SkillCategories":"Array of `SkillCategory` records; payload type for wsdlGetSkillCategories.","SkillItem":"A skill record used by wsdlUpdateSkills.","SkillItems":"Array of `SkillItem` records; payload type for wsdlUpdateSkills.","Skills":"Array of `Skill` records.","SocialCost":"A social or vacation cost configuration entry.","StandardOpenHours":"A standard weekly opening-hours entry for a unit.","DeviatingOpenHours":"A one-off deviating opening-hours entry for a specific date.","ArrayOfStandardOpenHours":"Array of `StandardOpenHours` entries.","ArrayOfDeviatingOpenHours":"Array of `DeviatingOpenHours` entries.","SubShift":"A sub-shift / task inside a shift, attached to `ScheduleV2`/`ScheduleV3.subShifts`.","SubShifts":"Array of `SubShift` records attached to a shift.","Tag":"A tag attached to a shift type, identified by external codes.","TagCustomField":"A label/value pair on a `PayrollTag`, carrying tag-specific custom field data.","TagCustomFields":"Array of `TagCustomField` records attached to a `PayrollTag`.","Tags":"Array of `Tag` records.","Task":"A subshift task within a shift.","Tasks":"Array of `Task` records — subshift tasks.","TemplateOverTime":"An overtime period definition on this agreement template.","TemplateRedDay":"A bank holiday observed under this agreement template.","TemplateShift":"A weekday/time-range slot during which the employee is available to work.","TextItem":"A text item — a cost centre, project, or (deprecated) account configured on the customer. Used by wsdlUpdateTextItems.","TextItems":"Array of `TextItem` records; payload type for wsdlUpdateTextItems.","TimePunch":"A time punch (clock-in / clock-out) record.","TimePunches":"Array of `TimePunch` records — the body of a `GetTimePunchesResponse`.","TransferStatus":"Status of a payroll transfer; response payload for wsdlInitiateTransferToPayroll.","Unit":"A single unit (e.g. store or restaurant).","UnitEmployee":"An employee's relationship with a unit — returned by wsdlFindEmployees.","UnitEmployeeList":"A list of unit-employee records.","UnitKey":"A unit plus its API key. Response item for wsdlGetUnitsAPIKey (deprecated).","UnitKeyV2":"A unit plus its API key (v2). Superset of `UnitKey` — adds company/district/publishing fields.","Units":"Array of `Unit` records; payload type for wsdlGetUnit / wsdlGetUnits.","UnitsKey":"Array of `UnitKey` records; payload type for wsdlGetUnitsAPIKey (deprecated).","UnitsKeyV2":"Array of `UnitKeyV2` records; payload type for wsdlGetUnitsAPIKeyV2.","UpdateAgreement":"A single agreement to create or update through wsdlUpdateAgreements (deprecated).","UpdateAgreements":"Array of `UpdateAgreement` records;","UpdateAgreementV2":"A single agreement to create or update through wsdlUpdateAgreementsV2.","UpdateAgreementsV2":"Array of `UpdateAgreementV2`","UpdateDistrict":"A district record to create or update through wsdlUpdateDistricts.","UpdateDistricts":"Array of `UpdateDistrict` records; payload type for wsdlUpdateDistricts.","UpdateEmployee":"An employee record to create or update through wsdlUpdateEmployees.","UpdateEmployeePortrait":"Portrait payload for a single employee, used by wsdlUpdateEmployeePortraits.","UpdateEmployeePortraits":"Array of `UpdateEmployeePortrait` records; payload type for wsdlUpdateEmployeePortraits.","UpdateEmployeeSkill":"Skill assignment for a single employee, used by wsdlUpdateEmployeeSkills.","UpdateEmployeeSkills":"Array of `UpdateEmployeeSkill` records; payload type for wsdlUpdateEmployeeSkills.","UpdateEmployees":"Array of `UpdateEmployee` records","UpdateManualSalaries":"Array of `updateManualSalary` records; payload type for wsdlUpdateManualSalaries.","UpdateShiftType":"A shift type to create or update through wsdlUpdateShiftTypes.","UpdateShiftTypes":"Array of `UpdateShiftType` records; payload type for wsdlUpdateShiftTypes.","UpdateTimePunch":"A single time-punch record to insert, update, or delete via wsdlUpdateTimePunches.","UpdateTimePunches":"Array of `UpdateTimePunch` records; payload type for wsdlUpdateTimePunches.","WorkInUnit":"A unit that an employee may work in beyond their home unit.","agreementOvertimeMethod":"An overtime method on this agreement (new overtime feature only).","badgeNo":"A badge number filter value.","bankHolidayManualSalary":"A manual salary entry tied to a bank holiday.","baseScheduleRollout":"Request payload for wsdlGetBaseScheduleRolledoutHours — a list of employees and a date/time range.","baseScheduleRolloutData":"Response wrapper for wsdlGetBaseScheduleRolledoutHours.","createUnitInfo":"Response payload returned by wsdlCreateUnit — the newly created unit.","email":"An email address filter value.","empSkill":"A single skill assigned to an employee, as returned by wsdlGetEmployeeSkills.","empSkills":"Array of `empSkill` records.","employeeSkill":"An employee and their assigned skills, as returned by wsdlGetEmployeeSkills.","employeesSkills":"Array of `employeeSkill` records.","getLeaveApplicationsV2Request":"Request payload for wsdlGetLeaveApplicationsV2.","getPayrollV2Request":"Request payload for wsdlGetPayrollV2.","getTimePunchesRequest":"Request payload for wsdlGetTimePunches.","hoursDay":"Working hours for one specific day of the week.","moveEmployee":"A single scheduled employee move, used by wsdlMoveEmployees.","moveEmployees":"Array of `moveEmployee` records; payload type for wsdlMoveEmployees.","otLevel":"An overtime-level definition inside an `OvertimeMethod`.","otLevels":"Array of `otLevel` records.","punchRounding":"A punch deviation rule.","reverseInfo":"Request payload for wsdlReverseTransactions.","scheduleCategoryUnit":"Per-unit visibility row for a shift type.","scheduleCategoryUnits":"Array of `scheduleCategoryUnit` records.","searchOption":"Filter set for wsdlInitiateTransferToPayroll.","standardBankHoliday":"A standard bank holiday entry.","standardOvertime":"A standard overtime configuration.","timeTracker":"A time-tracker transaction record used by wsdlUpdateTimeTrackers and wsdlGetTimeTrackersBalance.","timeTrackerList":"Array of `timeTrackerListItem` records; payload type for wsdlGetTimeTrackerList.","timeTrackerListItem":"A single (user, time-tracker) pair returned by wsdlGetTimeTrackerList.","timeTrackers":"Array of `timeTracker` records; payload type for wsdlGetTimeTrackersBalance.","ttBalance":"Array of `ttBalanceItem` records.","ttBalanceItem":"A single input row for fetching a time-tracker balance.","ttBalanceResult":"Array of `ttBalanceResultItem` records; payload type for wsdlGetTimeTrackersBalance.","ttBalanceResultItem":"A single time-tracker balance result row.","ttFirstToExpireBalanceItem":"An item in a first-to-expire time-tracker balance.","ttFirstToExpireBalanceResult":"Result of a wsdlGetFirstToExpireTimeTrackersBalance call.","ttFirstToExpireBalanceResultItem":"An item in a first-to-expire time-tracker balance result.","unitInfo":"Input payload describing the unit to create through wsdlCreateUnit.","updateManualSalary":"An entry in the wsdlUpdateManualSalaries request — identifies a punch (or employee + datetime) and the salary line to apply.","updateUnit":"Input payload describing the unit changes for wsdlUpdateUnit. Fields omitted are left unchanged.","workInUnits":"Array of `WorkInUnit` — additional units an employee may work in beyond their home unit."},"allOpNames":["wsdlGetRestaurantsAPIKey","wsdlGetRestaurants","wsdlGetRestaurant","wsdlUpdateUnit","wsdlCreateUnit","wsdlGetUnitsAPIKey","wsdlGetUnitsAPIKeyV2","wsdlGetUnits","wsdlGetUnit","wsdlGetCustomers","wsdlGetResultTransferToPayroll","wsdlInitiateTransferToPayroll","wsdlGetPayroll","wsdlGetSalaryPeriodLockStatus","wsdlGetPayrollV2","wsdlGetPayrollRaw","wsdlUpdateSections","wsdlGetSections","wsdlUpdateDistricts","wsdlGetCategories","wsdlGetLeaveReasons","wsdlGetLeaveApplications","wsdlGetDeletedLeaveApplications","wsdlGetLeaveApplicationsV2","wsdlGetSchedules","wsdlGetSchedulesForAllUnits","wsdlGetDeletedSchedules","wsdlGetSchedulesV2","wsdlGetSchedulesV3","wsdlGetScheduleTasks","wsdlGetShiftCategories","wsdlGetAgreements","wsdlGetOvertimeMethods","wsdlGetDeletedEmployees","wsdlReverseTransactions","wsdlGetEmployeesV2","wsdlGetEmployees","wsdlGetEmployeeSkills","wsdlGetEmployeeGroups","wsdlGetDistricts","wsdlGetRoles","wsdlGetAgreementTemplates","wsdlGetAgreementsV2","wsdlDeleteSalaryCompensations","wsdlUpdateSalaryCompensations","wsdlGetSalaryCompensations","wsdlGetEligibilityRules","wsdlUpdateEligibilityRules","wsdlDeleteEligibilityRules","wsdlUpdateStandardBankHolidays","wsdlgetStandardBankHolidays","wsdlGetAgreementTemplatesV2","wsdlGetAgreementTemplatesSalaryTypes","wsdlProcessLeaves","wsdlUpdateAbsence","wsdlGetEmployeePortrait","wsdlGetAgreementInfoByDate","wsdlUpdateEmployees","wsdlUpdateEmployeePortraits","wsdlGetBaseScheduleRolledoutHours","wsdlUpdateShiftTypes","wsdlUpdateManualSalaries","wsdlGetTimePunches","wsdlUpdateTimePunches","wsdlPunch","wsdlGetActiveAndAbsenceHours","wsdlUpdateAgreementsV2","wsdlUpdateAgreements","wsdlUpdateTextItems","wsdlGetTextItems","wsdlGetNeoRoles","wsdlGetNeoGroups","wsdlUpdateShifts","wsdlSendQmail","wsdlUpdateEmployeeAttachments","wsdlGetErrorMessages","wsdlGetSkillCategories","wsdlUpdateSkills","wsdlUpdateEmployeeSkills","wsdlMoveEmployees","wsdlScheduleRequestDeny","wsdlScheduleRequestApprove","wsdlUpdateTimeTrackers","wsdlGetTimeTrackerList","wsdlGetTimeTrackersBalance","wsdlGetFirstToExpireTimeTrackersBalance","wsdlFindEmployees"],"seo":{"title":"Update Employee Skills","description":"Add, update, or overwrite job skills on one or more employees.","siteUrl":"https://developer.quinyx.com","projectTitle":"Quinyx","image":"/assets/quinyx-image-share-preview.923e4c9034df4fc24c974ff2fc606f3643bcf7d3a3643cef3e6df941da353c5a.925ff8b2.png","keywords":"documentation, api","lang":"en-US","jsonLd":{"@context":"https://schema.org","@type":"Organization","name":"Quinyx","url":"https://www.quinyx.com","logo":"https://developer.quinyx.com/static/logo.svg","sameAs":["https://www.linkedin.com/company/quinyx","https://github.com/quinyx"]},"llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"metadata":{"apiVersion":"v1","redocly_category":"API Reference V1"},"compilationErrors":[],"variables":{"rbac":{"teams":["anonymous"]},"user":{},"remoteAddr":{"hostname":"developer.quinyx.com","port":4000,"ipAddress":"216.73.216.45"},"lang":"default_locale"},"pagePropGetterError":{"message":"","name":""}},"slug":"/api/v1/operations/wsdlUpdateEmployeeSkills","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}