{"openapi":"3.0.0","info":{"version":"0.2.2","title":"Salaxy Anonymous API","description":"Provides methods from the Salaxy API that are available anonymously.\n\nPackage: `@qrtl-packages/salaxy-anon` (0.2.2)","x-logo":{"url":"https://cdn.salaxy.com/img/brand/salaxy-signature-640.png","altText":"Salaxy Anonymous API","href":"https://mcp-anon.salaxy.com"},"contact":{"url":"https://mcp-anon.salaxy.com"}},"tags":[{"name":"Calculator","description":"Salary calculator for anonymous calculations.\nUsed for development, AI skills development and testing purposes."},{"name":"Employment","description":"Test data and operations for employees and employment relations."}],"components":{"schemas":{"Calculation":{"type":"object","properties":{"employer":{"type":"object","nullable":true,"properties":{"avatar":{"type":"object","nullable":true,"properties":{"entityType":{"nullable":true,"description":"Entity type: person/company"},"firstName":{"type":"string","nullable":true,"description":"First name or company name"},"lastName":{"type":"string","nullable":true,"description":"Last name, for companies, this should be null"},"displayName":{"type":"string","nullable":true,"description":"Display name. For a person this is 'FirstName LastName' (auto-created)."},"sortableName":{"type":"string","nullable":true,"description":"Sortable name for ordered lists etc. For a person this is 'LastName, FirstName' (auto-created).\n     Depending on the data storage, this may be all-lowercase for easier sorting and search."},"pictureType":{"nullable":true,"description":"Type of the Avatar picture."},"color":{"type":"string","nullable":true,"description":"Color - currently only used by type Icon"},"initials":{"type":"string","nullable":true,"description":"Initials - currently only used by type Icon"},"url":{"type":"string","nullable":true,"description":"URL of the picture if specified as picture (null in a case of type Icon)"},"description":{"type":"string","nullable":true,"description":"Short description of the user.\n     This may be overriden by a context specific value by the business logic."},"id":{"type":"string","nullable":true,"description":"Identifier of the object."},"createdAt":{"type":"string","nullable":true,"description":"The date when the object was created."},"updatedAt":{"type":"string","nullable":true,"description":"The time when the object was last updated.\n     Typically this should be a logical update by user (UserUpdatedAt in DTO), not technical updates."},"owner":{"type":"string","nullable":true,"description":"Owner ID for this data"},"isReadOnly":{"type":"boolean","nullable":true,"description":"Indication that for the currently logged-in account, the data is generally read-only."},"partner":{"type":"string","nullable":true,"description":"Primary partner information. Automatically updated from the storage container Partner."}},"description":"Display image information and type of employer.\n     NOTE: Recalculate-method retains the values for display purposes if AccountId or IsSelf is not set.\n     This is mainly for demo and testing in anonymous mode.\n     However, in storage methods, the value is reset based on values of AccountId or IsSelf\n     even if they are not set: Anything stored in Avatar will be ignored."},"accountId":{"type":"string","nullable":true,"description":"The Palkkaus.fi Account identifier for the Employer."},"isSelf":{"type":"boolean","nullable":true,"description":"True if Profile is the current Authorization.\n     If set to true, will set current Authorization as this contract party.\n     This overrides any value in AccountId, so be sure to switch this back to false if this is switchable.\n     Setting to False does not have any immediate effect."},"contact":{"type":"object","nullable":true,"properties":{"email":{"type":"string","nullable":true,"description":"Contact e-mail address. Always lower invariant, trimmed and empty string set to null."},"telephone":{"type":"string","nullable":true,"description":"Telephone number"},"street":{"type":"string","nullable":true,"description":"Street address"},"postalCode":{"type":"string","nullable":true,"description":"Postal code"},"city":{"type":"string","nullable":true,"description":"City or community (postitoimipaikka)"},"countryCode":{"type":"string","nullable":true,"description":"This is the ISO code for country.\n     Currently, it should always be \"fi\"."}},"description":"Current address of the employer.\n     Please note that this is a read only field."},"officialId":{"type":"string","nullable":true,"description":"Official id of the person or company.\n     Please note that this is a read only field."}},"description":"The employer object for this calculation.\n     Typically, you do not need to set this before the actual payment process."},"worker":{"type":"object","nullable":true,"properties":{"accountId":{"type":"string","nullable":true,"description":"Palkkaus.fi Account Id for the worker.\n     Alternatively you can set the Payment data with the required infromation"},"employmentId":{"type":"string","nullable":true,"description":"Employment Id for the worker."},"paymentData":{"type":"object","nullable":true,"properties":{"firstName":{"type":"string","nullable":true,"description":"First name of the person."},"lastName":{"type":"string","nullable":true,"description":"Last name / Surname of the person."},"socialSecurityNumber":{"type":"string","nullable":true,"description":"Gets the Social security number the way the user set it in input.\n     HOWEVER: The getter will change the string to upper invariant/trim and if the last character is \"*\", it will be replaced by calculated checksum."},"socialSecurityNumberValid":{"type":"string","nullable":true,"description":"Social security number if valid or null"},"ibanNumber":{"type":"string","nullable":true,"description":"IBAN number for the Bank account"},"email":{"type":"string","nullable":true,"description":"Contact e-mail address."},"telephone":{"type":"string","nullable":true,"description":"Telephone number"}},"description":"Data that is needed for salary payment.\n     This object may be null if AccountId has been set.\n     Also, if AccountId has been set, these properties will be ignored:\n     The Worker will decide on payment properties herself."},"avatar":{"type":"object","nullable":true,"properties":{"entityType":{"nullable":true,"description":"Entity type: person/company"},"firstName":{"type":"string","nullable":true,"description":"First name or company name"},"lastName":{"type":"string","nullable":true,"description":"Last name, for companies, this should be null"},"displayName":{"type":"string","nullable":true,"description":"Display name. For a person this is 'FirstName LastName' (auto-created)."},"sortableName":{"type":"string","nullable":true,"description":"Sortable name for ordered lists etc. For a person this is 'LastName, FirstName' (auto-created).\n     Depending on the data storage, this may be all-lowercase for easier sorting and search."},"pictureType":{"nullable":true,"description":"Type of the Avatar picture."},"color":{"type":"string","nullable":true,"description":"Color - currently only used by type Icon"},"initials":{"type":"string","nullable":true,"description":"Initials - currently only used by type Icon"},"url":{"type":"string","nullable":true,"description":"URL of the picture if specified as picture (null in a case of type Icon)"},"description":{"type":"string","nullable":true,"description":"Short description of the user.\n     This may be overriden by a context specific value by the business logic."},"id":{"type":"string","nullable":true,"description":"Identifier of the object."},"createdAt":{"type":"string","nullable":true,"description":"The date when the object was created."},"updatedAt":{"type":"string","nullable":true,"description":"The time when the object was last updated.\n     Typically this should be a logical update by user (UserUpdatedAt in DTO), not technical updates."},"owner":{"type":"string","nullable":true,"description":"Owner ID for this data"},"isReadOnly":{"type":"boolean","nullable":true,"description":"Indication that for the currently logged-in account, the data is generally read-only."},"partner":{"type":"string","nullable":true,"description":"Primary partner information. Automatically updated from the storage container Partner."}},"description":"Display image and properties of the Worker.\n     Based on either the AccountId or PaymentData"},"isSelf":{"type":"boolean","nullable":true,"description":"True if Profile is the currently Account\n     If set to true, will set current Account as this contract party.\n     This overrides any value in AccountId, so be sure to switch this back to false if this is switchable.\n     Setting to False does not have any immediate effect."},"dateOfBirth":{"type":"string","nullable":true,"description":"Date of birth for the Worker - this affects the side costs.\n     Please also set the DateOfBirthAccuracy, if you set this property.\n     If PaymentData or AccountId lead to a valid Social security number, it will override any age set here."},"dateOfBirthAccuracy":{"nullable":true,"description":"Accuracy of the date of birth\n     If PaymentData or AccountId lead to a valid Social security number, it will override any age set here."},"tax":{"type":"object","nullable":true,"properties":{"taxcardId":{"type":"string","nullable":true,"description":"Identifier for a stored tax card if one is applied to this calculation.\n     System updates the TaxCardId automatically in Recalculate / Save if it finds a better candidate\n     and also updates the Snapshot."},"snapshot":{"type":"object","nullable":true,"properties":{"forYear":{"type":"number","description":"Year that the tax card is valid for. Typically this means from February of this year to January of the following."},"validity":{"type":"object","nullable":true,"properties":{"start":{"type":"string","nullable":true,"description":"Start date of the period"},"end":{"type":"string","nullable":true,"description":"End date of the period."},"daysCount":{"type":"number","nullable":true,"description":"Number of days in the range.\n     Depending of the context, this may be mathematical (end - start) or\n     explicitly specified (typically working days).\n     Typically an integer, and calculations and UI's may choose to round it."},"days":{"type":"array","nullable":true,"items":{"type":"string"},"description":"The collection of days contained in the DateRange if specified by the user.\n     Alternative to DaysCount. If set, should also set DaysCount for backward compatibility."}},"description":"Validity for the taxcard as expressed in the card.\n     Note that the end date may not be reliable if new taxcard has replaced this one."},"taxPercent":{"type":"number","nullable":true,"description":"Tax percent as percent. I.e. for 50% set 50, not 0.5."},"incomeLimit":{"type":"number","nullable":true,"description":"Income up to which the TaxPercent can be used.\n     Any income above the limit is taxed with ExcessTaxPercent."},"cumulativeIncome":{"type":"number","nullable":true,"description":"Cumulative income on the taxcard - including this calculation.\n     Note that with shared taxcards, this may include income from other employers."},"taxPercent2":{"type":"number","nullable":true,"description":"Tax percentage that is used in calculating the widthholding tax for the part of income above the IncomeLimit.\n     This is percent. I.e. for 50% set 50, not 0.5."},"taxPercentMin":{"type":"number","nullable":true,"description":"A Worker may request a minimum percent that is deducted even if the effective tax percent would be lower.\n     This can be used if Worker knows that he/she will be earning more in the year than what was estimated when the taxcard was created."},"taxPercentMinOwned":{"type":"number","nullable":true,"description":"TaxPercentMin set by owner of the card.\n     This overrides the tax percent min set by the taxcard sharer."},"incomeType":{"nullable":true,"description":"The income type of the taxacard if fetched from the tax authorities taxcard API."},"kind":{"nullable":true,"description":"Type of the taxcard as of 2019, when the taxcards logic was simplified by the Finnish tazx authorities."},"fileUri":{"type":"string","nullable":true,"description":"Uri to the file copy of the tax card.\n     Set by the system as part of the upload process, do not change in the API though it may be technically possible. This may have unintended results."},"previewUri":{"type":"string","nullable":true,"description":"Uri to the preview image of the tax card.\n     Set by the system as part of the upload process, do not change in the API though it may be technically possible. This may have unintended results."},"lastChecked":{"type":"string","nullable":true,"description":"Explicit value of when the item was last checked. At the moment, updated in API fetches only, but may be used later for other checks.\n     Undefined value is 1.1.2000"}},"required":["forYear"],"description":"Snapshot of the tax card for salary slip etc. purposes.\n     Updated in Recalculate / Save based on TaxCardId"},"fixedTaxAmount":{"type":"number","nullable":true,"description":"Possibility to set a fixed widthholding tax amount for this calculation regardless of\n     the percentage etc. in the tax card."},"isValid":{"type":"boolean","nullable":true,"description":"The API returns true if there is a valid taxcard for the PaidAt date for this calculation\n     or if FixedTaxAmount is set for th calculation."},"estimatedTax":{"type":"number","nullable":true,"description":"Calculated widthholding tax. Note that this is an estimation until the calculation is actually paid.\n     Also, if the salary is not paid as cash (e.g. fringe benefits), there may not be enough money to make the full deduction."},"hasNewSharedCard":{"type":"boolean","nullable":true,"description":"A flag that during last recalculation, there was a new shared taxcard that was waiting approval."},"taxPercentForVisualization":{"type":"number","nullable":true,"description":"Tax percent that is used in visualization. This is mainly used in Unit testing and anonymous calcultors.\n     Not used in real paid calculations. This is percent. I.e. for 50% set 50, not 0.5.\n     If PaymentData or AccountId lead to a valid tax card type and percent, or if there is FixedTaxAmount, this value is not used."}},"description":"New Widthholding tax logic that is based on separately stored tax cards."},"contact":{"type":"object","nullable":true,"properties":{"email":{"type":"string","nullable":true,"description":"Contact e-mail address. Always lower invariant, trimmed and empty string set to null."},"telephone":{"type":"string","nullable":true,"description":"Telephone number"},"street":{"type":"string","nullable":true,"description":"Street address"},"postalCode":{"type":"string","nullable":true,"description":"Postal code"},"city":{"type":"string","nullable":true,"description":"City or community (postitoimipaikka)"},"countryCode":{"type":"string","nullable":true,"description":"This is the ISO code for country.\n     Currently, it should always be \"fi\"."}},"description":"Current address of the worker.\n     Please note that this is a read only field."}},"description":"The Worker (employee) that has performed the work."},"workflow":{"type":"object","nullable":true,"properties":{"status":{"nullable":true,"description":"Status of the calculation from Draft to PaymentSucceeded"},"paidAt":{"type":"string","nullable":true,"description":"Time when this calculation was paid (if it was paid) to Palkkaus service."},"salaryPaidAt":{"type":"string","nullable":true,"description":"Time when the salary was paid by Palkkaus service."},"repairedAt":{"type":"string","nullable":true,"description":"Last date and time when this calculation was repaired after payment."},"salaryDate":{"type":"string","nullable":true,"description":"The estimated date when the salary is withdrawable by the worker."},"requestedSalaryDate":{"type":"string","nullable":true,"description":"The requested date for the SalaryDate from the employer."},"salaryDateKind":{"nullable":true,"description":"Defines the re-setting of the salary date in the calculation re-calculation."},"originalId":{"type":"string","nullable":true,"description":"The original id the calculation which this calculation is a copy of."}},"description":"Information about the workflow and state of the calculation."},"salary":{"type":"object","nullable":true,"properties":{"kind":{"nullable":true,"description":"Type of the salary being calculated"},"amount":{"type":"number","nullable":true,"description":"Amount of e.g. hours, months for the salary. Default is 1."},"price":{"type":"number","description":"Price of one unit - e.g. hour, month."},"unit":{"type":"string","nullable":true,"description":"E.g. hour, month. Typically this parameter can be left empty/null and the unit is set according to type."},"message":{"type":"string","nullable":true,"description":"Optional message for the salary row that is shown in reports. If null, will be set according to type."},"isHouseholdDeductible":{"type":"boolean","nullable":true,"description":"If set to true, will calculate the household deduction. Applies only to natural persons - as oppsed to companies."},"taxDeductionCategories":{"nullable":true,"description":"If tax IsHouseholdDeductible is set to true, please also select the category (categories).\n     Note that \"OwnPropety\" is a default, it does not need to be set: Only set RelativesProperty if necessary."}},"required":["price"],"description":"The main salary element.\n     Alternatively the salary can be set in the Rows object - this will be the only way to set multiple salary rows (not yet supported)."},"rows":{"type":"array","nullable":true,"items":{"type":"object","properties":{"rowIndex":{"type":"number","nullable":true,"description":"Zero based row index that can be used to match the row to result rows or when deleting.\n     NOTE: The Row ID is given values on the fly so setting this will not have any effect at the moment.\n     It may reorder the entries in later implementations."},"type":{"type":"string","nullable":true,"description":"Wage type. Either a built in wage type in Salaxy or a custom wage type created by the user.\n     Please note that this type fully determines the <see cref=\"T:Palkkaus.Model.Calc.CalculationRowType\"></see> and the kind."},"rowType":{"nullable":true,"description":"Logical type of the row"},"message":{"type":"string","nullable":true,"description":"Description text of the row that is shown in reports. If null, will be set according to type."},"count":{"type":"number","nullable":true,"description":"Count for the row - default is one"},"price":{"type":"number","nullable":true,"description":"Price for the row"},"unit":{"nullable":true,"description":"Unit for the row. Guessed based on the RowType and count, but you are better off setting it to be sure."},"source":{"nullable":true,"description":"Source of the calculation row - affects how the row is handled in editing / recalculation scenarios."},"sourceId":{"type":"string","nullable":true,"description":"Identifier in the source system is a key defined by a source system / partner system.\n     This is a pass-through string that is passed to the result calculations."},"accounting":{"type":"object","nullable":true,"properties":{"vatPercent":{"type":"number","nullable":true,"description":"Percent for VAT calculation expressed as decimal: 24% is 0.24."},"vatEntries":{"type":"array","nullable":true,"items":{"type":"object","properties":{"tax":{"type":"number","nullable":true,"description":"Tax amount of specific VAT rate in euro.\n     This value is mandatory, if the collection of VatEntries contains more than one item."},"vatRate":{"nullable":true,"description":"Applied VAT rate. This is always mandatory."},"taxPercent":{"type":"number","nullable":true,"description":"Tax as percent of Net sales (0-1). Currently just informative, but may later be used for Custom non-standard VAT rates."},"gross":{"type":"number","nullable":true,"description":"Gross sales for specific VAT rate including the tax (VAT).\n     This value is mandatory, if the collection of VatEntries contains more than one item."},"net":{"type":"number","nullable":true,"description":"Net sales for specific VAT rate excluding the tax (VAT).\n     This value is mandatory, if the collection of VatEntries contains more than one item."}}},"description":"Total VAT amount splitted by VAT rates.\n     Please note, that if both {Palkkaus.Model.Calc.RowAccounting.VatPercent} and the {Palkkaus.Model.Calc.RowAccounting.VatEntries} with some entries given,\n     the {Palkkaus.Model.Calc.RowAccounting.VatEntries} are applied.\n     Please note that this is null by default."},"dimensions":{"type":"array","nullable":true,"items":{"type":"object","properties":{"id":{"type":"string","nullable":true,"description":"Dimension Id."},"value":{"type":"string","nullable":true,"description":"Cost accounting dimension value id."},"percent":{"type":"number","nullable":true,"description":"Sharing percent for the dimension."}}},"description":"Values for cost accounting dimensions"},"entry":{"type":"object","nullable":true,"properties":{"debitAccountNumber":{"type":"string","nullable":true,"description":"Debit Account number.\n     If given will override the system resolved debit account number."},"creditAccountNumber":{"type":"string","nullable":true,"description":"Credit Account number.\n     If given will override the system resolved credit account number."}},"description":"Row accounting entries for overriding standard accounting logic."}},"description":"Accounting related data for the row."},"period":{"type":"object","nullable":true,"properties":{"start":{"type":"string","nullable":true,"description":"Start date of the period"},"end":{"type":"string","nullable":true,"description":"End date of the period."},"daysCount":{"type":"number","nullable":true,"description":"Number of days in the range.\n     Depending of the context, this may be mathematical (end - start) or\n     explicitly specified (typically working days).\n     Typically an integer, and calculations and UI's may choose to round it."},"days":{"type":"array","nullable":true,"items":{"type":"string"},"description":"The collection of days contained in the DateRange if specified by the user.\n     Alternative to DaysCount. If set, should also set DaysCount for backward compatibility."}},"description":"Period if different than the Period of calculation.\n     Will be reported to the National Incomes registry, but also affect some other calculations.\n     Note that this property may be (and by default is) null."},"data":{"type":"object","nullable":true,"properties":{},"description":"Usecase specific data"}}},"description":"Set of rows that make up the salary calculation:\n     Expenses, Benefits, deductions etc. Note that side costs are not rows."},"framework":{"type":"object","nullable":true,"properties":{"type":{"nullable":true,"description":"Type of the work framework"},"subType":{"nullable":true,"description":"Subtype when one framework has several options"},"isTesIncludedInSalary":{"type":"boolean","nullable":true,"description":"Marker that the payments defined by framework agreement are included in the salary (will not be added by the calculation)."},"numberOfDays":{"type":"number","nullable":true,"description":"Number of days may affect calculation of different payments calculated based on a Framework agreement"},"dailyTravelExpenses":{"type":"number","nullable":true,"description":"Travel expences per day"},"dailyTravelExpensesKm":{"type":"number","nullable":true,"description":"The amount of kilometers travelled by day - used to define the amount of travel expenses in aomse framework agreements."},"dailyExpenses":{"type":"number","nullable":true,"description":"Daily expenses amount"},"isYksityisenHoidonTuki":{"type":"boolean","nullable":true,"description":"If true will calculate the Finnish child care subsidy"},"yksityisenHoidonTukiAmount":{"type":"number","nullable":true,"description":"Amount of Finnish child care subsidy"}},"description":"DEPRECIATED: Usecase will be replacing this functionality in a next major release.\n     The Framework Agreement (TES) parameters that affect the framework based side costs etc. of this calculation"},"usecase":{"type":"object","nullable":true,"properties":{"uri":{"type":"string","nullable":true,"description":"Key for the usecase based on which it is resolved.\n     Later, this may resolve to a user interface, microservice or a to manifest registering one.\n     For now, just use a unique string starting with a domain you own."},"label":{"type":"string","nullable":true,"description":"A short label of that can be shown to the end user."},"description":{"type":"string","nullable":true,"description":"Optional description of the use case for the end user.\n     Shown in detail views when explaining the logic of the usecase."},"data":{"type":"object","nullable":true,"properties":{},"description":"Usecase specific data"}},"description":"A usecase for creating and editing salary calculations.\n     In practice, a usecase is either a user interface or a microservice that provides a salary calculation\n     and it may be implemented outside Salaxy.\n     Provides the possibility to store useacase specific data as part of calculation.\n     NOTE: This functionality will replace Framework property in a next major release."},"result":{"type":"object","nullable":true,"properties":{"totals":{"type":"object","nullable":true,"properties":{"pension":{"type":"number","nullable":true,"description":"The total pension payment for this calculation"},"unemployment":{"type":"number","nullable":true,"description":"The total unemployment payment sum."},"total":{"type":"number","nullable":true,"description":"The total of all calculation rows"},"totalBaseSalary":{"type":"number","nullable":true,"description":"The base salary without overtime and other such additions that are part of gross salary."},"totalGrossSalary":{"type":"number","nullable":true,"description":"Gross salary is the salary including additions like overtime, but not benefits or expenses"},"totalTaxable":{"type":"number","nullable":true,"description":"Taxable salary is the salary from the taxation point of view - includes some benefits."},"taxAtSourceDeduction":{"type":"number","nullable":true,"description":"Deduction from TotalTaxable to tax at source calculation."},"totalSocialSecurityBase":{"type":"number","nullable":true,"description":"DEPRICATED: This is now the same as TotalPensionInsuranceBase. For other social insurances, you may want to use\n     TotalUnemploymentInsuranceBase, TotalHealthInsuranceBase or TotalAccidentInsuranceBase,"},"totalPensionInsuranceBase":{"type":"number","nullable":true,"description":"Base income for calculating the Pension insurance contributions."},"totalUnemploymentInsuranceBase":{"type":"number","nullable":true,"description":"Base income for calculating the Unemployment insurance contributions."},"totalHealthInsuranceBase":{"type":"number","nullable":true,"description":"Base income for calculating the Health insurance contributions."},"totalAccidentInsuranceBase":{"type":"number","nullable":true,"description":"Base income for calculating the Accident insurance contributions."},"totalExpenses":{"type":"number","nullable":true,"description":"Tax free expenses."},"totalPayable":{"type":"number","nullable":true,"description":"Total sum of rows that are paid through Salaxy Customer Funds account.\n     This is the Gross sum before side costs, deductions etc., but it is not Gross salary as it includes expenses etc."}},"description":"Calculation totals that are common to both Worker and Employer."},"irRows":{"type":"array","nullable":true,"items":{"type":"object","properties":{"type":{"nullable":true,"description":"Type of the row - basically describes the source for this row:\n     Either Manual (default) or Usecase logic, which may be legacy / API v02 or new / API v03."},"message":{"type":"string","nullable":true,"description":"Description text of the row that is shown in reports."},"count":{"type":"number","nullable":true,"description":"Count for the row. Default is one."},"price":{"type":"number","nullable":true,"description":"Price for the row."},"total":{"type":"number","nullable":true,"description":"Simple multiplication: Count * Price - no other logic. Not used as Input."},"unit":{"nullable":true,"description":"Unit for the row. If specified as Undefined, set by the server-logic based on row type etc."},"irData":{"type":"object","nullable":true,"properties":{"code":{"type":"number","nullable":true,"description":"The number code in Incomes Register."},"flags":{"type":"array","nullable":true,"items":{"nullable":true},"description":"Boolean flags that can be set on transaction."},"insuranceExceptions":{"type":"array","nullable":true,"items":{"nullable":true},"description":"Defines the exceptions to Insurance / Sidecost defaults that are set by the row type."},"dailyAllowance":{"type":"array","nullable":true,"items":{"nullable":true},"description":"Daily allowance code."},"mealBenefitIsTaxValue":{"type":"boolean","nullable":true,"description":"Set this to true if meak benefit is of tax value - false if it si not.\n     The value should be null if the row is not mealBenefit."},"carBenefit":{"type":"object","nullable":true,"properties":{"carBenefitCode":{"nullable":true,"description":"Car benefit type"},"ageGroupCode":{"nullable":true,"description":"Car age group"},"kilometers":{"type":"number","nullable":true,"description":"Odometer reading\n\n     The value must be greater than or equal to 0"},"emissionsValue":{"type":"number","nullable":true,"description":"Car emissions value\n\n     The car emissions value must be greater than or equal to 0, and smaller than or\n     equal to 100. The car emissions value can only be reported if the payment date\n     or other reporting date is in 2022–2025."}},"description":"Provides the additional data needed for car benefit."},"noTransactionAmount":{"type":"boolean","nullable":true,"description":"If true, report zero amount to IR."}},"description":"Details for the National Incomes registry"},"calcData":{"type":"object","nullable":true,"properties":{"grouping":{"nullable":true,"description":"Grouping for reports etc."},"behavior":{"type":"array","nullable":true,"items":{"nullable":true},"description":"Defines the behavior of the row in Salaxy calculation process."},"type":{"type":"string","nullable":true,"description":"Wage type. Either a built in wage type in Salaxy or a custom wage type created by the user.\n     Please note that this type fully determines the <see cref=\"T:Palkkaus.Model.Calc.CalculationRowType\"></see> and the kind."}},"description":"Details from Salaxy internal calulcation point-of-view (logic not in IR)."},"earningPeriod":{"type":"object","nullable":true,"properties":{"start":{"type":"string","nullable":true,"description":"Start date of the period"},"end":{"type":"string","nullable":true,"description":"End date of the period."},"daysCount":{"type":"number","nullable":true,"description":"Number of days in the range.\n     Depending of the context, this may be mathematical (end - start) or\n     explicitly specified (typically working days).\n     Typically an integer, and calculations and UI's may choose to round it."},"days":{"type":"array","nullable":true,"items":{"type":"string"},"description":"The collection of days contained in the DateRange if specified by the user.\n     Alternative to DaysCount. If set, should also set DaysCount for backward compatibility."}},"description":"Earnings period if different than the report period.\n     Note that this property may be (and by default is) null."},"period":{"type":"object","nullable":true,"properties":{"start":{"type":"string","nullable":true,"description":"Start date of the period"},"end":{"type":"string","nullable":true,"description":"End date of the period."},"daysCount":{"type":"number","nullable":true,"description":"Number of days in the range.\n     Depending of the context, this may be mathematical (end - start) or\n     explicitly specified (typically working days).\n     Typically an integer, and calculations and UI's may choose to round it."},"days":{"type":"array","nullable":true,"items":{"type":"string"},"description":"The collection of days contained in the DateRange if specified by the user.\n     Alternative to DaysCount. If set, should also set DaysCount for backward compatibility."}},"description":"Period for the calculation row. This is mainly used for absences (AbsencePeriod row type), leaves and holidays (HolidaySalary, HolidayBonus and HolidayCompensation).\n     Note that this property may be (and by default is) null."},"accounting":{"type":"object","nullable":true,"properties":{"vatPercent":{"type":"number","nullable":true,"description":"Percent for VAT calculation expressed as decimal: 24% is 0.24."},"vatEntries":{"type":"array","nullable":true,"items":{"type":"object","properties":{"tax":{"type":"number","nullable":true,"description":"Tax amount of specific VAT rate in euro.\n     This value is mandatory, if the collection of VatEntries contains more than one item."},"vatRate":{"nullable":true,"description":"Applied VAT rate. This is always mandatory."},"taxPercent":{"type":"number","nullable":true,"description":"Tax as percent of Net sales (0-1). Currently just informative, but may later be used for Custom non-standard VAT rates."},"gross":{"type":"number","nullable":true,"description":"Gross sales for specific VAT rate including the tax (VAT).\n     This value is mandatory, if the collection of VatEntries contains more than one item."},"net":{"type":"number","nullable":true,"description":"Net sales for specific VAT rate excluding the tax (VAT).\n     This value is mandatory, if the collection of VatEntries contains more than one item."}}},"description":"Total VAT amount splitted by VAT rates.\n     Please note, that if both {Palkkaus.Model.Calc.RowAccounting.VatPercent} and the {Palkkaus.Model.Calc.RowAccounting.VatEntries} with some entries given,\n     the {Palkkaus.Model.Calc.RowAccounting.VatEntries} are applied.\n     Please note that this is null by default."},"dimensions":{"type":"array","nullable":true,"items":{"type":"object","properties":{"id":{"type":"string","nullable":true,"description":"Dimension Id."},"value":{"type":"string","nullable":true,"description":"Cost accounting dimension value id."},"percent":{"type":"number","nullable":true,"description":"Sharing percent for the dimension."}}},"description":"Values for cost accounting dimensions"},"entry":{"type":"object","nullable":true,"properties":{"debitAccountNumber":{"type":"string","nullable":true,"description":"Debit Account number.\n     If given will override the system resolved debit account number."},"creditAccountNumber":{"type":"string","nullable":true,"description":"Credit Account number.\n     If given will override the system resolved credit account number."}},"description":"Row accounting entries for overriding standard accounting logic."}},"description":"Accounting related data for the row."},"data":{"type":"object","nullable":true,"properties":{},"description":"Usecase specific data"}}},"description":"Rows that are compatible with Incomes Register (tulorekisteri) process.\n     These are available only for calculations paid after 7.2.2019 (TODO: estimation as of writing)."},"employerCalc":{"type":"object","nullable":true,"properties":{"allSideCosts":{"type":"number","nullable":true,"description":"All side cost: The mandatory side costs + Palkkaus and partner fees"},"finalCost":{"type":"number","nullable":true,"description":"The final cost after household decuction from the tax authorities:\n     Add to the payment the deductions (paid by employer) and deduct House hold deduction (later potentially other such subsidies)"},"householdDeduction":{"type":"number","nullable":true,"description":"Household deduction that the tax man will reimburse in taxation.\n     This is an estimation: There is minimum and maximum limits etc."},"mandatorySideCosts":{"type":"number","nullable":true,"description":"The mandatory side costs are Pension (TyEL), Social secuirty and Unemployment insurance."},"palkkaus":{"type":"number","nullable":true,"description":"The Palkkaus.fi fee including potential partner fees."},"service":{"type":"number","nullable":true,"description":"Extra service charge in addition to Palkkaus fee."},"pension":{"type":"number","nullable":true,"description":"The part of the Pension that Employer pays"},"socialSecurity":{"type":"number","nullable":true,"description":"The social security payment- paid as part of taxation (ennakonpidätys)."},"totalPayment":{"type":"number","nullable":true,"description":"Total payment that is Paid to Palkkaus.fi"},"totalPaymentLegacy":{"type":"number","nullable":true,"description":"Total payment using pre Insiders register calculation logic.\n     DEPRICATED: This is provided for special scenarios and may be removed without warning"},"totalSalaryCost":{"type":"number","nullable":true,"description":"Total salary cost is the paid salary, deductions and side costs, but not expenses."},"unemployment":{"type":"number","nullable":true,"description":"The part of the unemployment insurance that the employer pays"},"totalDeductions":{"type":"number","nullable":true,"description":"Total deductions that are made from the payment that is paid to Palkkaus and then to Worker"},"deductionUnionPayment":{"type":"number","nullable":true,"description":"Union payment if it is deducted from the final figure"},"deductionPensionSelfPayment":{"type":"number","nullable":true,"description":"Pension payments, when paid directly by the Employer - not by Palkkaus.fi"},"deductionUnemploymentSelfPayment":{"type":"number","nullable":true,"description":"Unemployment insurance (TVR) payments, when paid directly by the Employer - not by Palkkaus.fi"},"deductionSalaryAdvance":{"type":"number","nullable":true,"description":"Salary advance - this part has already been paid."},"deductionForeclosure":{"type":"number","nullable":true,"description":"Foreclosure that has already been paid by the employer."},"deductionTaxAndSocialSecuritySelfPayment":{"type":"number","nullable":true,"description":"Tax and social security payments, when paid directly by the Employer - not by Palkkaus.fi"},"deductionWorkerSelfPayment":{"type":"number","nullable":true,"description":"Worker salary and expense payments, when paid directly by the Employer - not by Palkkaus.fi"},"foreclosureByPalkkaus":{"type":"number","nullable":true,"description":"Foreclosure that Palkkaus.fi pays in behalf of employer."},"deductionOtherDeductions":{"type":"number","nullable":true,"description":"Other deductions that are deducted from the net salary."}},"description":"The calculation from the Employer point-of-view"},"workerCalc":{"type":"object","nullable":true,"properties":{"benefits":{"type":"number","nullable":true,"description":"The benefits as valued by the tax authority."},"deductions":{"type":"number","nullable":true,"description":"All the items that are deducted from the salary (this is also the order if there is not enough payable money):\n     SalaryAdvance + Tax + Pension + UnemploymentInsurance + UnionPayment + OtherDeductions"},"salaryPayment":{"type":"number","nullable":true,"description":"The payment that is made to the Worker based on salary after all deductions.\n     Does not include expenses."},"salaryAdvance":{"type":"number","nullable":true,"description":"The salary advance that was paid to the Worker"},"foreclosure":{"type":"number","nullable":true,"description":"The foreclosure that been deducted from the salary by the employer."},"tax":{"type":"number","nullable":true,"description":"Ennakonpidätys: The taxes that were deducted from the worker salary."},"taxAtSource":{"type":"number","nullable":true,"description":"Lähdevero: The tax at source that were deducted from the worker salary."},"salaryAfterTax":{"type":"number","nullable":true,"description":"Net salary after tax - before worker foreclosure or deductions of the side costs"},"salaryAfterTaxAndForeclosure":{"type":"number","nullable":true,"description":"Net salary after tax and foreclosure."},"pension":{"type":"number","nullable":true,"description":"Part of the Pension that is taken from the Worker side of the salary."},"unemploymentInsurance":{"type":"number","nullable":true,"description":"Workers part of the unemployment insurance."},"socialSecurity":{"type":"number","nullable":true,"description":"The social security payment. NOT paid as a part of tax withhold ."},"unionPayment":{"type":"number","nullable":true,"description":"The union payment that is deducted from the Worker salarya s per workers request."},"fullTax":{"type":"number","nullable":true,"description":"Widthholding tax: The original calulated version - there might not be enough money to finally pay this."},"fullTaxAtSource":{"type":"number","nullable":true,"description":"Tax at source: The original calulated version - there might not be enough money to finally pay this."},"fullSalaryAdvance":{"type":"number","nullable":true,"description":"The salary advance that was paid to the Worker\n     The original calulated version - there might not be enough money to finally pay this."},"fullPension":{"type":"number","nullable":true,"description":"Part of the Pension that is taken from the Worker side of the salary.\n     The original calulated version - there might not be anough money to finally pay this."},"fullUnemploymentInsurance":{"type":"number","nullable":true,"description":"Workers part of the unemployment insurance.\n     The original calulated version - there might not be anough money to finally pay this."},"fullSocialSecurity":{"type":"number","nullable":true,"description":"The social security payment. NOT paid as a part of tax withhold .\n     The original calculted version."},"fullUnionPayment":{"type":"number","nullable":true,"description":"The union payment that is deducted from the Worker salarya s per workers request."},"totalWorkerPayment":{"type":"number","nullable":true,"description":"The sum that is at the end paid to the Worker:\n     Salary payment + expenses"},"totalWorkerPaymentLegacy":{"type":"number","nullable":true,"description":"Total payment using pre Insiders register calculation logic.\n     DEPRICATED: This is provided for special scenarios and may be removed without warning"},"workerSideCosts":{"type":"number","nullable":true,"description":"The side costs that are deducted from the Worker salary according to law:\n     Pension, Unemployment and Union payment. Tax is not included in this number.\n     This is not an official number, really used in the charts etc."},"fullOtherDeductions":{"type":"number","nullable":true,"description":"Other deductions that are deducted from the net salary.\n     The original calulated version - there might not be enough money to finally deduct this."},"otherDeductions":{"type":"number","nullable":true,"description":"Part of the other deductions that are deducted from the net salary."},"fullPrepaidExpenses":{"type":"number","nullable":true,"description":"Prepaid expenses that are deducted from the expenses to be paid to the worker.\n     The original calulated version - there might not be enough money to finally deduct this."},"prepaidExpenses":{"type":"number","nullable":true,"description":"Part of the prepaid expenses that are deducted from the expenses."}},"description":"The calculation from the Worker point-of-view"},"rows":{"type":"array","nullable":true,"items":{"type":"object","properties":{"userRowIndex":{"type":"number","nullable":true,"description":"Row index that matches this row to a user defined row (which is zero-based).\n     If the row is generated by calculation business logic (e.g. based on framework agreement), the index is -1."},"type":{"type":"string","nullable":true,"description":"Wage type. Either a built in wage type in Salaxy or a custom wage type created by the user.\n     Please note that this type fully determines the <see cref=\"T:Palkkaus.Model.Calc.CalculationRowType\"></see> and the kind."},"rowType":{"nullable":true,"description":"Logical type of the row"},"rowSource":{"nullable":true,"description":"Source of the calculation row - affects how the row is handled in editing / recalculation scenarios."},"message":{"type":"string","nullable":true,"description":"Description text of the row that is shown in reports. If null, will be set according to type."},"count":{"type":"number","nullable":true,"description":"Count for the row - default is one"},"price":{"type":"number","nullable":true,"description":"Price for the row"},"unit":{"nullable":true,"description":"Unit for the row"},"total":{"type":"number","nullable":true,"description":"Total for the row - always Price * Count"},"totalBaseSalary":{"type":"number","nullable":true,"description":"Base salary (Peruspalkka) is the monthly salary or total salary without addiotions (overtime, holidays etc.)"},"totalGrossSalary":{"type":"number","nullable":true,"description":"Gross salary (Bruttopalkka) is \"real\" salary including the additions (overtime, holidays etc.) but not benefits."},"totalTaxable":{"type":"number","nullable":true,"description":"Taxable income (Ennakonpidätyksen alainen ansio) is the salary from taxation point-of-view. It is basically the Gross Salary plus benefits."},"totalSocialSecurityBase":{"type":"number","nullable":true,"description":"Social Security Base (Sosiaaliturvan alainen ansio) is typically the same as TotalTaxable,\n     but e.g. child care subsidy (yksityisen hoidon tuki) is handled differently."},"totalExpenses":{"type":"number","nullable":true,"description":"Taxfree expenses compensation"},"totalDeduction":{"type":"number","nullable":true,"description":"Deductions from the salary: Union payment, Advance, Foreclosure"},"sourceId":{"type":"string","nullable":true,"description":"Identifier in the source system is a key defined by a source system / partner system.\n     This is a pass-through string that is kept as-is in the Salaxy system."},"period":{"type":"object","nullable":true,"properties":{"start":{"type":"string","nullable":true,"description":"Start date of the period"},"end":{"type":"string","nullable":true,"description":"End date of the period."},"daysCount":{"type":"number","nullable":true,"description":"Number of days in the range.\n     Depending of the context, this may be mathematical (end - start) or\n     explicitly specified (typically working days).\n     Typically an integer, and calculations and UI's may choose to round it."},"days":{"type":"array","nullable":true,"items":{"type":"string"},"description":"The collection of days contained in the DateRange if specified by the user.\n     Alternative to DaysCount. If set, should also set DaysCount for backward compatibility."}},"description":"Period if different than the Period of calculation.\n     Will be reported to the National Incomes registry, but also affect some other calculations.\n     Note that this property may be (and by default is) null."},"accounting":{"type":"object","nullable":true,"properties":{"vatPercent":{"type":"number","nullable":true,"description":"Percent for VAT calculation expressed as decimal: 24% is 0.24."},"vatEntries":{"type":"array","nullable":true,"items":{"type":"object","properties":{"tax":{"type":"number","nullable":true,"description":"Tax amount of specific VAT rate in euro.\n     This value is mandatory, if the collection of VatEntries contains more than one item."},"vatRate":{"nullable":true,"description":"Applied VAT rate. This is always mandatory."},"taxPercent":{"type":"number","nullable":true,"description":"Tax as percent of Net sales (0-1). Currently just informative, but may later be used for Custom non-standard VAT rates."},"gross":{"type":"number","nullable":true,"description":"Gross sales for specific VAT rate including the tax (VAT).\n     This value is mandatory, if the collection of VatEntries contains more than one item."},"net":{"type":"number","nullable":true,"description":"Net sales for specific VAT rate excluding the tax (VAT).\n     This value is mandatory, if the collection of VatEntries contains more than one item."}}},"description":"Total VAT amount splitted by VAT rates.\n     Please note, that if both {Palkkaus.Model.Calc.RowAccounting.VatPercent} and the {Palkkaus.Model.Calc.RowAccounting.VatEntries} with some entries given,\n     the {Palkkaus.Model.Calc.RowAccounting.VatEntries} are applied.\n     Please note that this is null by default."},"dimensions":{"type":"array","nullable":true,"items":{"type":"object","properties":{"id":{"type":"string","nullable":true,"description":"Dimension Id."},"value":{"type":"string","nullable":true,"description":"Cost accounting dimension value id."},"percent":{"type":"number","nullable":true,"description":"Sharing percent for the dimension."}}},"description":"Values for cost accounting dimensions"},"entry":{"type":"object","nullable":true,"properties":{"debitAccountNumber":{"type":"string","nullable":true,"description":"Debit Account number.\n     If given will override the system resolved debit account number."},"creditAccountNumber":{"type":"string","nullable":true,"description":"Credit Account number.\n     If given will override the system resolved credit account number."}},"description":"Row accounting entries for overriding standard accounting logic."}},"description":"Accounting related data for the row."},"data":{"type":"object","nullable":true,"properties":{},"description":"Usecase specific data"}}},"description":"The result rows. Note that this collection also contains the main Salary entry as one of the rows."},"responsibilities":{"type":"object","nullable":true,"properties":{"employerGroups":{"type":"object","nullable":true,"properties":{"isPrivatePerson":{"type":"boolean","nullable":true,"description":"If true, the Employer is a private person.\n     Otherwise Company or Unknown."}},"description":"Employer groups that are set on Example calculations.\n     These will be replaced by properties from Worker / Employer when these persons are set."},"noPensionPayment":{"type":"boolean","nullable":true,"description":"Pension is not paid if the salary to this Worker is less than a certain amount in a month (about 60€)\n     or worker is less than 17 or more than 64 years old."},"noSocialSecurity":{"type":"boolean","nullable":true,"description":"If worker is less than 16 or more than 67, social secuiry payment is not paid"},"noTvr":{"type":"boolean","nullable":true,"description":"If Worker is less than 17 or more than 64, TVR is not paid.\n     Also if the Employer has no accident insurance."},"pensionCompany":{"nullable":true,"description":"The name of the Pension company because this affects the Pension percentage used in the calculation (only in contract situation).\n     It also needs to be shown in the reports."},"pensionDiscountPercent":{"type":"number","nullable":true,"description":"Pension discount percent."},"pensionPercent":{"type":"number","nullable":true,"description":"Customer specific pension percent."},"insuranceCompany":{"nullable":true,"description":"Company for the current insurance"},"insurancePercent":{"type":"number","nullable":true,"description":"Percent for calculating the estimate for the accident insurance amount to pay."},"groupLifeInsurancePercent":{"type":"number","nullable":true,"description":"Percent for calculating the estimate for the group life insurance amount to pay."},"insuranceContractNumber":{"type":"string","nullable":true,"description":"Accident insurance contract number."},"pensionOldAgePayment":{"type":"boolean","nullable":true,"description":"If the Worker is from 53 to 62 years old, more of the Pension payment\n     is deducted from the Worker side of the salary (less for the Employer).\n     NOTE: People from 63 to 67 years pay the same amount as 17-52 years old."},"pensionRegularEmployer":{"type":"boolean","nullable":true,"description":"The employer should have a Pension contract (not a temporary employer).\n     It does not necessarily mean that the user has a contract yet.\n     NOTE: At the moment, this is not used for calculation - only in the Side costs visualizer tool."},"isPensionMonthlyContract":{"type":"boolean","nullable":true,"description":"If true, the employer has a Pension contract and makes the payments\n     in a monthly schedule which means that Pension interest is calculated for the 20th of the next month.\n     Currently, this is only enabled to Etera - other companies will follow."},"unemploymentSelfPayment":{"type":"boolean","nullable":true,"description":"If true, the employer pays the Unemployment insurance directly to TVR.\n     As of writing, this is true for all companies and with calculations starting 1.8.2018,\n     false for households or calculations before the date."},"calculationPaymentDate":{"type":"string","nullable":true,"description":"The assumed salary payment date from the worker perspective.\n     The system calculates the nearest possible salary date if no any salary date has been given by the\n     employer. If given, the system confirms the given date.\n     This date affects the yearly percents used in the salary calculation."},"pensionAgeRange":{"nullable":true,"description":"The age range that is used in the business logic that determines the employer responsibilities.\n     This property replaces the EmployerGroups.AgeRange that was previous get/set.\n     This is based on WorkerDateOfBirth and CalculationPaymentDate."},"workerDateOfBirth":{"type":"string","nullable":true,"description":"Date of birth for the Worker - this affects the side costs.\n     Please also set the DateOfBirthAccuracy, if you set this property.\n     If SocialSecurityNumber is set, it will override any value set here."},"workerDateOfBirthAccuracy":{"nullable":true,"description":"Accuracy of the date of birth\n     If SocialSecurityNumber is set, it will override any value set here."},"pensionCalculation":{"nullable":true,"description":"Pension calculation type."},"pensionRule":{"nullable":true,"description":"Rules (e.g. effect of monthly lower limit) for pension calculation."},"employmentType":{"nullable":true,"description":"Type of the employment relation"},"employmentTaxcard":{"nullable":true,"description":"Taxcard type from the employment point of view."},"salaryPaymentMethod":{"nullable":true,"description":"Worker's preferred salary payment method: bank account, external etc."},"irIncomeEarnerTypes":{"type":"array","nullable":true,"items":{"nullable":true},"description":"Type of additional income earner data by National Incomer Register classification . If several types apply, all of them should be selected."},"subOrgCode":{"type":"string","nullable":true,"description":"Sub organization code for the Incomes Registry."},"employmentRegCode":{"type":"string","nullable":true,"description":"Employment registration code for Incomes Registry."},"taxAndSocialSecuritySelfPayment":{"type":"boolean","nullable":true,"description":"Tax and social security payments are paid directly by the Employer - not by Palkkaus.fi"},"workerSelfPayment":{"type":"boolean","nullable":true,"description":"Worker salary and expense payments are paid directly by the Employer - not by Palkkaus.fi"},"pensionSelfPayment":{"type":"boolean","nullable":true,"description":"Pension payments are paid directly by the Employer - not by Palkkaus.fi"},"pensionContractNumber":{"type":"string","nullable":true,"description":"Pension insurance contract number."},"unemploymentPayrollLimitStatus":{"nullable":true,"description":"Status for indicating whether the total amount of paid salaries exceeds the thresold for higher unemployment insurance percent."},"salarySlipDeliveryMethods":{"type":"array","nullable":true,"items":{"nullable":true},"description":"Options for the delivery of the payslip to the worker."}},"description":"Responsibilities of Employer and parameters that affect those responsibilities."},"validation":{"type":"object","nullable":true,"properties":{"isValid":{"type":"boolean","nullable":true,"description":"If true, the data is valid - no errors."},"hasAllRequiredFields":{"type":"boolean","nullable":true,"description":"If true, has required fields missing data."},"errors":{"type":"array","nullable":true,"items":{"type":"object","properties":{"key":{"type":"string","nullable":true,"description":"Full path to Name of the property / field (Member name in JSON).\n     This may be null/empty for type General."},"type":{"nullable":true,"description":"High level type: Specifies the relation to object and its Member."},"msg":{"type":"string","description":"Validation error message in the requested language."},"description":{"type":"string","nullable":true,"description":"Validation error long description in the requested language."},"code":{"type":"string","nullable":true,"description":"Some error providers may have a unique technical code for error or validator"}},"required":["msg"]},"description":"Validation errors on invalid field values.\n     Note that required fields missing error messages are not here. Only the invalid values."}},"description":"The validation result for the current calculation.\n     Please note that this is not serialized into the data storage."}},"description":"The results of the calculation. In the API, this is a read-only object."},"info":{"type":"object","nullable":true,"properties":{"workStartDate":{"type":"string","nullable":true,"description":"Start date of the work"},"workEndDate":{"type":"string","nullable":true,"description":"End date of the work"},"workDescription":{"type":"string","nullable":true,"description":"Description of the work for reporting purposes. Max 32 chars."},"workerMessage":{"type":"string","nullable":true,"description":"Message from worker to employer - when worker sends the salary calculation to the employer."},"salarySlipMessage":{"type":"string","nullable":true,"description":"Message which will be displayed in the payslip."},"paymentId":{"type":"string","nullable":true,"description":"Payment reference number in payment service"},"originalPaymentId":{"type":"string","nullable":true,"description":"Original Payment reference number"},"irSenderOfficialId":{"type":"string","nullable":true,"description":"Earnings Payment Report Official id of the sender."},"paymentChannel":{"nullable":true,"description":"Channel that is used for payment."},"applicationId":{"type":"string","nullable":true,"description":"Application id for invoicing etc. purposes."},"messageThreadId":{"type":"string","nullable":true,"description":"The MessageThread Id, if this calculation is referred in a message thread."},"reportDate":{"type":"string","nullable":true,"description":"Assumed earnings payment report date for the report."},"backofficeNotes":{"type":"string","nullable":true,"description":"Notes related to the payment and other backoffice operations:\n     For example the justification why the sum is in calculation vs. Paytrail payment."},"occupationCode":{"type":"string","nullable":true,"description":"Occupation classification, used at least for Accident insurance purposes, but may be used for other reporting.\n     For Finnish Salaries use the Statistics Finland\n     \"Classification of Occupations 2010\" (TK10): https://www.stat.fi/meta/luokitukset/ammatti/017-2018-05-15/index_en.html"},"occupationCode2":{"type":"string","nullable":true,"description":"Secondary occupation classification. Some earnings payment reports may require two occupation codes."},"cbaCode":{"type":"number","nullable":true,"description":"Applicable collective agreement"},"employeeGroup":{"type":"string","nullable":true,"description":"Employee group."},"pensionPaymentDate":{"type":"string","nullable":true,"description":"Calculated pension insurance payment date."},"pensionPaymentRef":{"type":"string","nullable":true,"description":"Pension insurance reference number."},"pensionPaymentSpecifier":{"type":"string","nullable":true,"description":"Pension insurance payment specifier."},"payrollId":{"type":"string","nullable":true,"description":"The Payroll Id, if this calculation is part of a Payroll list."},"costCenter":{"type":"string","nullable":true,"description":"Cost center for reporting purposes."},"workerSourceId":{"type":"string","nullable":true,"description":"Identifier of the worker in a source system. Used in imports etc.\n     This is automatically set from the source id of the employment."},"sourceId":{"type":"string","nullable":true,"description":"Identifier of the calculation in a source system. Used in imports etc."}},"description":"Information about the work that is not directly related to calculating salary and expenses."},"sharing":{"type":"object","nullable":true,"properties":{"type":{"nullable":true,"description":"Type of sharing for this calculation."},"uri":{"type":"string","nullable":true,"description":"Sharing uri."},"lastSharedTo":{"type":"string","nullable":true,"description":"Email address to which the calculation was shared last time."},"lastSharedCc":{"type":"string","nullable":true,"description":"Email address which the calculation was shared as cc last time."},"lastSharedMessage":{"type":"string","nullable":true,"description":"Last shared message to the employer"}},"description":"Sharing of the calculation. This object cannot be modified directly,\n     use specialized methods in Calculations service."},"accounting":{"type":"object","nullable":true,"properties":{"dimensions":{"type":"array","nullable":true,"items":{"type":"object","properties":{"id":{"type":"string","nullable":true,"description":"Dimension Id."},"value":{"type":"string","nullable":true,"description":"Cost accounting dimension value id."},"percent":{"type":"number","nullable":true,"description":"Sharing percent for the dimension."}}},"description":"Values for cost accounting dimensions"}},"description":"Contains calculation specific data for accounting (both cost and financial accounting)."},"worktime":{"type":"object","nullable":true,"properties":{"employmentPeriod":{"type":"object","nullable":true,"properties":{"start":{"type":"string","nullable":true,"description":"Start date of the period"},"end":{"type":"string","nullable":true,"description":"End date of the period."},"daysCount":{"type":"number","nullable":true,"description":"Number of days in the range.\n     Depending of the context, this may be mathematical (end - start) or\n     explicitly specified (typically working days).\n     Typically an integer, and calculations and UI's may choose to round it."},"days":{"type":"array","nullable":true,"items":{"type":"string"},"description":"The collection of days contained in the DateRange if specified by the user.\n     Alternative to DaysCount. If set, should also set DaysCount for backward compatibility."}},"description":"Employment period that is updated from employment at each recalculation (as opposed to holiday specification)."},"wageBasis":{"nullable":true,"description":"Wage basis from the current employment relation.\n     This is for absences and does not presume that holiday years exist for the worker."},"workDays":{"type":"object","nullable":true,"properties":{"start":{"type":"string","nullable":true,"description":"Start date of the period"},"end":{"type":"string","nullable":true,"description":"End date of the period."},"daysCount":{"type":"number","nullable":true,"description":"Number of days in the range.\n     Depending of the context, this may be mathematical (end - start) or\n     explicitly specified (typically working days).\n     Typically an integer, and calculations and UI's may choose to round it."},"days":{"type":"array","nullable":true,"items":{"type":"string"},"description":"The collection of days contained in the DateRange if specified by the user.\n     Alternative to DaysCount. If set, should also set DaysCount for backward compatibility."}},"description":"Describes the working days in the period.\n     Currently, uses the DaysCount, but later the full days array will be taken to use.\n     This includes the absence days (divider in AbsencesDaySalary)."},"absencesPeriods":{"type":"array","nullable":true,"items":{"type":"object","properties":{"id":{"type":"string","nullable":true,"description":"Identifies a single leave."},"period":{"type":"object","nullable":true,"properties":{"start":{"type":"string","nullable":true,"description":"Start date of the period"},"end":{"type":"string","nullable":true,"description":"End date of the period."},"daysCount":{"type":"number","nullable":true,"description":"Number of days in the range.\n     Depending of the context, this may be mathematical (end - start) or\n     explicitly specified (typically working days).\n     Typically an integer, and calculations and UI's may choose to round it."},"days":{"type":"array","nullable":true,"items":{"type":"string"},"description":"The collection of days contained in the DateRange if specified by the user.\n     Alternative to DaysCount. If set, should also set DaysCount for backward compatibility."}},"description":"Period for the absance."},"causeCode":{"nullable":true,"description":"Cause / type of the absence"},"isPaid":{"type":"boolean","nullable":true,"description":"If true, the absence is paid by the employer."},"isHolidayAccrual":{"type":"boolean","nullable":true,"description":"If true, annual leaves are accrued from the absence. If false, these days are deducted from the accrual.\n     By default, you may leave this null and it always follows the IsPaid."},"amount":{"type":"number","nullable":true,"description":"Amount of salary that is paid for the absense.\n     Currently not in use: Would be used in Incomes Register integration."},"notes":{"type":"string","nullable":true,"description":"Additional information as recorded by the Employer."},"sourceId":{"type":"string","nullable":true,"description":"Identifier in the source system is a key defined by a source system / partner system.\n     This is a pass-through string that is passed to the result calculations."},"bonusDaysCount":{"type":"number","nullable":true,"description":"Number of Bonus days to be paid. This is applicable only for {Palkkaus.Model.Worktime.Absences.AbsenceCauseCode.AnnualLeave}AnnualLeave."}}},"description":"Periods of 'absences'."},"absencesDailySalary":{"type":"number","nullable":true,"description":"Price for a single absence day. Typically based on MonthlySalary, but may be modified."},"holidaySpec":{"type":"object","nullable":true,"properties":{"wageBasis":{"nullable":true,"description":"Wage basis for a Holiday Year.\n     When this is changed, you need to make a rerun to the previous calculations in the holiday year.\n     NOTE: This is not in HolidaySpecification because, the same value is stored in Employment relation."},"employmentPeriod":{"type":"object","nullable":true,"properties":{"start":{"type":"string","nullable":true,"description":"Start date of the period"},"end":{"type":"string","nullable":true,"description":"End date of the period."},"daysCount":{"type":"number","nullable":true,"description":"Number of days in the range.\n     Depending of the context, this may be mathematical (end - start) or\n     explicitly specified (typically working days).\n     Typically an integer, and calculations and UI's may choose to round it."},"days":{"type":"array","nullable":true,"items":{"type":"string"},"description":"The collection of days contained in the DateRange if specified by the user.\n     Alternative to DaysCount. If set, should also set DaysCount for backward compatibility."}},"description":"Employment period for the purposes of holiday calculation (annual leave accrual).\n     When this is changed, you need to make a rerun to the previous calculations in the holiday year."},"code":{"nullable":true,"description":"Defines how the holidays are handled for the worker."},"holidayPayCalculation":{"nullable":true,"description":"Defines how the holiday pay is calculated."},"accrualFixed":{"type":"number","nullable":true,"description":"Defines the number of holidays that the worker is entitled per month worked.\n     If the value is set to 0 (default), the number is 2 for first year and 2,5 thereafter as defined in the law.\n     To actually se the daysPerMonth to zero, use code value other than Permanent14Days or Permanent35Hours."},"compensation":{"type":"number","nullable":true,"description":"For {Palkkaus.Model.Worktime.Holidays.HolidayPayCalculation.HolidayCompensation} the compensation percent.\n     Holiday compensation as percent of salary (11.5% is 0.115)"},"holidayPayPercent":{"type":"number","nullable":true,"description":"For {Palkkaus.Model.Worktime.Holidays.HolidayPayCalculation.PercentageBasedPay} the percent.\n     Holiday pay as percent of salary (11.5% is 0.115)"},"bonusMethod":{"nullable":true,"description":"Method for paying holiday bonus in this salary calculation."},"bonus":{"type":"number","nullable":true,"description":"Holiday bonus for the worker (lomaraha, lomaltapaluuraha).\n     Typically 0.5 for 50%."}},"description":"Specification for the holiday calculation"},"leavesDailySalary":{"type":"number","nullable":true,"description":"Price for a single holiday day"},"bonusDailySalary":{"type":"number","nullable":true,"description":"Price for a single bonus day"},"holidayPayAccrualRemaining":{"type":"number","nullable":true,"description":"Total remaining amount of holiday pay accrual."},"holidayBonusAccrualRemaining":{"type":"number","nullable":true,"description":"Total remaining amount of holiday bonus accrual."},"accruals":{"type":"array","nullable":true,"items":{"type":"object","properties":{"month":{"type":"string","nullable":true,"description":"First day of month for the holiday month"},"daysAccrued":{"type":"number","nullable":true,"description":"Holiday accrual for this month.\n     Note that -1 is indication that accrual should not be updated for this particylar month.\n     There is no possiblity for negative accrual."},"absencesDays":{"type":"number","nullable":true,"description":"Number of absence days used in the calculation."},"workDays":{"type":"number","nullable":true,"description":"Work days in determining the accrual for the month in 14 days rule."},"workHours":{"type":"number","nullable":true,"description":"Work hours in determining the accrual fot the month in 35 hour rule."},"calcId":{"type":"string","nullable":true,"description":"Id of the calculation that this accrual is related to."}}},"description":"Accruals for each calendar month in this calculation."},"accrualSpec":{"type":"object","nullable":true,"properties":{"year":{"type":"number","nullable":true,"description":"Year as integer"},"code":{"nullable":true,"description":"Defines how the holidays are handled for the worker."},"wageBasis":{"nullable":true,"description":"Wage basis for a Holiday Year."},"defaultAccrual":{"type":"number","nullable":true,"description":"Default accrual for months where the Accrual occurs."}},"description":"Specification for the accrual calculation"}},"description":"Worktime data that is stored as part of Salary calculation:\n     work days, absences, holidays and holiday accrual.\n     In the future may also contain relevant part of timesheet data (work hours)."},"workflowData":{"type":"object","nullable":true,"properties":{"events":{"type":"array","nullable":true,"items":{"type":"object","properties":{"id":{"type":"string","nullable":true,"description":"Event-provider specific identifier for the event.\n     For deletable events, this should identify , but do NOT trust this to be 100% unique."},"type":{"type":"string","nullable":true,"description":"Type of the event. This typically maps to parent-object specific enumeration."},"message":{"type":"string","nullable":true,"description":"Message for backoffice purposes from the User or system that created the event."},"ui":{"nullable":true,"description":"User Interface styling of the event: Indicates the severity for the end-user."},"features":{"type":"array","nullable":true,"items":{"nullable":true},"description":"Features for this event."},"time":{"type":"string","nullable":true,"description":"UTC time for when the event occured."},"user":{"type":"string","nullable":true,"description":"User or system that created the event."},"assignedTo":{"type":"string","nullable":true,"description":"Credential of the user which is responsible of the event."},"record":{"type":"string","nullable":true,"description":"Record attached to this event."}}},"description":"Workflow events for the item."}},"description":"Readonly workflow data, which is exposed to API."},"id":{"type":"string","nullable":true,"description":"Identifier of the object."},"createdAt":{"type":"string","nullable":true,"description":"The date when the object was created."},"updatedAt":{"type":"string","nullable":true,"description":"The time when the object was last updated.\n     Typically this should be a logical update by user (UserUpdatedAt in DTO), not technical updates."},"owner":{"type":"string","nullable":true,"description":"Owner ID for this data"},"isReadOnly":{"type":"boolean","nullable":true,"description":"Indication that for the currently logged-in account, the data is generally read-only."},"partner":{"type":"string","nullable":true,"description":"Primary partner information. Automatically updated from the storage container Partner."}}},"SimpleCalculatorInput":{"type":"object","properties":{"employmentId":{"type":"string","description":"The employment id.\nIn thesting, use typically \"example-default\". Use \"example-17\" for underage workers and \"example-pensioner\" for pensioners.\nEmpty defaults to \"example-default\".","example":"example-default"},"salaryDate":{"type":"string","format":"date","description":"The salary date is the date when the employee receives the salary on their back account.\nEmpty defaults to today."},"period":{"type":"object","properties":{"start":{"type":"string","format":"date","description":"The start date","example":"2026-01-01"},"end":{"type":"string","format":"date","description":"The end date","example":"2026-01-31"}},"required":["start","end"],"description":"The work period from which the salary is paid.\nEmpty defaults to today's month.","example":{"start":"2026-01-01","end":"2026-01-31"}},"rows":{"type":"array","items":{"type":"object","properties":{"rowType":{"nullable":true,"description":"Logical type of the row. See CalculationRowType for possible values."},"message":{"type":"string","description":"Description text of the row that is shown in reports.\nTypically, leave this undefined to get the language versioned text from the row type.\nAdd text only if you need to override the default text."},"count":{"type":"number","description":"Count for the row - default is one"},"price":{"type":"number","description":"Price for the row"},"accounting":{"type":"object","properties":{"vatPercent":{"type":"number","nullable":true,"description":"Percent for VAT calculation expressed as decimal: 24% is 0.24."},"vatEntries":{"type":"array","nullable":true,"items":{"type":"object","properties":{"tax":{"type":"number","nullable":true,"description":"Tax amount of specific VAT rate in euro.\n     This value is mandatory, if the collection of VatEntries contains more than one item."},"vatRate":{"nullable":true,"description":"Applied VAT rate. This is always mandatory."},"taxPercent":{"type":"number","nullable":true,"description":"Tax as percent of Net sales (0-1). Currently just informative, but may later be used for Custom non-standard VAT rates."},"gross":{"type":"number","nullable":true,"description":"Gross sales for specific VAT rate including the tax (VAT).\n     This value is mandatory, if the collection of VatEntries contains more than one item."},"net":{"type":"number","nullable":true,"description":"Net sales for specific VAT rate excluding the tax (VAT).\n     This value is mandatory, if the collection of VatEntries contains more than one item."}}},"description":"Total VAT amount splitted by VAT rates.\n     Please note, that if both {Palkkaus.Model.Calc.RowAccounting.VatPercent} and the {Palkkaus.Model.Calc.RowAccounting.VatEntries} with some entries given,\n     the {Palkkaus.Model.Calc.RowAccounting.VatEntries} are applied.\n     Please note that this is null by default."},"dimensions":{"type":"array","nullable":true,"items":{"type":"object","properties":{"id":{"type":"string","nullable":true,"description":"Dimension Id."},"value":{"type":"string","nullable":true,"description":"Cost accounting dimension value id."},"percent":{"type":"number","nullable":true,"description":"Sharing percent for the dimension."}}},"description":"Values for cost accounting dimensions"},"entry":{"type":"object","nullable":true,"properties":{"debitAccountNumber":{"type":"string","nullable":true,"description":"Debit Account number.\n     If given will override the system resolved debit account number."},"creditAccountNumber":{"type":"string","nullable":true,"description":"Credit Account number.\n     If given will override the system resolved credit account number."}},"description":"Row accounting entries for overriding standard accounting logic."}},"description":"Accounting related data for the row.\nSet the object only if you need to add dimensions data, specify VAT for expenses etc. or override the accounts (credit / debit account numbers)."},"period":{"type":"object","properties":{"start":{"type":"string","nullable":true,"description":"Start date of the period"},"end":{"type":"string","nullable":true,"description":"End date of the period."},"daysCount":{"type":"number","nullable":true,"description":"Number of days in the range.\n     Depending of the context, this may be mathematical (end - start) or\n     explicitly specified (typically working days).\n     Typically an integer, and calculations and UI's may choose to round it."},"days":{"type":"array","nullable":true,"items":{"type":"string"},"description":"The collection of days contained in the DateRange if specified by the user.\n     Alternative to DaysCount. If set, should also set DaysCount for backward compatibility."}},"description":"Period if different than the Period of calculation. Typically, leave this undefined to use the period of the calculation.\nWill be reported to the National Incomes registry, but also affect some other calculations, e.g. absences."},"data":{"type":"object","properties":{},"description":"Usecase specific data\nThis is a free-form object that is required for some row types. See documentation or skills for details.\nThe contents depends on the usecase."}},"required":["price"]},"description":"The rows","example":[{"rowType":"hourlySalary","price":15.5,"count":40},{"rowType":"phoneBenefit","price":20,"count":1}]}},"required":["rows"],"description":"The input parameters. See SimpleCalculatorInput for details."},"StringValue":{"type":"object","properties":{"value":{"type":"string"}},"required":["value"]},"SimpleSalaryReportInput":{"type":"object","properties":{"employmentId":{"type":"string","description":"The employment id.\nIn thesting, use typically \"example-default\". Use \"example-17\" for underage workers and \"example-pensioner\" for pensioners.\nEmpty defaults to \"example-default\".","example":"example-default"},"salaryDate":{"type":"string","format":"date","description":"The salary date is the date when the employee receives the salary on their back account.\nEmpty defaults to today."},"period":{"type":"object","properties":{"start":{"type":"string","format":"date","description":"The start date","example":"2026-01-01"},"end":{"type":"string","format":"date","description":"The end date","example":"2026-01-31"}},"required":["start","end"],"description":"The work period from which the salary is paid.\nEmpty defaults to today's month.","example":{"start":"2026-01-01","end":"2026-01-31"}},"rows":{"type":"array","items":{"type":"object","properties":{"rowType":{"nullable":true,"description":"Logical type of the row. See CalculationRowType for possible values."},"message":{"type":"string","description":"Description text of the row that is shown in reports.\nTypically, leave this undefined to get the language versioned text from the row type.\nAdd text only if you need to override the default text."},"count":{"type":"number","description":"Count for the row - default is one"},"price":{"type":"number","description":"Price for the row"},"accounting":{"type":"object","properties":{"vatPercent":{"type":"number","nullable":true,"description":"Percent for VAT calculation expressed as decimal: 24% is 0.24."},"vatEntries":{"type":"array","nullable":true,"items":{"type":"object","properties":{"tax":{"type":"number","nullable":true,"description":"Tax amount of specific VAT rate in euro.\n     This value is mandatory, if the collection of VatEntries contains more than one item."},"vatRate":{"nullable":true,"description":"Applied VAT rate. This is always mandatory."},"taxPercent":{"type":"number","nullable":true,"description":"Tax as percent of Net sales (0-1). Currently just informative, but may later be used for Custom non-standard VAT rates."},"gross":{"type":"number","nullable":true,"description":"Gross sales for specific VAT rate including the tax (VAT).\n     This value is mandatory, if the collection of VatEntries contains more than one item."},"net":{"type":"number","nullable":true,"description":"Net sales for specific VAT rate excluding the tax (VAT).\n     This value is mandatory, if the collection of VatEntries contains more than one item."}}},"description":"Total VAT amount splitted by VAT rates.\n     Please note, that if both {Palkkaus.Model.Calc.RowAccounting.VatPercent} and the {Palkkaus.Model.Calc.RowAccounting.VatEntries} with some entries given,\n     the {Palkkaus.Model.Calc.RowAccounting.VatEntries} are applied.\n     Please note that this is null by default."},"dimensions":{"type":"array","nullable":true,"items":{"type":"object","properties":{"id":{"type":"string","nullable":true,"description":"Dimension Id."},"value":{"type":"string","nullable":true,"description":"Cost accounting dimension value id."},"percent":{"type":"number","nullable":true,"description":"Sharing percent for the dimension."}}},"description":"Values for cost accounting dimensions"},"entry":{"type":"object","nullable":true,"properties":{"debitAccountNumber":{"type":"string","nullable":true,"description":"Debit Account number.\n     If given will override the system resolved debit account number."},"creditAccountNumber":{"type":"string","nullable":true,"description":"Credit Account number.\n     If given will override the system resolved credit account number."}},"description":"Row accounting entries for overriding standard accounting logic."}},"description":"Accounting related data for the row.\nSet the object only if you need to add dimensions data, specify VAT for expenses etc. or override the accounts (credit / debit account numbers)."},"period":{"type":"object","properties":{"start":{"type":"string","nullable":true,"description":"Start date of the period"},"end":{"type":"string","nullable":true,"description":"End date of the period."},"daysCount":{"type":"number","nullable":true,"description":"Number of days in the range.\n     Depending of the context, this may be mathematical (end - start) or\n     explicitly specified (typically working days).\n     Typically an integer, and calculations and UI's may choose to round it."},"days":{"type":"array","nullable":true,"items":{"type":"string"},"description":"The collection of days contained in the DateRange if specified by the user.\n     Alternative to DaysCount. If set, should also set DaysCount for backward compatibility."}},"description":"Period if different than the Period of calculation. Typically, leave this undefined to use the period of the calculation.\nWill be reported to the National Incomes registry, but also affect some other calculations, e.g. absences."},"data":{"type":"object","properties":{},"description":"Usecase specific data\nThis is a free-form object that is required for some row types. See documentation or skills for details.\nThe contents depends on the usecase."}},"required":["price"]},"description":"The rows","example":[{"rowType":"hourlySalary","price":15.5,"count":40},{"rowType":"phoneBenefit","price":20,"count":1}]},"type":{"type":"string","enum":["document","fragment"],"description":"The type of the report: \"document\" (default) or \"fragment\".","example":"document"}},"required":["rows"],"description":"The input parameters. See SimpleSalaryReportInput for details."},"ReportInput":{"type":"object","properties":{"calculation":{"type":"object","properties":{"employer":{"type":"object","nullable":true,"properties":{"avatar":{"type":"object","nullable":true,"properties":{"entityType":{"nullable":true,"description":"Entity type: person/company"},"firstName":{"type":"string","nullable":true,"description":"First name or company name"},"lastName":{"type":"string","nullable":true,"description":"Last name, for companies, this should be null"},"displayName":{"type":"string","nullable":true,"description":"Display name. For a person this is 'FirstName LastName' (auto-created)."},"sortableName":{"type":"string","nullable":true,"description":"Sortable name for ordered lists etc. For a person this is 'LastName, FirstName' (auto-created).\n     Depending on the data storage, this may be all-lowercase for easier sorting and search."},"pictureType":{"nullable":true,"description":"Type of the Avatar picture."},"color":{"type":"string","nullable":true,"description":"Color - currently only used by type Icon"},"initials":{"type":"string","nullable":true,"description":"Initials - currently only used by type Icon"},"url":{"type":"string","nullable":true,"description":"URL of the picture if specified as picture (null in a case of type Icon)"},"description":{"type":"string","nullable":true,"description":"Short description of the user.\n     This may be overriden by a context specific value by the business logic."},"id":{"type":"string","nullable":true,"description":"Identifier of the object."},"createdAt":{"type":"string","nullable":true,"description":"The date when the object was created."},"updatedAt":{"type":"string","nullable":true,"description":"The time when the object was last updated.\n     Typically this should be a logical update by user (UserUpdatedAt in DTO), not technical updates."},"owner":{"type":"string","nullable":true,"description":"Owner ID for this data"},"isReadOnly":{"type":"boolean","nullable":true,"description":"Indication that for the currently logged-in account, the data is generally read-only."},"partner":{"type":"string","nullable":true,"description":"Primary partner information. Automatically updated from the storage container Partner."}},"description":"Display image information and type of employer.\n     NOTE: Recalculate-method retains the values for display purposes if AccountId or IsSelf is not set.\n     This is mainly for demo and testing in anonymous mode.\n     However, in storage methods, the value is reset based on values of AccountId or IsSelf\n     even if they are not set: Anything stored in Avatar will be ignored."},"accountId":{"type":"string","nullable":true,"description":"The Palkkaus.fi Account identifier for the Employer."},"isSelf":{"type":"boolean","nullable":true,"description":"True if Profile is the current Authorization.\n     If set to true, will set current Authorization as this contract party.\n     This overrides any value in AccountId, so be sure to switch this back to false if this is switchable.\n     Setting to False does not have any immediate effect."},"contact":{"type":"object","nullable":true,"properties":{"email":{"type":"string","nullable":true,"description":"Contact e-mail address. Always lower invariant, trimmed and empty string set to null."},"telephone":{"type":"string","nullable":true,"description":"Telephone number"},"street":{"type":"string","nullable":true,"description":"Street address"},"postalCode":{"type":"string","nullable":true,"description":"Postal code"},"city":{"type":"string","nullable":true,"description":"City or community (postitoimipaikka)"},"countryCode":{"type":"string","nullable":true,"description":"This is the ISO code for country.\n     Currently, it should always be \"fi\"."}},"description":"Current address of the employer.\n     Please note that this is a read only field."},"officialId":{"type":"string","nullable":true,"description":"Official id of the person or company.\n     Please note that this is a read only field."}},"description":"The employer object for this calculation.\n     Typically, you do not need to set this before the actual payment process."},"worker":{"type":"object","nullable":true,"properties":{"accountId":{"type":"string","nullable":true,"description":"Palkkaus.fi Account Id for the worker.\n     Alternatively you can set the Payment data with the required infromation"},"employmentId":{"type":"string","nullable":true,"description":"Employment Id for the worker."},"paymentData":{"type":"object","nullable":true,"properties":{"firstName":{"type":"string","nullable":true,"description":"First name of the person."},"lastName":{"type":"string","nullable":true,"description":"Last name / Surname of the person."},"socialSecurityNumber":{"type":"string","nullable":true,"description":"Gets the Social security number the way the user set it in input.\n     HOWEVER: The getter will change the string to upper invariant/trim and if the last character is \"*\", it will be replaced by calculated checksum."},"socialSecurityNumberValid":{"type":"string","nullable":true,"description":"Social security number if valid or null"},"ibanNumber":{"type":"string","nullable":true,"description":"IBAN number for the Bank account"},"email":{"type":"string","nullable":true,"description":"Contact e-mail address."},"telephone":{"type":"string","nullable":true,"description":"Telephone number"}},"description":"Data that is needed for salary payment.\n     This object may be null if AccountId has been set.\n     Also, if AccountId has been set, these properties will be ignored:\n     The Worker will decide on payment properties herself."},"avatar":{"type":"object","nullable":true,"properties":{"entityType":{"nullable":true,"description":"Entity type: person/company"},"firstName":{"type":"string","nullable":true,"description":"First name or company name"},"lastName":{"type":"string","nullable":true,"description":"Last name, for companies, this should be null"},"displayName":{"type":"string","nullable":true,"description":"Display name. For a person this is 'FirstName LastName' (auto-created)."},"sortableName":{"type":"string","nullable":true,"description":"Sortable name for ordered lists etc. For a person this is 'LastName, FirstName' (auto-created).\n     Depending on the data storage, this may be all-lowercase for easier sorting and search."},"pictureType":{"nullable":true,"description":"Type of the Avatar picture."},"color":{"type":"string","nullable":true,"description":"Color - currently only used by type Icon"},"initials":{"type":"string","nullable":true,"description":"Initials - currently only used by type Icon"},"url":{"type":"string","nullable":true,"description":"URL of the picture if specified as picture (null in a case of type Icon)"},"description":{"type":"string","nullable":true,"description":"Short description of the user.\n     This may be overriden by a context specific value by the business logic."},"id":{"type":"string","nullable":true,"description":"Identifier of the object."},"createdAt":{"type":"string","nullable":true,"description":"The date when the object was created."},"updatedAt":{"type":"string","nullable":true,"description":"The time when the object was last updated.\n     Typically this should be a logical update by user (UserUpdatedAt in DTO), not technical updates."},"owner":{"type":"string","nullable":true,"description":"Owner ID for this data"},"isReadOnly":{"type":"boolean","nullable":true,"description":"Indication that for the currently logged-in account, the data is generally read-only."},"partner":{"type":"string","nullable":true,"description":"Primary partner information. Automatically updated from the storage container Partner."}},"description":"Display image and properties of the Worker.\n     Based on either the AccountId or PaymentData"},"isSelf":{"type":"boolean","nullable":true,"description":"True if Profile is the currently Account\n     If set to true, will set current Account as this contract party.\n     This overrides any value in AccountId, so be sure to switch this back to false if this is switchable.\n     Setting to False does not have any immediate effect."},"dateOfBirth":{"type":"string","nullable":true,"description":"Date of birth for the Worker - this affects the side costs.\n     Please also set the DateOfBirthAccuracy, if you set this property.\n     If PaymentData or AccountId lead to a valid Social security number, it will override any age set here."},"dateOfBirthAccuracy":{"nullable":true,"description":"Accuracy of the date of birth\n     If PaymentData or AccountId lead to a valid Social security number, it will override any age set here."},"tax":{"type":"object","nullable":true,"properties":{"taxcardId":{"type":"string","nullable":true,"description":"Identifier for a stored tax card if one is applied to this calculation.\n     System updates the TaxCardId automatically in Recalculate / Save if it finds a better candidate\n     and also updates the Snapshot."},"snapshot":{"type":"object","nullable":true,"properties":{"forYear":{"type":"number","description":"Year that the tax card is valid for. Typically this means from February of this year to January of the following."},"validity":{"type":"object","nullable":true,"properties":{"start":{"type":"string","nullable":true,"description":"Start date of the period"},"end":{"type":"string","nullable":true,"description":"End date of the period."},"daysCount":{"type":"number","nullable":true,"description":"Number of days in the range.\n     Depending of the context, this may be mathematical (end - start) or\n     explicitly specified (typically working days).\n     Typically an integer, and calculations and UI's may choose to round it."},"days":{"type":"array","nullable":true,"items":{"type":"string"},"description":"The collection of days contained in the DateRange if specified by the user.\n     Alternative to DaysCount. If set, should also set DaysCount for backward compatibility."}},"description":"Validity for the taxcard as expressed in the card.\n     Note that the end date may not be reliable if new taxcard has replaced this one."},"taxPercent":{"type":"number","nullable":true,"description":"Tax percent as percent. I.e. for 50% set 50, not 0.5."},"incomeLimit":{"type":"number","nullable":true,"description":"Income up to which the TaxPercent can be used.\n     Any income above the limit is taxed with ExcessTaxPercent."},"cumulativeIncome":{"type":"number","nullable":true,"description":"Cumulative income on the taxcard - including this calculation.\n     Note that with shared taxcards, this may include income from other employers."},"taxPercent2":{"type":"number","nullable":true,"description":"Tax percentage that is used in calculating the widthholding tax for the part of income above the IncomeLimit.\n     This is percent. I.e. for 50% set 50, not 0.5."},"taxPercentMin":{"type":"number","nullable":true,"description":"A Worker may request a minimum percent that is deducted even if the effective tax percent would be lower.\n     This can be used if Worker knows that he/she will be earning more in the year than what was estimated when the taxcard was created."},"taxPercentMinOwned":{"type":"number","nullable":true,"description":"TaxPercentMin set by owner of the card.\n     This overrides the tax percent min set by the taxcard sharer."},"incomeType":{"nullable":true,"description":"The income type of the taxacard if fetched from the tax authorities taxcard API."},"kind":{"nullable":true,"description":"Type of the taxcard as of 2019, when the taxcards logic was simplified by the Finnish tazx authorities."},"fileUri":{"type":"string","nullable":true,"description":"Uri to the file copy of the tax card.\n     Set by the system as part of the upload process, do not change in the API though it may be technically possible. This may have unintended results."},"previewUri":{"type":"string","nullable":true,"description":"Uri to the preview image of the tax card.\n     Set by the system as part of the upload process, do not change in the API though it may be technically possible. This may have unintended results."},"lastChecked":{"type":"string","nullable":true,"description":"Explicit value of when the item was last checked. At the moment, updated in API fetches only, but may be used later for other checks.\n     Undefined value is 1.1.2000"}},"required":["forYear"],"description":"Snapshot of the tax card for salary slip etc. purposes.\n     Updated in Recalculate / Save based on TaxCardId"},"fixedTaxAmount":{"type":"number","nullable":true,"description":"Possibility to set a fixed widthholding tax amount for this calculation regardless of\n     the percentage etc. in the tax card."},"isValid":{"type":"boolean","nullable":true,"description":"The API returns true if there is a valid taxcard for the PaidAt date for this calculation\n     or if FixedTaxAmount is set for th calculation."},"estimatedTax":{"type":"number","nullable":true,"description":"Calculated widthholding tax. Note that this is an estimation until the calculation is actually paid.\n     Also, if the salary is not paid as cash (e.g. fringe benefits), there may not be enough money to make the full deduction."},"hasNewSharedCard":{"type":"boolean","nullable":true,"description":"A flag that during last recalculation, there was a new shared taxcard that was waiting approval."},"taxPercentForVisualization":{"type":"number","nullable":true,"description":"Tax percent that is used in visualization. This is mainly used in Unit testing and anonymous calcultors.\n     Not used in real paid calculations. This is percent. I.e. for 50% set 50, not 0.5.\n     If PaymentData or AccountId lead to a valid tax card type and percent, or if there is FixedTaxAmount, this value is not used."}},"description":"New Widthholding tax logic that is based on separately stored tax cards."},"contact":{"type":"object","nullable":true,"properties":{"email":{"type":"string","nullable":true,"description":"Contact e-mail address. Always lower invariant, trimmed and empty string set to null."},"telephone":{"type":"string","nullable":true,"description":"Telephone number"},"street":{"type":"string","nullable":true,"description":"Street address"},"postalCode":{"type":"string","nullable":true,"description":"Postal code"},"city":{"type":"string","nullable":true,"description":"City or community (postitoimipaikka)"},"countryCode":{"type":"string","nullable":true,"description":"This is the ISO code for country.\n     Currently, it should always be \"fi\"."}},"description":"Current address of the worker.\n     Please note that this is a read only field."}},"description":"The Worker (employee) that has performed the work."},"workflow":{"type":"object","nullable":true,"properties":{"status":{"nullable":true,"description":"Status of the calculation from Draft to PaymentSucceeded"},"paidAt":{"type":"string","nullable":true,"description":"Time when this calculation was paid (if it was paid) to Palkkaus service."},"salaryPaidAt":{"type":"string","nullable":true,"description":"Time when the salary was paid by Palkkaus service."},"repairedAt":{"type":"string","nullable":true,"description":"Last date and time when this calculation was repaired after payment."},"salaryDate":{"type":"string","nullable":true,"description":"The estimated date when the salary is withdrawable by the worker."},"requestedSalaryDate":{"type":"string","nullable":true,"description":"The requested date for the SalaryDate from the employer."},"salaryDateKind":{"nullable":true,"description":"Defines the re-setting of the salary date in the calculation re-calculation."},"originalId":{"type":"string","nullable":true,"description":"The original id the calculation which this calculation is a copy of."}},"description":"Information about the workflow and state of the calculation."},"salary":{"type":"object","nullable":true,"properties":{"kind":{"nullable":true,"description":"Type of the salary being calculated"},"amount":{"type":"number","nullable":true,"description":"Amount of e.g. hours, months for the salary. Default is 1."},"price":{"type":"number","description":"Price of one unit - e.g. hour, month."},"unit":{"type":"string","nullable":true,"description":"E.g. hour, month. Typically this parameter can be left empty/null and the unit is set according to type."},"message":{"type":"string","nullable":true,"description":"Optional message for the salary row that is shown in reports. If null, will be set according to type."},"isHouseholdDeductible":{"type":"boolean","nullable":true,"description":"If set to true, will calculate the household deduction. Applies only to natural persons - as oppsed to companies."},"taxDeductionCategories":{"nullable":true,"description":"If tax IsHouseholdDeductible is set to true, please also select the category (categories).\n     Note that \"OwnPropety\" is a default, it does not need to be set: Only set RelativesProperty if necessary."}},"required":["price"],"description":"The main salary element.\n     Alternatively the salary can be set in the Rows object - this will be the only way to set multiple salary rows (not yet supported)."},"rows":{"type":"array","nullable":true,"items":{"type":"object","properties":{"rowIndex":{"type":"number","nullable":true,"description":"Zero based row index that can be used to match the row to result rows or when deleting.\n     NOTE: The Row ID is given values on the fly so setting this will not have any effect at the moment.\n     It may reorder the entries in later implementations."},"type":{"type":"string","nullable":true,"description":"Wage type. Either a built in wage type in Salaxy or a custom wage type created by the user.\n     Please note that this type fully determines the <see cref=\"T:Palkkaus.Model.Calc.CalculationRowType\"></see> and the kind."},"rowType":{"nullable":true,"description":"Logical type of the row"},"message":{"type":"string","nullable":true,"description":"Description text of the row that is shown in reports. If null, will be set according to type."},"count":{"type":"number","nullable":true,"description":"Count for the row - default is one"},"price":{"type":"number","nullable":true,"description":"Price for the row"},"unit":{"nullable":true,"description":"Unit for the row. Guessed based on the RowType and count, but you are better off setting it to be sure."},"source":{"nullable":true,"description":"Source of the calculation row - affects how the row is handled in editing / recalculation scenarios."},"sourceId":{"type":"string","nullable":true,"description":"Identifier in the source system is a key defined by a source system / partner system.\n     This is a pass-through string that is passed to the result calculations."},"accounting":{"type":"object","nullable":true,"properties":{"vatPercent":{"type":"number","nullable":true,"description":"Percent for VAT calculation expressed as decimal: 24% is 0.24."},"vatEntries":{"type":"array","nullable":true,"items":{"type":"object","properties":{"tax":{"type":"number","nullable":true,"description":"Tax amount of specific VAT rate in euro.\n     This value is mandatory, if the collection of VatEntries contains more than one item."},"vatRate":{"nullable":true,"description":"Applied VAT rate. This is always mandatory."},"taxPercent":{"type":"number","nullable":true,"description":"Tax as percent of Net sales (0-1). Currently just informative, but may later be used for Custom non-standard VAT rates."},"gross":{"type":"number","nullable":true,"description":"Gross sales for specific VAT rate including the tax (VAT).\n     This value is mandatory, if the collection of VatEntries contains more than one item."},"net":{"type":"number","nullable":true,"description":"Net sales for specific VAT rate excluding the tax (VAT).\n     This value is mandatory, if the collection of VatEntries contains more than one item."}}},"description":"Total VAT amount splitted by VAT rates.\n     Please note, that if both {Palkkaus.Model.Calc.RowAccounting.VatPercent} and the {Palkkaus.Model.Calc.RowAccounting.VatEntries} with some entries given,\n     the {Palkkaus.Model.Calc.RowAccounting.VatEntries} are applied.\n     Please note that this is null by default."},"dimensions":{"type":"array","nullable":true,"items":{"type":"object","properties":{"id":{"type":"string","nullable":true,"description":"Dimension Id."},"value":{"type":"string","nullable":true,"description":"Cost accounting dimension value id."},"percent":{"type":"number","nullable":true,"description":"Sharing percent for the dimension."}}},"description":"Values for cost accounting dimensions"},"entry":{"type":"object","nullable":true,"properties":{"debitAccountNumber":{"type":"string","nullable":true,"description":"Debit Account number.\n     If given will override the system resolved debit account number."},"creditAccountNumber":{"type":"string","nullable":true,"description":"Credit Account number.\n     If given will override the system resolved credit account number."}},"description":"Row accounting entries for overriding standard accounting logic."}},"description":"Accounting related data for the row."},"period":{"type":"object","nullable":true,"properties":{"start":{"type":"string","nullable":true,"description":"Start date of the period"},"end":{"type":"string","nullable":true,"description":"End date of the period."},"daysCount":{"type":"number","nullable":true,"description":"Number of days in the range.\n     Depending of the context, this may be mathematical (end - start) or\n     explicitly specified (typically working days).\n     Typically an integer, and calculations and UI's may choose to round it."},"days":{"type":"array","nullable":true,"items":{"type":"string"},"description":"The collection of days contained in the DateRange if specified by the user.\n     Alternative to DaysCount. If set, should also set DaysCount for backward compatibility."}},"description":"Period if different than the Period of calculation.\n     Will be reported to the National Incomes registry, but also affect some other calculations.\n     Note that this property may be (and by default is) null."},"data":{"type":"object","nullable":true,"properties":{},"description":"Usecase specific data"}}},"description":"Set of rows that make up the salary calculation:\n     Expenses, Benefits, deductions etc. Note that side costs are not rows."},"framework":{"type":"object","nullable":true,"properties":{"type":{"nullable":true,"description":"Type of the work framework"},"subType":{"nullable":true,"description":"Subtype when one framework has several options"},"isTesIncludedInSalary":{"type":"boolean","nullable":true,"description":"Marker that the payments defined by framework agreement are included in the salary (will not be added by the calculation)."},"numberOfDays":{"type":"number","nullable":true,"description":"Number of days may affect calculation of different payments calculated based on a Framework agreement"},"dailyTravelExpenses":{"type":"number","nullable":true,"description":"Travel expences per day"},"dailyTravelExpensesKm":{"type":"number","nullable":true,"description":"The amount of kilometers travelled by day - used to define the amount of travel expenses in aomse framework agreements."},"dailyExpenses":{"type":"number","nullable":true,"description":"Daily expenses amount"},"isYksityisenHoidonTuki":{"type":"boolean","nullable":true,"description":"If true will calculate the Finnish child care subsidy"},"yksityisenHoidonTukiAmount":{"type":"number","nullable":true,"description":"Amount of Finnish child care subsidy"}},"description":"DEPRECIATED: Usecase will be replacing this functionality in a next major release.\n     The Framework Agreement (TES) parameters that affect the framework based side costs etc. of this calculation"},"usecase":{"type":"object","nullable":true,"properties":{"uri":{"type":"string","nullable":true,"description":"Key for the usecase based on which it is resolved.\n     Later, this may resolve to a user interface, microservice or a to manifest registering one.\n     For now, just use a unique string starting with a domain you own."},"label":{"type":"string","nullable":true,"description":"A short label of that can be shown to the end user."},"description":{"type":"string","nullable":true,"description":"Optional description of the use case for the end user.\n     Shown in detail views when explaining the logic of the usecase."},"data":{"type":"object","nullable":true,"properties":{},"description":"Usecase specific data"}},"description":"A usecase for creating and editing salary calculations.\n     In practice, a usecase is either a user interface or a microservice that provides a salary calculation\n     and it may be implemented outside Salaxy.\n     Provides the possibility to store useacase specific data as part of calculation.\n     NOTE: This functionality will replace Framework property in a next major release."},"result":{"type":"object","nullable":true,"properties":{"totals":{"type":"object","nullable":true,"properties":{"pension":{"type":"number","nullable":true,"description":"The total pension payment for this calculation"},"unemployment":{"type":"number","nullable":true,"description":"The total unemployment payment sum."},"total":{"type":"number","nullable":true,"description":"The total of all calculation rows"},"totalBaseSalary":{"type":"number","nullable":true,"description":"The base salary without overtime and other such additions that are part of gross salary."},"totalGrossSalary":{"type":"number","nullable":true,"description":"Gross salary is the salary including additions like overtime, but not benefits or expenses"},"totalTaxable":{"type":"number","nullable":true,"description":"Taxable salary is the salary from the taxation point of view - includes some benefits."},"taxAtSourceDeduction":{"type":"number","nullable":true,"description":"Deduction from TotalTaxable to tax at source calculation."},"totalSocialSecurityBase":{"type":"number","nullable":true,"description":"DEPRICATED: This is now the same as TotalPensionInsuranceBase. For other social insurances, you may want to use\n     TotalUnemploymentInsuranceBase, TotalHealthInsuranceBase or TotalAccidentInsuranceBase,"},"totalPensionInsuranceBase":{"type":"number","nullable":true,"description":"Base income for calculating the Pension insurance contributions."},"totalUnemploymentInsuranceBase":{"type":"number","nullable":true,"description":"Base income for calculating the Unemployment insurance contributions."},"totalHealthInsuranceBase":{"type":"number","nullable":true,"description":"Base income for calculating the Health insurance contributions."},"totalAccidentInsuranceBase":{"type":"number","nullable":true,"description":"Base income for calculating the Accident insurance contributions."},"totalExpenses":{"type":"number","nullable":true,"description":"Tax free expenses."},"totalPayable":{"type":"number","nullable":true,"description":"Total sum of rows that are paid through Salaxy Customer Funds account.\n     This is the Gross sum before side costs, deductions etc., but it is not Gross salary as it includes expenses etc."}},"description":"Calculation totals that are common to both Worker and Employer."},"irRows":{"type":"array","nullable":true,"items":{"type":"object","properties":{"type":{"nullable":true,"description":"Type of the row - basically describes the source for this row:\n     Either Manual (default) or Usecase logic, which may be legacy / API v02 or new / API v03."},"message":{"type":"string","nullable":true,"description":"Description text of the row that is shown in reports."},"count":{"type":"number","nullable":true,"description":"Count for the row. Default is one."},"price":{"type":"number","nullable":true,"description":"Price for the row."},"total":{"type":"number","nullable":true,"description":"Simple multiplication: Count * Price - no other logic. Not used as Input."},"unit":{"nullable":true,"description":"Unit for the row. If specified as Undefined, set by the server-logic based on row type etc."},"irData":{"type":"object","nullable":true,"properties":{"code":{"type":"number","nullable":true,"description":"The number code in Incomes Register."},"flags":{"type":"array","nullable":true,"items":{"nullable":true},"description":"Boolean flags that can be set on transaction."},"insuranceExceptions":{"type":"array","nullable":true,"items":{"nullable":true},"description":"Defines the exceptions to Insurance / Sidecost defaults that are set by the row type."},"dailyAllowance":{"type":"array","nullable":true,"items":{"nullable":true},"description":"Daily allowance code."},"mealBenefitIsTaxValue":{"type":"boolean","nullable":true,"description":"Set this to true if meak benefit is of tax value - false if it si not.\n     The value should be null if the row is not mealBenefit."},"carBenefit":{"type":"object","nullable":true,"properties":{"carBenefitCode":{"nullable":true,"description":"Car benefit type"},"ageGroupCode":{"nullable":true,"description":"Car age group"},"kilometers":{"type":"number","nullable":true,"description":"Odometer reading\n\n     The value must be greater than or equal to 0"},"emissionsValue":{"type":"number","nullable":true,"description":"Car emissions value\n\n     The car emissions value must be greater than or equal to 0, and smaller than or\n     equal to 100. The car emissions value can only be reported if the payment date\n     or other reporting date is in 2022–2025."}},"description":"Provides the additional data needed for car benefit."},"noTransactionAmount":{"type":"boolean","nullable":true,"description":"If true, report zero amount to IR."}},"description":"Details for the National Incomes registry"},"calcData":{"type":"object","nullable":true,"properties":{"grouping":{"nullable":true,"description":"Grouping for reports etc."},"behavior":{"type":"array","nullable":true,"items":{"nullable":true},"description":"Defines the behavior of the row in Salaxy calculation process."},"type":{"type":"string","nullable":true,"description":"Wage type. Either a built in wage type in Salaxy or a custom wage type created by the user.\n     Please note that this type fully determines the <see cref=\"T:Palkkaus.Model.Calc.CalculationRowType\"></see> and the kind."}},"description":"Details from Salaxy internal calulcation point-of-view (logic not in IR)."},"earningPeriod":{"type":"object","nullable":true,"properties":{"start":{"type":"string","nullable":true,"description":"Start date of the period"},"end":{"type":"string","nullable":true,"description":"End date of the period."},"daysCount":{"type":"number","nullable":true,"description":"Number of days in the range.\n     Depending of the context, this may be mathematical (end - start) or\n     explicitly specified (typically working days).\n     Typically an integer, and calculations and UI's may choose to round it."},"days":{"type":"array","nullable":true,"items":{"type":"string"},"description":"The collection of days contained in the DateRange if specified by the user.\n     Alternative to DaysCount. If set, should also set DaysCount for backward compatibility."}},"description":"Earnings period if different than the report period.\n     Note that this property may be (and by default is) null."},"period":{"type":"object","nullable":true,"properties":{"start":{"type":"string","nullable":true,"description":"Start date of the period"},"end":{"type":"string","nullable":true,"description":"End date of the period."},"daysCount":{"type":"number","nullable":true,"description":"Number of days in the range.\n     Depending of the context, this may be mathematical (end - start) or\n     explicitly specified (typically working days).\n     Typically an integer, and calculations and UI's may choose to round it."},"days":{"type":"array","nullable":true,"items":{"type":"string"},"description":"The collection of days contained in the DateRange if specified by the user.\n     Alternative to DaysCount. If set, should also set DaysCount for backward compatibility."}},"description":"Period for the calculation row. This is mainly used for absences (AbsencePeriod row type), leaves and holidays (HolidaySalary, HolidayBonus and HolidayCompensation).\n     Note that this property may be (and by default is) null."},"accounting":{"type":"object","nullable":true,"properties":{"vatPercent":{"type":"number","nullable":true,"description":"Percent for VAT calculation expressed as decimal: 24% is 0.24."},"vatEntries":{"type":"array","nullable":true,"items":{"type":"object","properties":{"tax":{"type":"number","nullable":true,"description":"Tax amount of specific VAT rate in euro.\n     This value is mandatory, if the collection of VatEntries contains more than one item."},"vatRate":{"nullable":true,"description":"Applied VAT rate. This is always mandatory."},"taxPercent":{"type":"number","nullable":true,"description":"Tax as percent of Net sales (0-1). Currently just informative, but may later be used for Custom non-standard VAT rates."},"gross":{"type":"number","nullable":true,"description":"Gross sales for specific VAT rate including the tax (VAT).\n     This value is mandatory, if the collection of VatEntries contains more than one item."},"net":{"type":"number","nullable":true,"description":"Net sales for specific VAT rate excluding the tax (VAT).\n     This value is mandatory, if the collection of VatEntries contains more than one item."}}},"description":"Total VAT amount splitted by VAT rates.\n     Please note, that if both {Palkkaus.Model.Calc.RowAccounting.VatPercent} and the {Palkkaus.Model.Calc.RowAccounting.VatEntries} with some entries given,\n     the {Palkkaus.Model.Calc.RowAccounting.VatEntries} are applied.\n     Please note that this is null by default."},"dimensions":{"type":"array","nullable":true,"items":{"type":"object","properties":{"id":{"type":"string","nullable":true,"description":"Dimension Id."},"value":{"type":"string","nullable":true,"description":"Cost accounting dimension value id."},"percent":{"type":"number","nullable":true,"description":"Sharing percent for the dimension."}}},"description":"Values for cost accounting dimensions"},"entry":{"type":"object","nullable":true,"properties":{"debitAccountNumber":{"type":"string","nullable":true,"description":"Debit Account number.\n     If given will override the system resolved debit account number."},"creditAccountNumber":{"type":"string","nullable":true,"description":"Credit Account number.\n     If given will override the system resolved credit account number."}},"description":"Row accounting entries for overriding standard accounting logic."}},"description":"Accounting related data for the row."},"data":{"type":"object","nullable":true,"properties":{},"description":"Usecase specific data"}}},"description":"Rows that are compatible with Incomes Register (tulorekisteri) process.\n     These are available only for calculations paid after 7.2.2019 (TODO: estimation as of writing)."},"employerCalc":{"type":"object","nullable":true,"properties":{"allSideCosts":{"type":"number","nullable":true,"description":"All side cost: The mandatory side costs + Palkkaus and partner fees"},"finalCost":{"type":"number","nullable":true,"description":"The final cost after household decuction from the tax authorities:\n     Add to the payment the deductions (paid by employer) and deduct House hold deduction (later potentially other such subsidies)"},"householdDeduction":{"type":"number","nullable":true,"description":"Household deduction that the tax man will reimburse in taxation.\n     This is an estimation: There is minimum and maximum limits etc."},"mandatorySideCosts":{"type":"number","nullable":true,"description":"The mandatory side costs are Pension (TyEL), Social secuirty and Unemployment insurance."},"palkkaus":{"type":"number","nullable":true,"description":"The Palkkaus.fi fee including potential partner fees."},"service":{"type":"number","nullable":true,"description":"Extra service charge in addition to Palkkaus fee."},"pension":{"type":"number","nullable":true,"description":"The part of the Pension that Employer pays"},"socialSecurity":{"type":"number","nullable":true,"description":"The social security payment- paid as part of taxation (ennakonpidätys)."},"totalPayment":{"type":"number","nullable":true,"description":"Total payment that is Paid to Palkkaus.fi"},"totalPaymentLegacy":{"type":"number","nullable":true,"description":"Total payment using pre Insiders register calculation logic.\n     DEPRICATED: This is provided for special scenarios and may be removed without warning"},"totalSalaryCost":{"type":"number","nullable":true,"description":"Total salary cost is the paid salary, deductions and side costs, but not expenses."},"unemployment":{"type":"number","nullable":true,"description":"The part of the unemployment insurance that the employer pays"},"totalDeductions":{"type":"number","nullable":true,"description":"Total deductions that are made from the payment that is paid to Palkkaus and then to Worker"},"deductionUnionPayment":{"type":"number","nullable":true,"description":"Union payment if it is deducted from the final figure"},"deductionPensionSelfPayment":{"type":"number","nullable":true,"description":"Pension payments, when paid directly by the Employer - not by Palkkaus.fi"},"deductionUnemploymentSelfPayment":{"type":"number","nullable":true,"description":"Unemployment insurance (TVR) payments, when paid directly by the Employer - not by Palkkaus.fi"},"deductionSalaryAdvance":{"type":"number","nullable":true,"description":"Salary advance - this part has already been paid."},"deductionForeclosure":{"type":"number","nullable":true,"description":"Foreclosure that has already been paid by the employer."},"deductionTaxAndSocialSecuritySelfPayment":{"type":"number","nullable":true,"description":"Tax and social security payments, when paid directly by the Employer - not by Palkkaus.fi"},"deductionWorkerSelfPayment":{"type":"number","nullable":true,"description":"Worker salary and expense payments, when paid directly by the Employer - not by Palkkaus.fi"},"foreclosureByPalkkaus":{"type":"number","nullable":true,"description":"Foreclosure that Palkkaus.fi pays in behalf of employer."},"deductionOtherDeductions":{"type":"number","nullable":true,"description":"Other deductions that are deducted from the net salary."}},"description":"The calculation from the Employer point-of-view"},"workerCalc":{"type":"object","nullable":true,"properties":{"benefits":{"type":"number","nullable":true,"description":"The benefits as valued by the tax authority."},"deductions":{"type":"number","nullable":true,"description":"All the items that are deducted from the salary (this is also the order if there is not enough payable money):\n     SalaryAdvance + Tax + Pension + UnemploymentInsurance + UnionPayment + OtherDeductions"},"salaryPayment":{"type":"number","nullable":true,"description":"The payment that is made to the Worker based on salary after all deductions.\n     Does not include expenses."},"salaryAdvance":{"type":"number","nullable":true,"description":"The salary advance that was paid to the Worker"},"foreclosure":{"type":"number","nullable":true,"description":"The foreclosure that been deducted from the salary by the employer."},"tax":{"type":"number","nullable":true,"description":"Ennakonpidätys: The taxes that were deducted from the worker salary."},"taxAtSource":{"type":"number","nullable":true,"description":"Lähdevero: The tax at source that were deducted from the worker salary."},"salaryAfterTax":{"type":"number","nullable":true,"description":"Net salary after tax - before worker foreclosure or deductions of the side costs"},"salaryAfterTaxAndForeclosure":{"type":"number","nullable":true,"description":"Net salary after tax and foreclosure."},"pension":{"type":"number","nullable":true,"description":"Part of the Pension that is taken from the Worker side of the salary."},"unemploymentInsurance":{"type":"number","nullable":true,"description":"Workers part of the unemployment insurance."},"socialSecurity":{"type":"number","nullable":true,"description":"The social security payment. NOT paid as a part of tax withhold ."},"unionPayment":{"type":"number","nullable":true,"description":"The union payment that is deducted from the Worker salarya s per workers request."},"fullTax":{"type":"number","nullable":true,"description":"Widthholding tax: The original calulated version - there might not be enough money to finally pay this."},"fullTaxAtSource":{"type":"number","nullable":true,"description":"Tax at source: The original calulated version - there might not be enough money to finally pay this."},"fullSalaryAdvance":{"type":"number","nullable":true,"description":"The salary advance that was paid to the Worker\n     The original calulated version - there might not be enough money to finally pay this."},"fullPension":{"type":"number","nullable":true,"description":"Part of the Pension that is taken from the Worker side of the salary.\n     The original calulated version - there might not be anough money to finally pay this."},"fullUnemploymentInsurance":{"type":"number","nullable":true,"description":"Workers part of the unemployment insurance.\n     The original calulated version - there might not be anough money to finally pay this."},"fullSocialSecurity":{"type":"number","nullable":true,"description":"The social security payment. NOT paid as a part of tax withhold .\n     The original calculted version."},"fullUnionPayment":{"type":"number","nullable":true,"description":"The union payment that is deducted from the Worker salarya s per workers request."},"totalWorkerPayment":{"type":"number","nullable":true,"description":"The sum that is at the end paid to the Worker:\n     Salary payment + expenses"},"totalWorkerPaymentLegacy":{"type":"number","nullable":true,"description":"Total payment using pre Insiders register calculation logic.\n     DEPRICATED: This is provided for special scenarios and may be removed without warning"},"workerSideCosts":{"type":"number","nullable":true,"description":"The side costs that are deducted from the Worker salary according to law:\n     Pension, Unemployment and Union payment. Tax is not included in this number.\n     This is not an official number, really used in the charts etc."},"fullOtherDeductions":{"type":"number","nullable":true,"description":"Other deductions that are deducted from the net salary.\n     The original calulated version - there might not be enough money to finally deduct this."},"otherDeductions":{"type":"number","nullable":true,"description":"Part of the other deductions that are deducted from the net salary."},"fullPrepaidExpenses":{"type":"number","nullable":true,"description":"Prepaid expenses that are deducted from the expenses to be paid to the worker.\n     The original calulated version - there might not be enough money to finally deduct this."},"prepaidExpenses":{"type":"number","nullable":true,"description":"Part of the prepaid expenses that are deducted from the expenses."}},"description":"The calculation from the Worker point-of-view"},"rows":{"type":"array","nullable":true,"items":{"type":"object","properties":{"userRowIndex":{"type":"number","nullable":true,"description":"Row index that matches this row to a user defined row (which is zero-based).\n     If the row is generated by calculation business logic (e.g. based on framework agreement), the index is -1."},"type":{"type":"string","nullable":true,"description":"Wage type. Either a built in wage type in Salaxy or a custom wage type created by the user.\n     Please note that this type fully determines the <see cref=\"T:Palkkaus.Model.Calc.CalculationRowType\"></see> and the kind."},"rowType":{"nullable":true,"description":"Logical type of the row"},"rowSource":{"nullable":true,"description":"Source of the calculation row - affects how the row is handled in editing / recalculation scenarios."},"message":{"type":"string","nullable":true,"description":"Description text of the row that is shown in reports. If null, will be set according to type."},"count":{"type":"number","nullable":true,"description":"Count for the row - default is one"},"price":{"type":"number","nullable":true,"description":"Price for the row"},"unit":{"nullable":true,"description":"Unit for the row"},"total":{"type":"number","nullable":true,"description":"Total for the row - always Price * Count"},"totalBaseSalary":{"type":"number","nullable":true,"description":"Base salary (Peruspalkka) is the monthly salary or total salary without addiotions (overtime, holidays etc.)"},"totalGrossSalary":{"type":"number","nullable":true,"description":"Gross salary (Bruttopalkka) is \"real\" salary including the additions (overtime, holidays etc.) but not benefits."},"totalTaxable":{"type":"number","nullable":true,"description":"Taxable income (Ennakonpidätyksen alainen ansio) is the salary from taxation point-of-view. It is basically the Gross Salary plus benefits."},"totalSocialSecurityBase":{"type":"number","nullable":true,"description":"Social Security Base (Sosiaaliturvan alainen ansio) is typically the same as TotalTaxable,\n     but e.g. child care subsidy (yksityisen hoidon tuki) is handled differently."},"totalExpenses":{"type":"number","nullable":true,"description":"Taxfree expenses compensation"},"totalDeduction":{"type":"number","nullable":true,"description":"Deductions from the salary: Union payment, Advance, Foreclosure"},"sourceId":{"type":"string","nullable":true,"description":"Identifier in the source system is a key defined by a source system / partner system.\n     This is a pass-through string that is kept as-is in the Salaxy system."},"period":{"type":"object","nullable":true,"properties":{"start":{"type":"string","nullable":true,"description":"Start date of the period"},"end":{"type":"string","nullable":true,"description":"End date of the period."},"daysCount":{"type":"number","nullable":true,"description":"Number of days in the range.\n     Depending of the context, this may be mathematical (end - start) or\n     explicitly specified (typically working days).\n     Typically an integer, and calculations and UI's may choose to round it."},"days":{"type":"array","nullable":true,"items":{"type":"string"},"description":"The collection of days contained in the DateRange if specified by the user.\n     Alternative to DaysCount. If set, should also set DaysCount for backward compatibility."}},"description":"Period if different than the Period of calculation.\n     Will be reported to the National Incomes registry, but also affect some other calculations.\n     Note that this property may be (and by default is) null."},"accounting":{"type":"object","nullable":true,"properties":{"vatPercent":{"type":"number","nullable":true,"description":"Percent for VAT calculation expressed as decimal: 24% is 0.24."},"vatEntries":{"type":"array","nullable":true,"items":{"type":"object","properties":{"tax":{"type":"number","nullable":true,"description":"Tax amount of specific VAT rate in euro.\n     This value is mandatory, if the collection of VatEntries contains more than one item."},"vatRate":{"nullable":true,"description":"Applied VAT rate. This is always mandatory."},"taxPercent":{"type":"number","nullable":true,"description":"Tax as percent of Net sales (0-1). Currently just informative, but may later be used for Custom non-standard VAT rates."},"gross":{"type":"number","nullable":true,"description":"Gross sales for specific VAT rate including the tax (VAT).\n     This value is mandatory, if the collection of VatEntries contains more than one item."},"net":{"type":"number","nullable":true,"description":"Net sales for specific VAT rate excluding the tax (VAT).\n     This value is mandatory, if the collection of VatEntries contains more than one item."}}},"description":"Total VAT amount splitted by VAT rates.\n     Please note, that if both {Palkkaus.Model.Calc.RowAccounting.VatPercent} and the {Palkkaus.Model.Calc.RowAccounting.VatEntries} with some entries given,\n     the {Palkkaus.Model.Calc.RowAccounting.VatEntries} are applied.\n     Please note that this is null by default."},"dimensions":{"type":"array","nullable":true,"items":{"type":"object","properties":{"id":{"type":"string","nullable":true,"description":"Dimension Id."},"value":{"type":"string","nullable":true,"description":"Cost accounting dimension value id."},"percent":{"type":"number","nullable":true,"description":"Sharing percent for the dimension."}}},"description":"Values for cost accounting dimensions"},"entry":{"type":"object","nullable":true,"properties":{"debitAccountNumber":{"type":"string","nullable":true,"description":"Debit Account number.\n     If given will override the system resolved debit account number."},"creditAccountNumber":{"type":"string","nullable":true,"description":"Credit Account number.\n     If given will override the system resolved credit account number."}},"description":"Row accounting entries for overriding standard accounting logic."}},"description":"Accounting related data for the row."},"data":{"type":"object","nullable":true,"properties":{},"description":"Usecase specific data"}}},"description":"The result rows. Note that this collection also contains the main Salary entry as one of the rows."},"responsibilities":{"type":"object","nullable":true,"properties":{"employerGroups":{"type":"object","nullable":true,"properties":{"isPrivatePerson":{"type":"boolean","nullable":true,"description":"If true, the Employer is a private person.\n     Otherwise Company or Unknown."}},"description":"Employer groups that are set on Example calculations.\n     These will be replaced by properties from Worker / Employer when these persons are set."},"noPensionPayment":{"type":"boolean","nullable":true,"description":"Pension is not paid if the salary to this Worker is less than a certain amount in a month (about 60€)\n     or worker is less than 17 or more than 64 years old."},"noSocialSecurity":{"type":"boolean","nullable":true,"description":"If worker is less than 16 or more than 67, social secuiry payment is not paid"},"noTvr":{"type":"boolean","nullable":true,"description":"If Worker is less than 17 or more than 64, TVR is not paid.\n     Also if the Employer has no accident insurance."},"pensionCompany":{"nullable":true,"description":"The name of the Pension company because this affects the Pension percentage used in the calculation (only in contract situation).\n     It also needs to be shown in the reports."},"pensionDiscountPercent":{"type":"number","nullable":true,"description":"Pension discount percent."},"pensionPercent":{"type":"number","nullable":true,"description":"Customer specific pension percent."},"insuranceCompany":{"nullable":true,"description":"Company for the current insurance"},"insurancePercent":{"type":"number","nullable":true,"description":"Percent for calculating the estimate for the accident insurance amount to pay."},"groupLifeInsurancePercent":{"type":"number","nullable":true,"description":"Percent for calculating the estimate for the group life insurance amount to pay."},"insuranceContractNumber":{"type":"string","nullable":true,"description":"Accident insurance contract number."},"pensionOldAgePayment":{"type":"boolean","nullable":true,"description":"If the Worker is from 53 to 62 years old, more of the Pension payment\n     is deducted from the Worker side of the salary (less for the Employer).\n     NOTE: People from 63 to 67 years pay the same amount as 17-52 years old."},"pensionRegularEmployer":{"type":"boolean","nullable":true,"description":"The employer should have a Pension contract (not a temporary employer).\n     It does not necessarily mean that the user has a contract yet.\n     NOTE: At the moment, this is not used for calculation - only in the Side costs visualizer tool."},"isPensionMonthlyContract":{"type":"boolean","nullable":true,"description":"If true, the employer has a Pension contract and makes the payments\n     in a monthly schedule which means that Pension interest is calculated for the 20th of the next month.\n     Currently, this is only enabled to Etera - other companies will follow."},"unemploymentSelfPayment":{"type":"boolean","nullable":true,"description":"If true, the employer pays the Unemployment insurance directly to TVR.\n     As of writing, this is true for all companies and with calculations starting 1.8.2018,\n     false for households or calculations before the date."},"calculationPaymentDate":{"type":"string","nullable":true,"description":"The assumed salary payment date from the worker perspective.\n     The system calculates the nearest possible salary date if no any salary date has been given by the\n     employer. If given, the system confirms the given date.\n     This date affects the yearly percents used in the salary calculation."},"pensionAgeRange":{"nullable":true,"description":"The age range that is used in the business logic that determines the employer responsibilities.\n     This property replaces the EmployerGroups.AgeRange that was previous get/set.\n     This is based on WorkerDateOfBirth and CalculationPaymentDate."},"workerDateOfBirth":{"type":"string","nullable":true,"description":"Date of birth for the Worker - this affects the side costs.\n     Please also set the DateOfBirthAccuracy, if you set this property.\n     If SocialSecurityNumber is set, it will override any value set here."},"workerDateOfBirthAccuracy":{"nullable":true,"description":"Accuracy of the date of birth\n     If SocialSecurityNumber is set, it will override any value set here."},"pensionCalculation":{"nullable":true,"description":"Pension calculation type."},"pensionRule":{"nullable":true,"description":"Rules (e.g. effect of monthly lower limit) for pension calculation."},"employmentType":{"nullable":true,"description":"Type of the employment relation"},"employmentTaxcard":{"nullable":true,"description":"Taxcard type from the employment point of view."},"salaryPaymentMethod":{"nullable":true,"description":"Worker's preferred salary payment method: bank account, external etc."},"irIncomeEarnerTypes":{"type":"array","nullable":true,"items":{"nullable":true},"description":"Type of additional income earner data by National Incomer Register classification . If several types apply, all of them should be selected."},"subOrgCode":{"type":"string","nullable":true,"description":"Sub organization code for the Incomes Registry."},"employmentRegCode":{"type":"string","nullable":true,"description":"Employment registration code for Incomes Registry."},"taxAndSocialSecuritySelfPayment":{"type":"boolean","nullable":true,"description":"Tax and social security payments are paid directly by the Employer - not by Palkkaus.fi"},"workerSelfPayment":{"type":"boolean","nullable":true,"description":"Worker salary and expense payments are paid directly by the Employer - not by Palkkaus.fi"},"pensionSelfPayment":{"type":"boolean","nullable":true,"description":"Pension payments are paid directly by the Employer - not by Palkkaus.fi"},"pensionContractNumber":{"type":"string","nullable":true,"description":"Pension insurance contract number."},"unemploymentPayrollLimitStatus":{"nullable":true,"description":"Status for indicating whether the total amount of paid salaries exceeds the thresold for higher unemployment insurance percent."},"salarySlipDeliveryMethods":{"type":"array","nullable":true,"items":{"nullable":true},"description":"Options for the delivery of the payslip to the worker."}},"description":"Responsibilities of Employer and parameters that affect those responsibilities."},"validation":{"type":"object","nullable":true,"properties":{"isValid":{"type":"boolean","nullable":true,"description":"If true, the data is valid - no errors."},"hasAllRequiredFields":{"type":"boolean","nullable":true,"description":"If true, has required fields missing data."},"errors":{"type":"array","nullable":true,"items":{"type":"object","properties":{"key":{"type":"string","nullable":true,"description":"Full path to Name of the property / field (Member name in JSON).\n     This may be null/empty for type General."},"type":{"nullable":true,"description":"High level type: Specifies the relation to object and its Member."},"msg":{"type":"string","description":"Validation error message in the requested language."},"description":{"type":"string","nullable":true,"description":"Validation error long description in the requested language."},"code":{"type":"string","nullable":true,"description":"Some error providers may have a unique technical code for error or validator"}},"required":["msg"]},"description":"Validation errors on invalid field values.\n     Note that required fields missing error messages are not here. Only the invalid values."}},"description":"The validation result for the current calculation.\n     Please note that this is not serialized into the data storage."}},"description":"The results of the calculation. In the API, this is a read-only object."},"info":{"type":"object","nullable":true,"properties":{"workStartDate":{"type":"string","nullable":true,"description":"Start date of the work"},"workEndDate":{"type":"string","nullable":true,"description":"End date of the work"},"workDescription":{"type":"string","nullable":true,"description":"Description of the work for reporting purposes. Max 32 chars."},"workerMessage":{"type":"string","nullable":true,"description":"Message from worker to employer - when worker sends the salary calculation to the employer."},"salarySlipMessage":{"type":"string","nullable":true,"description":"Message which will be displayed in the payslip."},"paymentId":{"type":"string","nullable":true,"description":"Payment reference number in payment service"},"originalPaymentId":{"type":"string","nullable":true,"description":"Original Payment reference number"},"irSenderOfficialId":{"type":"string","nullable":true,"description":"Earnings Payment Report Official id of the sender."},"paymentChannel":{"nullable":true,"description":"Channel that is used for payment."},"applicationId":{"type":"string","nullable":true,"description":"Application id for invoicing etc. purposes."},"messageThreadId":{"type":"string","nullable":true,"description":"The MessageThread Id, if this calculation is referred in a message thread."},"reportDate":{"type":"string","nullable":true,"description":"Assumed earnings payment report date for the report."},"backofficeNotes":{"type":"string","nullable":true,"description":"Notes related to the payment and other backoffice operations:\n     For example the justification why the sum is in calculation vs. Paytrail payment."},"occupationCode":{"type":"string","nullable":true,"description":"Occupation classification, used at least for Accident insurance purposes, but may be used for other reporting.\n     For Finnish Salaries use the Statistics Finland\n     \"Classification of Occupations 2010\" (TK10): https://www.stat.fi/meta/luokitukset/ammatti/017-2018-05-15/index_en.html"},"occupationCode2":{"type":"string","nullable":true,"description":"Secondary occupation classification. Some earnings payment reports may require two occupation codes."},"cbaCode":{"type":"number","nullable":true,"description":"Applicable collective agreement"},"employeeGroup":{"type":"string","nullable":true,"description":"Employee group."},"pensionPaymentDate":{"type":"string","nullable":true,"description":"Calculated pension insurance payment date."},"pensionPaymentRef":{"type":"string","nullable":true,"description":"Pension insurance reference number."},"pensionPaymentSpecifier":{"type":"string","nullable":true,"description":"Pension insurance payment specifier."},"payrollId":{"type":"string","nullable":true,"description":"The Payroll Id, if this calculation is part of a Payroll list."},"costCenter":{"type":"string","nullable":true,"description":"Cost center for reporting purposes."},"workerSourceId":{"type":"string","nullable":true,"description":"Identifier of the worker in a source system. Used in imports etc.\n     This is automatically set from the source id of the employment."},"sourceId":{"type":"string","nullable":true,"description":"Identifier of the calculation in a source system. Used in imports etc."}},"description":"Information about the work that is not directly related to calculating salary and expenses."},"sharing":{"type":"object","nullable":true,"properties":{"type":{"nullable":true,"description":"Type of sharing for this calculation."},"uri":{"type":"string","nullable":true,"description":"Sharing uri."},"lastSharedTo":{"type":"string","nullable":true,"description":"Email address to which the calculation was shared last time."},"lastSharedCc":{"type":"string","nullable":true,"description":"Email address which the calculation was shared as cc last time."},"lastSharedMessage":{"type":"string","nullable":true,"description":"Last shared message to the employer"}},"description":"Sharing of the calculation. This object cannot be modified directly,\n     use specialized methods in Calculations service."},"accounting":{"type":"object","nullable":true,"properties":{"dimensions":{"type":"array","nullable":true,"items":{"type":"object","properties":{"id":{"type":"string","nullable":true,"description":"Dimension Id."},"value":{"type":"string","nullable":true,"description":"Cost accounting dimension value id."},"percent":{"type":"number","nullable":true,"description":"Sharing percent for the dimension."}}},"description":"Values for cost accounting dimensions"}},"description":"Contains calculation specific data for accounting (both cost and financial accounting)."},"worktime":{"type":"object","nullable":true,"properties":{"employmentPeriod":{"type":"object","nullable":true,"properties":{"start":{"type":"string","nullable":true,"description":"Start date of the period"},"end":{"type":"string","nullable":true,"description":"End date of the period."},"daysCount":{"type":"number","nullable":true,"description":"Number of days in the range.\n     Depending of the context, this may be mathematical (end - start) or\n     explicitly specified (typically working days).\n     Typically an integer, and calculations and UI's may choose to round it."},"days":{"type":"array","nullable":true,"items":{"type":"string"},"description":"The collection of days contained in the DateRange if specified by the user.\n     Alternative to DaysCount. If set, should also set DaysCount for backward compatibility."}},"description":"Employment period that is updated from employment at each recalculation (as opposed to holiday specification)."},"wageBasis":{"nullable":true,"description":"Wage basis from the current employment relation.\n     This is for absences and does not presume that holiday years exist for the worker."},"workDays":{"type":"object","nullable":true,"properties":{"start":{"type":"string","nullable":true,"description":"Start date of the period"},"end":{"type":"string","nullable":true,"description":"End date of the period."},"daysCount":{"type":"number","nullable":true,"description":"Number of days in the range.\n     Depending of the context, this may be mathematical (end - start) or\n     explicitly specified (typically working days).\n     Typically an integer, and calculations and UI's may choose to round it."},"days":{"type":"array","nullable":true,"items":{"type":"string"},"description":"The collection of days contained in the DateRange if specified by the user.\n     Alternative to DaysCount. If set, should also set DaysCount for backward compatibility."}},"description":"Describes the working days in the period.\n     Currently, uses the DaysCount, but later the full days array will be taken to use.\n     This includes the absence days (divider in AbsencesDaySalary)."},"absencesPeriods":{"type":"array","nullable":true,"items":{"type":"object","properties":{"id":{"type":"string","nullable":true,"description":"Identifies a single leave."},"period":{"type":"object","nullable":true,"properties":{"start":{"type":"string","nullable":true,"description":"Start date of the period"},"end":{"type":"string","nullable":true,"description":"End date of the period."},"daysCount":{"type":"number","nullable":true,"description":"Number of days in the range.\n     Depending of the context, this may be mathematical (end - start) or\n     explicitly specified (typically working days).\n     Typically an integer, and calculations and UI's may choose to round it."},"days":{"type":"array","nullable":true,"items":{"type":"string"},"description":"The collection of days contained in the DateRange if specified by the user.\n     Alternative to DaysCount. If set, should also set DaysCount for backward compatibility."}},"description":"Period for the absance."},"causeCode":{"nullable":true,"description":"Cause / type of the absence"},"isPaid":{"type":"boolean","nullable":true,"description":"If true, the absence is paid by the employer."},"isHolidayAccrual":{"type":"boolean","nullable":true,"description":"If true, annual leaves are accrued from the absence. If false, these days are deducted from the accrual.\n     By default, you may leave this null and it always follows the IsPaid."},"amount":{"type":"number","nullable":true,"description":"Amount of salary that is paid for the absense.\n     Currently not in use: Would be used in Incomes Register integration."},"notes":{"type":"string","nullable":true,"description":"Additional information as recorded by the Employer."},"sourceId":{"type":"string","nullable":true,"description":"Identifier in the source system is a key defined by a source system / partner system.\n     This is a pass-through string that is passed to the result calculations."},"bonusDaysCount":{"type":"number","nullable":true,"description":"Number of Bonus days to be paid. This is applicable only for {Palkkaus.Model.Worktime.Absences.AbsenceCauseCode.AnnualLeave}AnnualLeave."}}},"description":"Periods of 'absences'."},"absencesDailySalary":{"type":"number","nullable":true,"description":"Price for a single absence day. Typically based on MonthlySalary, but may be modified."},"holidaySpec":{"type":"object","nullable":true,"properties":{"wageBasis":{"nullable":true,"description":"Wage basis for a Holiday Year.\n     When this is changed, you need to make a rerun to the previous calculations in the holiday year.\n     NOTE: This is not in HolidaySpecification because, the same value is stored in Employment relation."},"employmentPeriod":{"type":"object","nullable":true,"properties":{"start":{"type":"string","nullable":true,"description":"Start date of the period"},"end":{"type":"string","nullable":true,"description":"End date of the period."},"daysCount":{"type":"number","nullable":true,"description":"Number of days in the range.\n     Depending of the context, this may be mathematical (end - start) or\n     explicitly specified (typically working days).\n     Typically an integer, and calculations and UI's may choose to round it."},"days":{"type":"array","nullable":true,"items":{"type":"string"},"description":"The collection of days contained in the DateRange if specified by the user.\n     Alternative to DaysCount. If set, should also set DaysCount for backward compatibility."}},"description":"Employment period for the purposes of holiday calculation (annual leave accrual).\n     When this is changed, you need to make a rerun to the previous calculations in the holiday year."},"code":{"nullable":true,"description":"Defines how the holidays are handled for the worker."},"holidayPayCalculation":{"nullable":true,"description":"Defines how the holiday pay is calculated."},"accrualFixed":{"type":"number","nullable":true,"description":"Defines the number of holidays that the worker is entitled per month worked.\n     If the value is set to 0 (default), the number is 2 for first year and 2,5 thereafter as defined in the law.\n     To actually se the daysPerMonth to zero, use code value other than Permanent14Days or Permanent35Hours."},"compensation":{"type":"number","nullable":true,"description":"For {Palkkaus.Model.Worktime.Holidays.HolidayPayCalculation.HolidayCompensation} the compensation percent.\n     Holiday compensation as percent of salary (11.5% is 0.115)"},"holidayPayPercent":{"type":"number","nullable":true,"description":"For {Palkkaus.Model.Worktime.Holidays.HolidayPayCalculation.PercentageBasedPay} the percent.\n     Holiday pay as percent of salary (11.5% is 0.115)"},"bonusMethod":{"nullable":true,"description":"Method for paying holiday bonus in this salary calculation."},"bonus":{"type":"number","nullable":true,"description":"Holiday bonus for the worker (lomaraha, lomaltapaluuraha).\n     Typically 0.5 for 50%."}},"description":"Specification for the holiday calculation"},"leavesDailySalary":{"type":"number","nullable":true,"description":"Price for a single holiday day"},"bonusDailySalary":{"type":"number","nullable":true,"description":"Price for a single bonus day"},"holidayPayAccrualRemaining":{"type":"number","nullable":true,"description":"Total remaining amount of holiday pay accrual."},"holidayBonusAccrualRemaining":{"type":"number","nullable":true,"description":"Total remaining amount of holiday bonus accrual."},"accruals":{"type":"array","nullable":true,"items":{"type":"object","properties":{"month":{"type":"string","nullable":true,"description":"First day of month for the holiday month"},"daysAccrued":{"type":"number","nullable":true,"description":"Holiday accrual for this month.\n     Note that -1 is indication that accrual should not be updated for this particylar month.\n     There is no possiblity for negative accrual."},"absencesDays":{"type":"number","nullable":true,"description":"Number of absence days used in the calculation."},"workDays":{"type":"number","nullable":true,"description":"Work days in determining the accrual for the month in 14 days rule."},"workHours":{"type":"number","nullable":true,"description":"Work hours in determining the accrual fot the month in 35 hour rule."},"calcId":{"type":"string","nullable":true,"description":"Id of the calculation that this accrual is related to."}}},"description":"Accruals for each calendar month in this calculation."},"accrualSpec":{"type":"object","nullable":true,"properties":{"year":{"type":"number","nullable":true,"description":"Year as integer"},"code":{"nullable":true,"description":"Defines how the holidays are handled for the worker."},"wageBasis":{"nullable":true,"description":"Wage basis for a Holiday Year."},"defaultAccrual":{"type":"number","nullable":true,"description":"Default accrual for months where the Accrual occurs."}},"description":"Specification for the accrual calculation"}},"description":"Worktime data that is stored as part of Salary calculation:\n     work days, absences, holidays and holiday accrual.\n     In the future may also contain relevant part of timesheet data (work hours)."},"workflowData":{"type":"object","nullable":true,"properties":{"events":{"type":"array","nullable":true,"items":{"type":"object","properties":{"id":{"type":"string","nullable":true,"description":"Event-provider specific identifier for the event.\n     For deletable events, this should identify , but do NOT trust this to be 100% unique."},"type":{"type":"string","nullable":true,"description":"Type of the event. This typically maps to parent-object specific enumeration."},"message":{"type":"string","nullable":true,"description":"Message for backoffice purposes from the User or system that created the event."},"ui":{"nullable":true,"description":"User Interface styling of the event: Indicates the severity for the end-user."},"features":{"type":"array","nullable":true,"items":{"nullable":true},"description":"Features for this event."},"time":{"type":"string","nullable":true,"description":"UTC time for when the event occured."},"user":{"type":"string","nullable":true,"description":"User or system that created the event."},"assignedTo":{"type":"string","nullable":true,"description":"Credential of the user which is responsible of the event."},"record":{"type":"string","nullable":true,"description":"Record attached to this event."}}},"description":"Workflow events for the item."}},"description":"Readonly workflow data, which is exposed to API."},"id":{"type":"string","nullable":true,"description":"Identifier of the object."},"createdAt":{"type":"string","nullable":true,"description":"The date when the object was created."},"updatedAt":{"type":"string","nullable":true,"description":"The time when the object was last updated.\n     Typically this should be a logical update by user (UserUpdatedAt in DTO), not technical updates."},"owner":{"type":"string","nullable":true,"description":"Owner ID for this data"},"isReadOnly":{"type":"boolean","nullable":true,"description":"Indication that for the currently logged-in account, the data is generally read-only."},"partner":{"type":"string","nullable":true,"description":"Primary partner information. Automatically updated from the storage container Partner."}},"description":"The calculation based on which the report is generated."},"reportType":{"type":"string","enum":["salarySlip","employerReport","paymentReport","paymentSummaryReport","totalsReport"],"description":"The type of the report. Default is SalarySlip.","example":"salarySlip"},"lang":{"type":"string","enum":["fi","sv","en"],"description":"The language of the report: Either \"fi\" (default), \"sv\" or \"en\".","example":"fi"}},"required":["calculation"],"description":"The input parameters. See ReportInput for details."},"ArrayValue":{"type":"object","properties":{"value":{"type":"array","items":{"nullable":true}}},"required":["value"]},"Employment_getEmployees_Request":{"type":"object","properties":{}},"Employment_getCompanies_Request":{"type":"object","properties":{}}},"parameters":{}},"paths":{"/api/Calculator/simpleSalary":{"post":{"tags":["Calculator"],"summary":"Create a simple calculation.","description":"Create a simple salary calculation for a set of rows, employment id, period and salary date.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimpleCalculatorInput"}}}},"responses":{"200":{"description":"The calculation object with results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Calculation"}}}}}}},"/api/Calculator/simpleSalaryReport":{"post":{"tags":["Calculator"],"summary":"Simple salary calculation to report","description":"Creates a simple salary calculation for a set of rows, employment id, period and salary date,\nand returns the result as report HTML string (document or fragment).\nRuns both simpleSalary and getReportDocument / getReportFragment based on the input.type.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimpleSalaryReportInput"}}}},"responses":{"200":{"description":"The report HTML string.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StringValue"}}}}}}},"/api/Calculator/getReportDocument":{"post":{"tags":["Calculator"],"summary":"Get a report document.","description":"Gets a report document for a given calculation.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportInput"}}}},"responses":{"200":{"description":"The report document as HTML string.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StringValue"}}}}}}},"/api/Calculator/getReportFragment":{"post":{"tags":["Calculator"],"summary":"Get a report fragment.","description":"Gets a report fragment for a given calculation: Only the report html part, without html body tags etc.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportInput"}}}},"responses":{"200":{"description":"The report fragment as HTML string.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StringValue"}}}}}}},"/api/Employment/getEmployees":{"post":{"tags":["Employment"],"summary":"Get sample employees.","description":"Get sample employees.\n\n- Erkki Esimerkki (example-default) a regular employee, 18-52 years old\n- Laura Lukiolainen (example-17) an underage employee, 17 years old\n- Tanja Eläkeläinen (example-pensioner) a pensioner, 65-67 years old, tax rate 10%\n","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Employment_getEmployees_Request"}}}},"responses":{"200":{"description":"The sample employees as ContractParty objects.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArrayValue"}}}}}}},"/api/Employment/getCompanies":{"post":{"tags":["Employment"],"summary":"Get sample companies.","description":"Get sample companies. Currently only Mallitakomo Oy (example-company) is available.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Employment_getCompanies_Request"}}}},"responses":{"200":{"description":"The sample companies as ContractParty objects.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArrayValue"}}}}}}}}}