A new API for Time Attendance has been added with BioStar 2.8.13.
For ‘How to use TA API swagger’, please refer to the link below:
[BioStar 2 TA API] How to use and start BioStar 2 TA API
Other API functions available on TA Swagger (To be covered in other guide documents)
- Time Code related functions
- Shift related functions
- Schedule Template related functions
- Rule relates functions
- Schedule related functions
- Punch log related functions
How to use TA Report
[POST] /report.json API retrieves the appropriate report data in JSON format.
*TA Report has a variety of report types: Daily Report, Individual Report, Leave Report, Except Report, Edit History Report, and more. Part 3 of this article will cover a few of them by providing suggested request bodies for such reports.
Part 1. API Call & Parameters
[POST]: /report.json
[Parameters]
Name | Type | *M/O | Explanation | Value |
Limit | Int | M | # of results to show |
|
Offset | Int | O | Results data offset |
|
Type | String | M | “CUSTOM” or “callCreateReport” | “CUSTOM” |
Start_datetime | Datetime | M | The start DateTime of the report range. | YYYY-MM-DD |
End_datetime | Datetime | O | The end DateTime of the report range. | YYYY-MM-DD |
User_id_list | Array | M | List of the users for the report |
|
Group_id_list | Array | O | List of the group_id for the report |
|
Report_type | String | M | Report type | “Report_Daily” and more |
Report_filter_type | String | O |
|
|
Language | String | M | Language of the report | “en” |
Rebuild_time_card | Boolean | M | Rebuild time or not | “true” |
Columns | Array | M | Column settings | Empty to bring all default columns |
* M – Mandatory, O – Optional
Part 2. Request Body & Response Model
[Example Value/Parameters Model]
{ "limit": 50, "offset": 0, "type": "CUSTOM", "start_datetime": "2021-07-01", "end_datetime": "2021-07-30", "user_id_list": [ "1", "2" ], "group_id_list": [ "1" ], "report_type": "REPORT_DAILY", "report_filter_type": "", "language": "en", "rebuild_time_card": true, "columns": [ {} ] } |
[Response: successful]
{ "message": "Processed Successfully", "message_key": "SUCCESSFUL", "language": "en", "status_code": "SUCCESSFUL", "records": [ { "datetime": "2021/07/15", "userName": "admin", "userId": "1", "userGroupName": "All Users", "shift": "Case 17", "overtimeRuleShift": false, "leave": "-", "inTime": "08:00:00 ( 08:00:00 )", "outTime": "-", "isInTimeNextDay": false, "isOutTimeNextDay": false, "exception": "Missing Punch Out, Missing Break Start, Missing Break End + 1, Missing Meal Start, Missing Meal End + 1", "exceptionForView": [ { "name": "Missing Punch Out", "code": "6" }, { "name": "Missing Break Start", "code": "9" }, { "name": "Missing Break End", "code": "10" }, { "name": "Missing Break End", "code": "10" }, { "name": "Missing Meal Start", "code": "7" }, { "name": "Missing Meal End", "code": "8" }, { "name": "Missing Meal End", "code": "8" } ], "normalRegular": "2:00:00", "normalOvertime": "0:00:00", "punchBreak": "3:00:00", "overBreak": "0:00:00", "mealTime": "3:00:00", "totalWorkTime": "5:00:00", "regularByTimeRate": "2:00:00", "overtimeByTimeRate": "0:00:00" }, { "datetime": "2021/07/15", "userName": "Sharon", "userId": "2", "userGroupName": "All Users", "shift": "Case 17", "overtimeRuleShift": false, "leave": "-", "inTime": "-", "outTime": "-", "isInTimeNextDay": false, "isOutTimeNextDay": false, "exception": "Absence", "exceptionForView": [ { "name": "Absence", "code": "2" } ], "normalRegular": "0:00:00", "normalOvertime": "0:00:00", "punchBreak": "0:00:00", "overBreak": "0:00:00", "mealTime": "0:00:00", "totalWorkTime": "0:00:00", "regularByTimeRate": "0:00:00", "overtimeByTimeRate": "0:00:00" } ], "total": 2 } |
[Response: Fail]
{ "message": "rebuild_time_card is required.", "message_key": "REQUIRED_FIELD", "language": "en", "status_code": "REQUIRED_FIELD" } |
Part 3. Suggested Request Bodies for different Report Types
*By changing the “report_type” parameter, you can call different types of reports from BioStar 2.
3-1. Individual Report
[Request Body]
{ "limit": 50, "offset": 0, "type": "callCreateReport", "start_datetime": "2020-12-07", "end_datetime": "2020-12-07", "report_type": "REPORT_INDIVIDUAL", "report_filter_type": "INDIVIDUAL_FILTER_SUMMARY", "user_id_list": [ "1", "2", "3" ], "language": "en", "rebuild_time_card": true, "columns": [ { "name": "report.userName", "field": "userName", "displayName": "Name", "leaveType": false }, { "name": "report.userId", "field": "userId", "displayName": "UserID", "leaveType": false }, { "name": "report.department", "field": "userGroupName", "displayName": "Department", "leaveType": false }, { "name": "timeCard.regularHours", "field": "normalRegular", "displayName": "Regularhours", "leaveType": false }, { "name": "timeCard.overtimeHours", "field": "normalOvertime", "displayName": "Overtimehours", "leaveType": false }, { "name": "report.totalWorkTime", "field": "totalWorkTime", "displayName": "TotalWorkHours", "leaveType": false }, { "name": "reportHeader.absence", "field": "absence", "displayName": "NoofAbsence", "leaveType": false }, { "name": "reportHeader.insufficientWorkTime", "field": "insufficientWorkTime", "displayName": "NoofInsufficientWorkTime", "leaveType": false }, { "name": "reportHeader.lateIn", "field": "lateIn", "displayName": "NoofLateIn", "leaveType": false }, { "name": "reportHeader.earlyOut", "field": "earlyOut", "displayName": "NoofEarlyOut", "leaveType": false }, { "name": "reportHeader.missingEventType", "field": "missingEventType", "displayName": "NoofMissingEventType", "leaveType": false }, { "name": "reportHeader.missingPunchIn", "field": "missingPunchIn", "displayName": "NoofMissingPunchIn", "leaveType": false }, { "name": "reportHeader.missingPunchOut", "field": "missingPunchOut", "displayName": "NoofMissingPunchOut", "leaveType": false } ], "sort_columns": [], "userCustomFields": {} } |
[Response: successful]
{ "message": "Processed Successfully", "message_key": "SUCCESSFUL", "language": "en", "status_code": "SUCCESSFUL", "records": [ { "hidden_user_id": "1", "userName": "admin (1 : All Users ) ", "$$treeLevel": 0, "normalRegular": "0:00:00", "normalOvertime": "0:00:00", "totalWorkTime": "0:00:00", "punchBreak": "0:00:00", "overBreak": "0:00:00", "mealTime": "0:00:00", "regularByTimeRate": "0:00:00", "overtimeByTimeRate": "0:00:00" }, { "hidden_user_id": "2", "userName": "Sharon (2 : All Users ) ", "$$treeLevel": 0, "normalRegular": "0:00:00", "normalOvertime": "0:00:00", "totalWorkTime": "0:00:00", "punchBreak": "0:00:00", "overBreak": "0:00:00", "mealTime": "0:00:00", "regularByTimeRate": "0:00:00", "overtimeByTimeRate": "0:00:00" } ], "total": 2 } |
3-2. Leave Report
[Request Body]
{ "limit": 50, "offset": 0, "type": "callCreateReport", "start_datetime": "2020-12-07", "end_datetime": "2020-12-07", "report_type": "REPORT_LEAVE", "user_id_list": [ "1" ], "sort_columns": [], "filter": [], "columns": [ { "name": "report.date", "field": "datetime", "displayName": "Date" }, { "name": "report.userName", "field": "userName", "displayName": "Name" }, { "name": "report.userId", "field": "userId", "displayName": "User ID" }, { "name": "report.department", "field": "userGroupName", "displayName": "Department" }, { "name": "report.shift", "field": "shift", "displayName": "Shift" }, { "name": "report.leave", "field": "leave", "displayName": "Leave" }, { "name": "reportHeader.leavePeriod", "field": "leavePeriod", "displayName": "Leave Period" } ], "rebuild_time_card": true, "query": { "language": "en" } } |
3-3. Exception Report
[Request Body]
{ "limit": 50, "offset": 0, "type": "callCreateReport", "report_type": "REPORT_EXCEPTION", "start_datetime": "2020-12-07", "end_datetime": "2020-12-07", "user_id_list": [ "1", "2", "3" ], "sort_columns": [], "filter": [], "columns": [ { "name": "report.date", "field": "datetime" }, { "name": "report.userName", "field": "userName" }, { "name": "report.userId", "field": "userId" }, { "name": "report.department", "field": "userGroupName" }, { "name": "report.shift", "field": "shift" }, { "name": "report.leave", "field": "leave" }, { "name": "timeCard.in", "field": "inTime" }, { "name": "timeCard.out", "field": "outTime" }, { "name": "report.exception", "field": "exception" }, { "name": "timeCard.regularHours", "field": "normalRegular" }, { "name": "timeCard.overtimeHours", "field": "normalOvertime" }, { "name": "report.totalWorkTime", "field": "totalWorkTime" } ], "rebuild_time_card": true, "query": { "language": "en" } } |
3-4. Edit History Report
[Request Body]
{ "limit": 50, "offset": 0, "type": "callCreateReport", "report_type": "REPORT_EDIT_HISTORY", "start_datetime": "2020-12-07", "end_datetime": "2020-12-07", "user_id_list": [ "1", "2", "3" ], "sort_columns": [], "filter": [], "columns": [ { "name": "report.date", "field": "datetime" }, { "name": "report.userName", "field": "userName" }, { "name": "report.userId", "field": "userId" }, { "name": "report.department", "field": "userGroupName" }, { "name": "report.shift", "field": "shift" }, { "name": "report.leave", "field": "leave" }, { "name": "timeCard.in", "field": "inTime" }, { "name": "timeCard.out", "field": "outTime" }, { "name": "report.exception", "field": "exception" }, { "name": "timeCard.regularHours", "field": "normalRegular" }, { "name": "timeCard.overtimeHours", "field": "normalOvertime" }, { "name": "report.totalWorkTime", "field": "totalWorkTime" } ], "rebuild_time_card": true, "query": { "language": "en" } } |
Part 4. Report.json via Postman
[Request Example: Headers]
*You must log in to use [POST] /report.json API.
*Unlike be-session-id for AC New Local API, bs-ta-session-id has to be sent in the Cookie. Bs-ta-session-id is sent in the Cookie automatically once you log in via TA log-in API.
[Request Example]
[Response Example: body]