> For the complete documentation index, see [llms.txt](https://docs.samesystem.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.samesystem.dev/api-v1-reference/models.md).

# Models

## The AUTH\_PROVIDER\_INPUT object

```json
{"openapi":"3.0.0","info":{"title":"SameSystem API V1","version":"1.1.3"},"components":{"schemas":{"AUTH_PROVIDER_INPUT":{"title":"AUTH_PROVIDER_INPUT","required":["grant_type","password","username"],"type":"object","properties":{"username":{"type":"string"},"password":{"type":"string"},"grant_type":{"type":"string","default":"password"}}}}}}
```

## The Department object

```json
{"openapi":"3.0.0","info":{"title":"SameSystem API V1","version":"1.1.3"},"components":{"schemas":{"Department":{"title":"Department","required":["id","name"],"type":"object","properties":{"id":{"type":"number","description":"Internal unique identier"},"name":{"type":"string","description":"Name of the department"},"custom_id":{"type":"string","description":"Custom id/external department id."},"email":{"type":"string","description":"Email to the department"},"phone":{"type":"string","description":"Phone number to the department","nullable":true},"abbr":{"type":"string","description":"Abbreviated department name"},"salary_dpt_nr":{"type":"string","description":"Salary department number"},"salary_dpt_nr2":{"type":"string","description":"Salary department number (MLE)"},"address":{"type":"string","description":"Address of the department"},"postal_code":{"type":"string","description":"Postal code/zip code of the deparment"},"city":{"type":"string","description":"City of the department"},"fax":{"type":"string","nullable":true},"non_lendable":{"type":"boolean","description":"If true lendout is disabled to this department"},"manager":{"type":"object","properties":{"full_name":{"type":"string","description":"Name of the manager"},"wager_earner_no":{"type":"string","description":"Payroll number of the manager"}},"description":"Manager object"},"ctx_token":{"type":"string","description":"The complete ctx_token/clientToken for the department including both the c-part and the d-part to this department"},"dpt_no":{"type":"string","description":"Department number"},"inactive":{"type":"boolean","description":"Set to true if department has been deactivated."},"parent_shop_name":{"type":"string","description":"Name of the parent department","nullable":true},"group_name":{"type":"string","description":"Group name","nullable":true},"company_nr":{"type":"string","description":"Company number"},"cost_center":{"type":"string","description":"Cost center for this department"}},"description":"Department/shop information."}}}}
```

## The DepartmentCreateInput object

```json
{"openapi":"3.0.0","info":{"title":"SameSystem API V1","version":"1.1.3"},"components":{"schemas":{"DepartmentCreateInput":{"title":"DepartmentCreateInput","required":["name"],"type":"object","properties":{"name":{"type":"string","description":"Name of the department"},"email":{"type":"string","description":"Email to the department"},"manager_email":{"type":"string","description":"Email to the manager"},"phone":{"type":"string","description":"Phone number to the department"},"dpt_nr":{"type":"string","description":"Department number"},"abbr":{"type":"string","description":"Abbreviated department name"},"salary_dpt_nr":{"type":"string","description":"Salary department number"},"salary_dpt_nr2":{"type":"string","description":"Salary department number (MLE)"},"address":{"type":"string","description":"Address"},"fax":{"type":"string","description":"Fax number"},"postal_code":{"type":"string","description":"Postal code"},"city":{"type":"string","description":"City"},"cost_center":{"type":"string","description":"Cust center of the department"},"custom_id":{"type":"string","description":"Custom id/external department id."},"template_id":{"type":"string","description":"Template id for regional templates. Contact SameSystem for a list of valid ids."}},"description":"Used to create new departments"}}}}
```

## The DepartmentUpdateInput object

```json
{"openapi":"3.0.0","info":{"title":"SameSystem API V1","version":"1.1.3"},"components":{"schemas":{"DepartmentUpdateInput":{"title":"DepartmentUpdateInput","type":"object","properties":{"name":{"type":"string","description":"Name of the department"},"email":{"type":"string","description":"Email to the department"},"manager_email":{"type":"string","description":"Email to the manager"},"phone":{"type":"string","description":"Phone number to the department"},"dpt_nr":{"type":"string","description":"Department number"},"abbr":{"type":"string","description":"Abbreviated department name"},"salary_dpt_nr":{"type":"string","description":"Salary department number"},"salary_dpt_nr2":{"type":"string","description":"Salary department number (MLE)"},"address":{"type":"string","description":"Address"},"fax":{"type":"string","description":"Fax number"},"postal_code":{"type":"string","description":"Postal code"},"city":{"type":"string","description":"City"},"cost_center":{"type":"string","description":"Cost center of the department."},"custom_id":{"type":"string","description":"Custom id/external department id."},"template_id":{"type":"string","description":"Used for regional templates. Contact SameSystem for a list of valid ids."}},"description":"Used to update departments"}}}}
```

## The WeeklyBalanceField object

```json
{"openapi":"3.0.0","info":{"title":"SameSystem API V1","version":"1.1.3"},"components":{"schemas":{"WeeklyBalanceField":{"title":"WeeklyBalanceField","type":"object","properties":{"field_id":{"type":"number","description":"A unique field id given to a weekly balance fields. If you have multiple clients, the fields will be unique - also across clients."},"name":{"type":"string","description":"Name of the field, ex gross sales, net sales or transactions etc."},"field_type":{"type":"string","description":"Field type can be: \"number\",\"text\",\"expense\" or \"deposit\".\n- Number, expense and deposit type is a *float*.\n- Text is a *string*.\n- Expense and deposit are speciel fields which must be detailed with correct entries when saved."},"summable":{"type":"boolean","description":"If *false*, numbers mathematically cannot be summed up into total."},"code":{"type":"string","nullable":true},"calculated":{"type":"boolean","description":"if *true*, the field is calculated from other fields and you can avoid sending this."},"mandatory":{"type":"boolean","description":"if *true*, this field mast be present before confirming the day. The only exception is when all fields are empty on a given day (closed day situation)."}}}}}}
```

## The WeeklyBalance object

```json
{"openapi":"3.0.0","info":{"title":"SameSystem API V1","version":"1.1.3"},"components":{"schemas":{"WeeklyBalance":{"title":"WeeklyBalance","type":"object","properties":{"register_count":{"type":"number","description":"The total number of registers"},"registers":{"type":"array","description":"Data from the registers","items":{"type":"object","properties":{"register_number":{"type":"number","description":"Register number.\n0 = Total from all registers.\n1 = Register 1, 2= Register 2 and so on."},"week_approved":{"type":"boolean","description":"Will be true if the whole week has been approved automatically. This will happen when all days in the week have been confirmed."},"unavailable_fields":{"type":"array","items":{"type":"object"}},"confirmed":{"type":"object","additionalProperties":{"type":"object","properties":{"user":{"type":"string","description":"Name of the user who confirmed the register."},"datetime":{"type":"string","description":"Date and time the register was confirmed."}}},"description":"Confirmation object keyed by date (YYYY-MM-DD)."},"comments":{"type":"object","additionalProperties":{"type":"string"},"description":"Comments keyed by date (YYYY-MM-DD). The key represents the date of the comment."},"lines":{"type":"object","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/RegisterLine"}},"description":"Register lines keyed by (YYYY-MM-DD). Each date contains the registered field values for that day."},"expenses":{"type":"array","description":"Not used or very limited use.","items":{"type":"object","properties":{"group_id":{"type":"number"},"title":{"type":"string"},"value":{"type":"number"}}}},"deposits":{"type":"array","description":"Not used or very limited use.","items":{"type":"object","properties":{"group_id":{"type":"number"},"title":{"type":"string"},"value":{"type":"number"}}}}}}}},"description":"Weekly balance sheet with sales figures, KPIs and counter data."},"RegisterLine":{"title":"RegisterLine","type":"object","properties":{"field_id":{"type":"integer","description":"ID of the register field."},"value":{"description":"Value of the register field. The value can be numeric or text depending on the field.\n","oneOf":[{"type":"number"},{"type":"string"}]}},"description":"Register line used in weekly balance"}}}}
```

## The RegisterLine object

```json
{"openapi":"3.0.0","info":{"title":"SameSystem API V1","version":"1.1.3"},"components":{"schemas":{"RegisterLine":{"title":"RegisterLine","type":"object","properties":{"field_id":{"type":"integer","description":"ID of the register field."},"value":{"description":"Value of the register field. The value can be numeric or text depending on the field.\n","oneOf":[{"type":"number"},{"type":"string"}]}},"description":"Register line used in weekly balance"}}}}
```

## The SalesFigures object

```json
{"openapi":"3.0.0","info":{"title":"SameSystem API V1","version":"1.1.3"},"components":{"schemas":{"SalesFigures":{"title":"SalesFigures","required":["lines"],"type":"object","properties":{"comments":{"type":"string"},"lines":{"type":"array","items":{"required":["field_id","value"],"type":"object","properties":{"field_id":{"type":"number","description":"Id to the weekly balance field."},"value":{"type":"number","description":"Value of the weekly balance field."},"time":{"type":"string","description":"Hourly figures registered 10:00:00 are the total or summary of values between 10:00:00-10:59:59.","format":"time"}}}},"expenses":{"type":"array","items":{"type":"object","properties":{"group_id":{"type":"number"},"title":{"type":"string"},"value":{"type":"number"}}}},"deposits":{"type":"array","items":{"type":"object","properties":{"group_id":{"type":"number"},"title":{"type":"string"},"value":{"type":"number"}},"additionalProperties":false}}}}}}}
```

## The SalesFiguresHourly object

```json
{"openapi":"3.0.0","info":{"title":"SameSystem API V1","version":"1.1.3"},"components":{"schemas":{"SalesFiguresHourly":{"title":"SalesFiguresHourly","required":["lines"],"type":"object","properties":{"comments":{"type":"string"},"lines":{"type":"array","description":"Id of the weekly balance field\n","items":{"required":["field_id"],"type":"object","properties":{"field_id":{"type":"number","description":"Value of the weekly balance field"},"value":{"type":"number"}}}}}}}}}
```

## The SalesBudgetDaily object

```json
{"openapi":"3.0.0","info":{"title":"SameSystem API V1","version":"1.1.3"},"components":{"schemas":{"SalesBudgetDaily":{"type":"object","properties":{"daily_budgets":{"type":"array","items":{"required":["amount","date"],"type":"object","properties":{"date":{"type":"string"},"amount":{"type":"number"}}}}}}}}}
```

## The SalesBudgetMonthly object

```json
{"openapi":"3.0.0","info":{"title":"SameSystem API V1","version":"1.1.3"},"components":{"schemas":{"SalesBudgetMonthly":{"type":"object","properties":{"monthly_budgets":{"type":"array","items":{"required":["amount","month","year"],"type":"object","properties":{"year":{"type":"integer"},"month":{"type":"integer"},"amount":{"type":"number","description":"Amount is set to 0.0 on months without a budget."}}}}}}}}}
```

## The SalaryBudgetDaily object

```json
{"openapi":"3.0.0","info":{"title":"SameSystem API V1","version":"1.1.3"},"components":{"schemas":{"SalaryBudgetDaily":{"type":"object","properties":{"daily_salary_budgets":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"amount":{"type":"number","description":"Amount is 0.0 on days without a budget."}}}}}}}}}
```

## The SalaryBudgetMonthly object

```json
{"openapi":"3.0.0","info":{"title":"SameSystem API V1","version":"1.1.3"},"components":{"schemas":{"SalaryBudgetMonthly":{"type":"object","properties":{"monthly_salary_budgets":{"type":"array","items":{"required":["amount","month","year"],"type":"object","properties":{"year":{"type":"integer"},"month":{"type":"integer"},"amount":{"type":"number"}}}}}}}}}
```

## The User object

```json
{"openapi":"3.0.0","info":{"title":"SameSystem API V1","version":"1.1.3"},"components":{"schemas":{"User":{"type":"object","properties":{"user_id":{"type":"number"},"wage_earner_no":{"type":"string","description":"Payroll number (on contract)"},"role":{"type":"string"},"civil_no":{"type":"string"},"first_name":{"type":"string"},"last_name":{"type":"string"},"address_line1":{"type":"string"},"postal_code":{"type":"string"},"city":{"type":"string"},"mobile":{"type":"string"},"email":{"type":"string"},"salary_dpt_no":{"type":"string"},"start_date":{"type":"string","format":"date"},"employee_type":{"type":"string","description":"Fulltime or Hourly"}}}}}}
```

## The UserCreateInput object

```json
{"openapi":"3.0.0","info":{"title":"SameSystem API V1","version":"1.1.3"},"components":{"schemas":{"UserCreateInput":{"required":["civil_no","first_name","hours_week","last_name","role","shop_name","start_date"],"type":"object","properties":{"role":{"type":"string"},"civil_no":{"type":"string"},"first_name":{"type":"string"},"last_name":{"type":"string"},"address_line1":{"type":"string"},"postal_code":{"type":"string"},"city":{"type":"string"},"mobile":{"type":"string"},"email":{"type":"string"},"kon_1":{"type":"string"},"start_date":{"type":"string","format":"date"},"shop_name":{"type":"string"},"hours_week":{"type":"number"}}}}}}
```

## The UserUpdateInput object

```json
{"openapi":"3.0.0","info":{"title":"SameSystem API V1","version":"1.1.3"},"components":{"schemas":{"UserUpdateInput":{"required":["change_date"],"type":"object","properties":{"role":{"type":"string"},"civil_no":{"type":"string"},"first_name":{"type":"string"},"last_name":{"type":"string"},"address_line1":{"type":"string"},"postal_code":{"type":"string"},"city":{"type":"string"},"mobile":{"type":"string"},"email":{"type":"string"},"kon_1":{"type":"string"},"start_date":{"type":"string","format":"date"},"shop_name":{"type":"string"},"hours_week":{"type":"number"},"wage_earner_no":{"type":"string"},"change_date":{"type":"string","format":"date"}}}}}}
```

## The Schedule object

```json
{"openapi":"3.0.0","info":{"title":"SameSystem API V1","version":"1.1.3"},"components":{"schemas":{"Schedule":{"type":"object","properties":{"date":{"type":"string","description":"Date of the schedule"},"status":{"type":"string","description":"Status. Can be one of the following:\n- unreleased : The schedule is not yet published.\n- released   : The schedule is published.\n- confirmed  : The day in the schedule is confirmed by manager."},"cost":{"type":"number","description":"Cost of the day."},"compensation":{"type":"object","description":"Sum of salary compensation amounts for this employee. Requires client setting \"Use expected compensations in statistics\" on the Schedule tab in General setting.","nullable":true},"public_holiday":{"type":"object","properties":{"name":{"type":"string","description":"Name of public holiday."},"closed":{"type":"boolean","description":"Is department closed or not."},"amount":{"type":"number","description":"Number of hours counted for this holiday."},"cost":{"type":"number","description":"The cost per schedule (day per employee). If public holiday is set to \"deduct from contract hours\" then cost will be 0.0"}},"description":"If date is not a public holiday, the value will be null.","nullable":true},"department":{"type":"object","properties":{"id":{"type":"string","description":"Internal id of the department"},"nr":{"type":"string","description":"Department number"},"external_department_number":{"type":"string","description":"External department number"},"salary_department_number":{"type":"string","description":"Department number for salary"},"opening_hour":{"type":"string","description":"Opening hours this day.","nullable":true},"closing_hour":{"type":"string","description":"Closing hours this day","nullable":true}}},"user":{"type":"object","properties":{"id":{"type":"integer","description":"Internal id of the employee","format":"int64"},"name":{"type":"string","description":"Name of the employee"},"role_name":{"type":"string","description":"Title/role of the employee"},"salary_number":{"type":"string","description":"Salary number also known as \"wage_earner_number\". Used to identify user in a payroll system"}}},"events":{"type":"object","properties":{"work":{"type":"array","items":{"$ref":"#/components/schemas/ScheduleWork"}},"absence":{"type":"array","items":{"$ref":"#/components/schemas/ScheduleAbsence"}}}},"bonuses":{"type":"array","items":{"$ref":"#/components/schemas/ScheduleBonus"}},"lent_out_department":{"type":"object","properties":{"department_id":{"type":"integer","description":"Internal department id of the lent out department","format":"int64","nullable":true},"name":{"type":"string","description":"Name of the lent out department","nullable":true},"external_department_id":{"type":"string","description":"External department id of the lent out department","nullable":true},"cost_center":{"type":"string","description":"Cost center of the lent out department","nullable":true},"department_number":{"type":"string","description":"Department number of the lent out department","nullable":true},"salary_department_number":{"type":"string","description":"Salary department number of the lent out department","nullable":true},"opening_hour":{"type":"string","description":"Opening hour of the lent out department","nullable":true},"closing_hour":{"type":"string","description":"Closing hour of the lent out department","nullable":true}},"description":"if ?include_lent_out=true this object is returned with information about lent outs."},"tasks":{"type":"array","items":{"$ref":"#/components/schemas/ScheduleTask"}}},"description":""},"ScheduleWork":{"type":"object","properties":{"id":{"type":"integer","description":"The internal id of the work event.","format":"int64"},"zone":{"type":"string","description":"Name of the zone. If a zone is not selected for work, it will be null.","nullable":true},"start_time":{"type":"number","description":"Work start time"},"end_time":{"type":"number","description":"Work end time."},"cost":{"type":"number","description":"Cost of the work for this employee on the given day."},"total_hours":{"type":"object","properties":{"with_breaks":{"type":"string","description":"Include unpaid breaks as hours."},"without_breaks":{"type":"string","description":"Exclude unpaid breaks as hours."}},"description":"Calculated total hours with breaks and without breaks. \"With breaks\" means we include unpaid break as hours, while \"without_breaks\" mean we exclude it."},"breaks":{"type":"object","properties":{"paid":{"type":"string","description":"Number of hours paid.","format":"time"},"unpaid":{"type":"string","description":"Number of hours unpaid."},"placed_breaks":{"type":"array","description":"Information about placed breaks.","items":{"type":"object","properties":{"start_time":{"type":"string","description":"Start time of the break.","format":"time"},"end_time":{"type":"string","description":"End time of the break.","format":"time"},"paid":{"type":"boolean","description":"Indication if break is paid or not."},"amount":{"type":"string","description":"Amount of hours."}}}}},"description":"Information about breaks."}}},"ScheduleAbsence":{"type":"object","properties":{"id":{"type":"integer","description":"Id of the absence event","format":"int64"},"name":{"type":"string","description":"Name of absence"},"type_id":{"type":"integer","description":"Internal id for the absence type"},"code":{"type":"string","description":"Your own code/id for the absence. Can be used by the payroll system"},"zone":{"type":"string","description":"Name of the zone","nullable":true},"start_time":{"type":"string","description":"Absence start time. Will be null for all day absence.","format":"time","nullable":true},"end_time":{"type":"string","description":"Absence end time. Will be null for all day absence","format":"time","nullable":true},"cost":{"type":"number","description":"Cost of the absence"},"total_hours":{"type":"object","properties":{"with_breaks":{"type":"string"},"without_breaks":{"type":"string"}},"description":"Calculated total hours with and without breaks"},"breaks":{"type":"object","properties":{"paid":{"type":"string"},"unpaid":{"type":"string"},"placed_breaks":{"type":"array","items":{"type":"object","properties":{"start_time":{"type":"string","description":"Start time of the break","format":"time"},"end_time":{"type":"string","description":"End time of the break","format":"time"},"paid":{"type":"boolean","description":"Is the break paid or not"},"amount":{"type":"string","description":"Amount of hours","format":"time"}}}}},"description":"Information about breaks"}}},"ScheduleBonus":{"title":"ScheduleBonus","type":"object","properties":{"name":{"type":"string","description":"Name of the bonus"},"start_time":{"type":"string","description":"Start time for the bonus"},"end_time":{"type":"string","description":"End time for the bonus","format":"time"},"amount":{"type":"string","description":"Amount of hours","format":"time"},"cost":{"type":"number","description":"Cost of the bonus"},"bonus_type_id":{"type":"integer","description":"Id of the bonus type."},"bonus_type_rate":{"type":"number","description":"Name of the bonus type"},"bonus_type_rate_type":{"type":"string","description":"Type of the bonus type."}}},"ScheduleTask":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the task in this shift"},"task_type_id":{"type":"integer","description":"ID of the task type."},"name":{"type":"string","description":"Name of the task."},"start_time":{"type":"number","description":"Start time of the task.","format":"float"},"end_time":{"type":"number","description":"End time of the task.","format":"float"},"hours":{"type":"number","description":"Total number of hours for this task.","format":"float"},"productivity_percent":{"type":"number","description":"The productivty percentage of the task.","format":"float"}},"description":"Task in schedule"}}}}
```

## The ScheduleWork object

```json
{"openapi":"3.0.0","info":{"title":"SameSystem API V1","version":"1.1.3"},"components":{"schemas":{"ScheduleWork":{"type":"object","properties":{"id":{"type":"integer","description":"The internal id of the work event.","format":"int64"},"zone":{"type":"string","description":"Name of the zone. If a zone is not selected for work, it will be null.","nullable":true},"start_time":{"type":"number","description":"Work start time"},"end_time":{"type":"number","description":"Work end time."},"cost":{"type":"number","description":"Cost of the work for this employee on the given day."},"total_hours":{"type":"object","properties":{"with_breaks":{"type":"string","description":"Include unpaid breaks as hours."},"without_breaks":{"type":"string","description":"Exclude unpaid breaks as hours."}},"description":"Calculated total hours with breaks and without breaks. \"With breaks\" means we include unpaid break as hours, while \"without_breaks\" mean we exclude it."},"breaks":{"type":"object","properties":{"paid":{"type":"string","description":"Number of hours paid.","format":"time"},"unpaid":{"type":"string","description":"Number of hours unpaid."},"placed_breaks":{"type":"array","description":"Information about placed breaks.","items":{"type":"object","properties":{"start_time":{"type":"string","description":"Start time of the break.","format":"time"},"end_time":{"type":"string","description":"End time of the break.","format":"time"},"paid":{"type":"boolean","description":"Indication if break is paid or not."},"amount":{"type":"string","description":"Amount of hours."}}}}},"description":"Information about breaks."}}}}}}
```

## The ScheduleAbsence object

```json
{"openapi":"3.0.0","info":{"title":"SameSystem API V1","version":"1.1.3"},"components":{"schemas":{"ScheduleAbsence":{"type":"object","properties":{"id":{"type":"integer","description":"Id of the absence event","format":"int64"},"name":{"type":"string","description":"Name of absence"},"type_id":{"type":"integer","description":"Internal id for the absence type"},"code":{"type":"string","description":"Your own code/id for the absence. Can be used by the payroll system"},"zone":{"type":"string","description":"Name of the zone","nullable":true},"start_time":{"type":"string","description":"Absence start time. Will be null for all day absence.","format":"time","nullable":true},"end_time":{"type":"string","description":"Absence end time. Will be null for all day absence","format":"time","nullable":true},"cost":{"type":"number","description":"Cost of the absence"},"total_hours":{"type":"object","properties":{"with_breaks":{"type":"string"},"without_breaks":{"type":"string"}},"description":"Calculated total hours with and without breaks"},"breaks":{"type":"object","properties":{"paid":{"type":"string"},"unpaid":{"type":"string"},"placed_breaks":{"type":"array","items":{"type":"object","properties":{"start_time":{"type":"string","description":"Start time of the break","format":"time"},"end_time":{"type":"string","description":"End time of the break","format":"time"},"paid":{"type":"boolean","description":"Is the break paid or not"},"amount":{"type":"string","description":"Amount of hours","format":"time"}}}}},"description":"Information about breaks"}}}}}}
```

## The ScheduleBonus object

```json
{"openapi":"3.0.0","info":{"title":"SameSystem API V1","version":"1.1.3"},"components":{"schemas":{"ScheduleBonus":{"title":"ScheduleBonus","type":"object","properties":{"name":{"type":"string","description":"Name of the bonus"},"start_time":{"type":"string","description":"Start time for the bonus"},"end_time":{"type":"string","description":"End time for the bonus","format":"time"},"amount":{"type":"string","description":"Amount of hours","format":"time"},"cost":{"type":"number","description":"Cost of the bonus"},"bonus_type_id":{"type":"integer","description":"Id of the bonus type."},"bonus_type_rate":{"type":"number","description":"Name of the bonus type"},"bonus_type_rate_type":{"type":"string","description":"Type of the bonus type."}}}}}}
```

## The TimeRegistration object

```json
{"openapi":"3.0.0","info":{"title":"SameSystem API V1","version":"1.1.3"},"components":{"schemas":{"TimeRegistration":{"title":"TimeRegistration","type":"object","properties":{"date":{"type":"string","description":"Date of the time registration","format":"date"},"user":{"type":"object","properties":{"id":{"type":"integer","description":"Internal id of the employee","format":"int64"},"name":{"type":"string","description":"Name of the employee"},"title":{"type":"string","description":"Title/role of the employee"},"salary_nr":{"type":"string","description":"Salary number/payroll number. Can be used by a payroll system"}},"description":"Information about the user"},"shifts":{"type":"array","items":{"$ref":"#/components/schemas/TimeRegistrationShift"}}}},"TimeRegistrationShift":{"type":"object","properties":{"id":{"type":"integer","description":"Internal id of the shift"},"manual":{"type":"boolean"},"status":{"type":"string","description":"Status. Can be:\n- as-planned : Time registration matches planned time.\n- unconfirmed : Time registration does not match planned time and this has not been confirmed.\n- confirmed : Time registration does not match planned time, but this has been confirmed.\n- no-show : Employee did not register time.\n- incomplete : Time registration is incomplete.\n- pending : Time registration is pending.\ncanceled : Time registration was cancelled.\nactive : Time registration is active. The employee checked in bit are still not checked out.\ncleared : Time registration was cleared by administrator."},"department":{"type":"object","properties":{"id":{"type":"string","description":"Internal id of the department"},"nr":{"type":"string","description":"Department number"},"salary_department_number":{"type":"string","description":"Salary department number"},"external_department_number":{"type":"string","description":"External department id"}}},"start":{"type":"object","properties":{"planned":{"type":"number","description":"Planned start date.","nullable":true},"raw":{"type":"number","description":"Raw is the actual start time","nullable":true},"registered":{"type":"number","description":"Registered is \"raw\" after stepping rules have been applied eg. snapping to a 5- og 15-minutes interval","nullable":true},"reason":{"type":"string","description":"Reason for early/late registration","nullable":true}},"description":"Start object"},"end":{"type":"object","properties":{"planned":{"type":"number","description":"The planned end time","nullable":true},"raw":{"type":"number","description":"Raw is the actual end time","nullable":true},"registered":{"type":"number","description":"Registered is \"raw\" after stepping rules have been applied eg. snapping to a 5- or 15-minutes interval","nullable":true},"reason":{"type":"string","description":"Reason for early/late registration","nullable":true}},"description":"End object"},"breaks":{"type":"object","properties":{"planned_entries":{"type":"array","description":"Array of planned breaks","items":{"type":"object","properties":{"start_time":{"type":"number","description":"Start time of the planned break"},"end_time":{"type":"number","description":"End time of the planned break"},"duration":{"type":"string","description":"Duration of the planned break"},"paid":{"type":"boolean","description":"Indicates if the planned break are paid or not"}}}},"registered_entries":{"type":"array","description":"Array of registered breaks","items":{"type":"object","properties":{"start_time":{"type":"number","description":"Start timeo of the break"},"end_time":{"type":"number","description":"Edn time of the break"},"duration":{"type":"string","description":"Duration of the break"},"paid":{"type":"boolean","description":"Is the break paid or not"}}}},"reason":{"type":"string","description":"Reason for early/late check-in/out","nullable":true}}},"tasks":{"type":"object","properties":{"registered_entries":{"type":"array","items":{"type":"object","properties":{"start_time":{"type":"number","description":"Task start time"},"end_time":{"type":"integer","description":"Task end time"},"duration":{"type":"string","description":"Task duration"},"task_type":{"$ref":"#/components/schemas/TaskType"}}}}},"description":"Time registration on tasks"},"lent_out_department":{"type":"object","properties":{"department_id":{"type":"integer","description":"Internal department identifier","format":"int64"},"name":{"type":"string","description":"Name of department"},"external_department_id":{"type":"string","description":"External department number"},"cost_center":{"type":"string","description":"Cost center"},"department_number":{"type":"string","description":"Department number"},"salary_department_number":{"type":"string","description":"Salary department number"},"opening_hour":{"type":"string","description":"Opening hour"},"closing_hour":{"type":"string","description":"Closing hour"}},"description":"Information about lent out department. If user is not lend out, all values are null."}}},"TaskType":{"type":"object","properties":{"id":{"type":"integer","description":"Internal id of the task type","format":"int64"},"name":{"type":"string","description":"Name of the task"},"color":{"type":"string","description":"Color code"},"disabled":{"type":"integer"},"start_time":{"type":"string","description":"Start time of the task","format":"time","nullable":true},"end_time":{"type":"string","description":"End time of the task","format":"time","nullable":true},"breaks":{"description":"Information about breaks","nullable":true},"productivity_percent":{"type":"integer","description":"Productivity percentage"},"shop_ids":{"type":"array","description":"Array of department/shop ids","items":{"type":"integer"}},"kind":{"type":"string","description":"individual"},"time_registrable":{"type":"boolean","description":"Indicates if time registration is possible or not"},"client_id":{"type":"integer","description":"Id of the client"}}}}}}
```

## The TaskType object

```json
{"openapi":"3.0.0","info":{"title":"SameSystem API V1","version":"1.1.3"},"components":{"schemas":{"TaskType":{"type":"object","properties":{"id":{"type":"integer","description":"Internal id of the task type","format":"int64"},"name":{"type":"string","description":"Name of the task"},"color":{"type":"string","description":"Color code"},"disabled":{"type":"integer"},"start_time":{"type":"string","description":"Start time of the task","format":"time","nullable":true},"end_time":{"type":"string","description":"End time of the task","format":"time","nullable":true},"breaks":{"description":"Information about breaks","nullable":true},"productivity_percent":{"type":"integer","description":"Productivity percentage"},"shop_ids":{"type":"array","description":"Array of department/shop ids","items":{"type":"integer"}},"kind":{"type":"string","description":"individual"},"time_registrable":{"type":"boolean","description":"Indicates if time registration is possible or not"},"client_id":{"type":"integer","description":"Id of the client"}}}}}}
```

## The TimeRegistrationShift object

```json
{"openapi":"3.0.0","info":{"title":"SameSystem API V1","version":"1.1.3"},"components":{"schemas":{"TimeRegistrationShift":{"type":"object","properties":{"id":{"type":"integer","description":"Internal id of the shift"},"manual":{"type":"boolean"},"status":{"type":"string","description":"Status. Can be:\n- as-planned : Time registration matches planned time.\n- unconfirmed : Time registration does not match planned time and this has not been confirmed.\n- confirmed : Time registration does not match planned time, but this has been confirmed.\n- no-show : Employee did not register time.\n- incomplete : Time registration is incomplete.\n- pending : Time registration is pending.\ncanceled : Time registration was cancelled.\nactive : Time registration is active. The employee checked in bit are still not checked out.\ncleared : Time registration was cleared by administrator."},"department":{"type":"object","properties":{"id":{"type":"string","description":"Internal id of the department"},"nr":{"type":"string","description":"Department number"},"salary_department_number":{"type":"string","description":"Salary department number"},"external_department_number":{"type":"string","description":"External department id"}}},"start":{"type":"object","properties":{"planned":{"type":"number","description":"Planned start date.","nullable":true},"raw":{"type":"number","description":"Raw is the actual start time","nullable":true},"registered":{"type":"number","description":"Registered is \"raw\" after stepping rules have been applied eg. snapping to a 5- og 15-minutes interval","nullable":true},"reason":{"type":"string","description":"Reason for early/late registration","nullable":true}},"description":"Start object"},"end":{"type":"object","properties":{"planned":{"type":"number","description":"The planned end time","nullable":true},"raw":{"type":"number","description":"Raw is the actual end time","nullable":true},"registered":{"type":"number","description":"Registered is \"raw\" after stepping rules have been applied eg. snapping to a 5- or 15-minutes interval","nullable":true},"reason":{"type":"string","description":"Reason for early/late registration","nullable":true}},"description":"End object"},"breaks":{"type":"object","properties":{"planned_entries":{"type":"array","description":"Array of planned breaks","items":{"type":"object","properties":{"start_time":{"type":"number","description":"Start time of the planned break"},"end_time":{"type":"number","description":"End time of the planned break"},"duration":{"type":"string","description":"Duration of the planned break"},"paid":{"type":"boolean","description":"Indicates if the planned break are paid or not"}}}},"registered_entries":{"type":"array","description":"Array of registered breaks","items":{"type":"object","properties":{"start_time":{"type":"number","description":"Start timeo of the break"},"end_time":{"type":"number","description":"Edn time of the break"},"duration":{"type":"string","description":"Duration of the break"},"paid":{"type":"boolean","description":"Is the break paid or not"}}}},"reason":{"type":"string","description":"Reason for early/late check-in/out","nullable":true}}},"tasks":{"type":"object","properties":{"registered_entries":{"type":"array","items":{"type":"object","properties":{"start_time":{"type":"number","description":"Task start time"},"end_time":{"type":"integer","description":"Task end time"},"duration":{"type":"string","description":"Task duration"},"task_type":{"$ref":"#/components/schemas/TaskType"}}}}},"description":"Time registration on tasks"},"lent_out_department":{"type":"object","properties":{"department_id":{"type":"integer","description":"Internal department identifier","format":"int64"},"name":{"type":"string","description":"Name of department"},"external_department_id":{"type":"string","description":"External department number"},"cost_center":{"type":"string","description":"Cost center"},"department_number":{"type":"string","description":"Department number"},"salary_department_number":{"type":"string","description":"Salary department number"},"opening_hour":{"type":"string","description":"Opening hour"},"closing_hour":{"type":"string","description":"Closing hour"}},"description":"Information about lent out department. If user is not lend out, all values are null."}}},"TaskType":{"type":"object","properties":{"id":{"type":"integer","description":"Internal id of the task type","format":"int64"},"name":{"type":"string","description":"Name of the task"},"color":{"type":"string","description":"Color code"},"disabled":{"type":"integer"},"start_time":{"type":"string","description":"Start time of the task","format":"time","nullable":true},"end_time":{"type":"string","description":"End time of the task","format":"time","nullable":true},"breaks":{"description":"Information about breaks","nullable":true},"productivity_percent":{"type":"integer","description":"Productivity percentage"},"shop_ids":{"type":"array","description":"Array of department/shop ids","items":{"type":"integer"}},"kind":{"type":"string","description":"individual"},"time_registrable":{"type":"boolean","description":"Indicates if time registration is possible or not"},"client_id":{"type":"integer","description":"Id of the client"}}}}}}
```

## The TimeRegistrationsCreateInput object

```json
{"openapi":"3.0.0","info":{"title":"SameSystem API V1","version":"1.1.3"},"components":{"schemas":{"TimeRegistrationsCreateInput":{"type":"object","properties":{"overwrite":{"type":"boolean","description":"If set to true, import will delete any previous time registrations from dates you are importing.\n\nIf set to false, import will add new non-intersecting and modify intersecting time registrations, anything that was added previously will be kept.","default":false},"time_registrations":{"type":"array","items":{"type":"object","properties":{"user_id":{"type":"integer","description":"Internal id of the employee"},"shop_id":{"type":"integer","description":"Internal id of the department/shop"},"shifts":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","description":"Date of time registration","format":"date"},"start_time":{"type":"string","description":"Start time of time registration"},"end_time":{"pattern":"^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}$","type":"string","description":"End time of time registration"},"breaks":{"type":"array","items":{"type":"object","properties":{"start_time":{"type":"string","description":"Start time of break"},"end_time":{"type":"string","description":"End time of break"},"paid":{"type":"boolean","description":"If set to true, the break is paid"}}}}}}}}}}}}}}}
```

## The TimeRegistrationStartCreateInput object

```json
{"openapi":"3.0.0","info":{"title":"SameSystem API V1","version":"1.1.3"},"components":{"schemas":{"TimeRegistrationStartCreateInput":{"title":"TimeRegistrationStartCreateInput","type":"object","properties":{"user_id":{"type":"integer","description":"Internal id of the employee","format":"int64"},"timestamp":{"type":"string","description":"Timestamp for the clock-in"}}}}}}
```

## The TimeRegistrationStopCreateInput object

```json
{"openapi":"3.0.0","info":{"title":"SameSystem API V1","version":"1.1.3"},"components":{"schemas":{"TimeRegistrationStopCreateInput":{"title":"TimeRegistrationStopCreateInput","type":"object","properties":{"user_id":{"type":"integer","description":"Internal id of the employee","format":"int64"},"timestamp":{"type":"string","description":"Timestamp for the clock-out"}}}}}}
```

## The DailyStatistics object

```json
{"openapi":"3.0.0","info":{"title":"SameSystem API V1","version":"1.1.3"},"components":{"schemas":{"DailyStatistics":{"type":"object","additionalProperties":{"type":"object","properties":{"productive_hours":{"type":"number"},"productive_salary":{"type":"number"}}}}}}}
```

## The Absence object

```json
{"openapi":"3.0.0","info":{"title":"SameSystem API V1","version":"1.1.3"},"components":{"schemas":{"Absence":{"title":"Absence","type":"object","properties":{"user_id":{"type":"integer","description":"Internal id of the employee","format":"int64"},"absence_type_id":{"type":"integer","description":"Internal id of the absence type","format":"int64"},"date":{"type":"string","description":"Absence date","format":"date"},"start_time":{"type":"string","description":"Start time of the absence"},"end_time":{"type":"string","description":"End time of the absence"},"override_confirmed_days":{"type":"boolean","default":false}}}}}}
```

## The AbsenceType object

```json
{"openapi":"3.0.0","info":{"title":"SameSystem API V1","version":"1.1.3"},"components":{"schemas":{"AbsenceType":{"type":"object","properties":{"id":{"type":"integer","description":"Internal id of the absence type","format":"int64"},"name":{"type":"string","description":"Name of the absence"}}}}}}
```

## The SettingsAdvancedMinimumStaffing object

```json
{"openapi":"3.0.0","info":{"title":"SameSystem API V1","version":"1.1.3"},"components":{"schemas":{"SettingsAdvancedMinimumStaffing":{"title":"SettingsAdvancedMinimumStaffing","required":["periods"],"type":"object","properties":{"periods":{"type":"array","items":{"required":["start_date"],"type":"object","properties":{"start_date":{"type":"string","description":"Start date of period.","format":"date"},"end_date":{"type":"string","description":"Period end date. Is Optional. If set, it must not be before start_date. Can be null, omitted or set to \"\" for an open-ended period.","nullable":true},"values":{"type":"array","description":"List of hours requirements. Only listed weekday/hour combinations can carry an advanced value. Each (wday,hour) pair can only appear once per period.","items":{"type":"object","properties":{"wday":{"maximum":7,"minimum":1,"type":"integer","description":"ISO weekday (1=Monday...7=Sunday)"},"hour":{"maximum":23,"minimum":0,"type":"integer","description":"Hour"},"value":{"maximum":999,"minimum":0,"type":"integer","description":"Minimum number of employees."}}}}}}}}}}}}
```

## The SettingsAdvancedEmployeeCapacity object

```json
{"openapi":"3.0.0","info":{"title":"SameSystem API V1","version":"1.1.3"},"components":{"schemas":{"SettingsAdvancedEmployeeCapacity":{"required":["periods"],"type":"object","properties":{"periods":{"type":"array","items":{"required":["target"],"type":"object","properties":{"target":{"type":"string","description":"Can be \"visitors\" or \"customers\". Each target has an independent timeline.","enum":["visitors","customers"],"default":"visitors"},"start_date":{"type":"string","description":"Start date of period.","format":"date"},"end_date":{"type":"string","description":"End date of period. Can be null, omittet or \"\" if open-ended.","format":"date","nullable":true},"values":{"type":"array","description":"Flat list of tier rows. Rows sharing the same (wday,hour) form that hour's tier ladded, so a pair may repeat.","items":{"required":["starting_quantity"],"type":"object","properties":{"wday":{"maximum":7,"minimum":1,"type":"integer","description":"ISO weekday. 1= Monday...7=Sunday"},"hour":{"maximum":23,"minimum":0,"type":"integer","description":"0..23"},"starting_quantity":{"type":"integer","description":"Lower bound of the traffic band. null and \"\" wil count as 0."},"ending_quantity":{"type":"integer","description":"Uppper bound of the band. Must be >= starting_quantity. null, omittet or \"\" = no upper limit. Always returned as null for the top tier.","nullable":true},"value":{"type":"number","description":"Vistors/customers that one employee can serve per hour while the traffic is inside the band. Returned as decimal."}}}}}}}}}}}}
```

## The ScheduleTask object

```json
{"openapi":"3.0.0","info":{"title":"SameSystem API V1","version":"1.1.3"},"components":{"schemas":{"ScheduleTask":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the task in this shift"},"task_type_id":{"type":"integer","description":"ID of the task type."},"name":{"type":"string","description":"Name of the task."},"start_time":{"type":"number","description":"Start time of the task.","format":"float"},"end_time":{"type":"number","description":"End time of the task.","format":"float"},"hours":{"type":"number","description":"Total number of hours for this task.","format":"float"},"productivity_percent":{"type":"number","description":"The productivty percentage of the task.","format":"float"}},"description":"Task in schedule"}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.samesystem.dev/api-v1-reference/models.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
