Introduction
Timetaag API provides secure and flexible endpoints for integrating time and attendance management into your applications. It supports real-time data syncing, employee authentication, shift scheduling, leave management, biometric device integration, and detailed reporting.
This documentation aims to provide all the information you need to work with our API.
We're Returning Our Response With Below Codes. Please Refer Once :-
- "400" => You've Made an Bad Request.
- "200" => Data Retrieved/Submitted Successfully.
- "304" => You've Got Cached Response Because of Duplicate Idempotency Key.
- "404" => Page Not Found.
- "500" => Server Error.
Authenticating requests
To authenticate requests, include an Authorization
header with the value "Bearer {YOUR_AUTH_KEY}"
.
All authenticated endpoints are marked with a requires authentication
badge in the documentation below.
You can retrieve your token by visiting your dashboard and clicking Generate API token.
Auth
API for managing Login
Login
This endpoint is used to login a user to the system.
Example request:
curl --request POST \
"https://app.timetaag.com/api/v1/AdminLogin" \
--header "Idempotency-Key: base64_encode(\'body\')" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"email\": \"user@example.com\",
\"password\": \"YourPassword\"
}"
const url = new URL(
"https://app.timetaag.com/api/v1/AdminLogin"
);
const headers = {
"Idempotency-Key": "base64_encode('body')",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"email": "user@example.com",
"password": "YourPassword"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (200, Successful Login):
{
"status": true,
"code": 200,
"data": {
"company_global_id": "10000",
"company_name": "Demo Company",
"super_admin_email": "user@example.com"
"subscription_device": 2,
"subscription_users": 100,
"subscription_date_end": "2024-09-12 00:00:00"
},
"current_license_status": {
"text": "Active",
"class": "text-success"
}
},
"message": "Logged In Successfully.",
}
Example response (400, Failed Login):
{
"status": false,
"code": 400,
"message": "Invalid email or password!"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Attendance Rule
APIs for managing Attendance Rule
Get Attendance Rule
requires authentication
This endpoint is used to fetch all Attendance available in the database.
Example request:
curl --request GET \
--get "https://app.timetaag.com/api/v1/GetAttendance" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Accept: application/json"
const url = new URL(
"https://app.timetaag.com/api/v1/GetAttendance"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200, Get all Attendance Rule):
{
"status": true,
"code": 200,
"message": "Attendance Rule Retrieved Successfully.",
"data": [
{
"id": 1,
"AttSettingName": "Default",
"AttSettingCode": "Default",
"WeeklyOff1Day": "Friday",
"WeeklyOff1Occurence": "1,2,3,4,5",
"WeeklyOff2Day": "none",
"WeeklyOff2Occurence": "",
"HalfDayForLessDurationMin": 7,
"AbsentForLessDurationMin": 6,
"OTFormula": "shift_hour",
"MinimumOT": 10,
"MaximumOT": 600,
"GraceForLateComing": 0,
"GraceForEarlying": 0,
"MarkHalfDayWhenLateByMins": 0,
"MarkHalfDayWhenEarlyByMins": 0,
"IsConsiderFirstandLastPunch": null,
"IsValidateEarlyPunch": null,
"IsValidateLatePunch": null,
"IsDeductBreakDuration": null,
"SetSinglePunchStatusAs": "In Punch + 1 min",
"IsWOPHOPInOT": 1,
"IsAutoCompOff": null,
"HalfDayParForLessDurationMin": 7,
"AbsentParForLessDurationMin": 6,
"IsValPreSufAbsentOnWOHO": null,
"IsValSuffixAbsentOnWOHO": null,
"IsValPrefixAbsentOnWOHO": null,
"IsValLeaveForPrefixSuffix": null,
"HalfDayCoffForLessDurationMin": 0,
"NoCoffForLessDurationMin": 0,
"HalfDayCoffForLessOT": 0,
"NoCoffForLessOT": 0,
"ApplicableLeaves": "1",
"IsConsiderHAbsForContLate": null,
"MarkOrDeductDayLate": 0.5,
"WhenLateBy": 2,
"IsDeductLeaveForConLate": null,
"DeductLeaveType1Late": null,
"DeductLeaveType2Late": null,
"DeductLeaveType3Late": null,
"IsSameForEveryLate": null,
"IsConsiderHAbsConLateByMin": null,
"MarkOrDeductDayLateByMin": 0.5,
"WhenLateByMin": 0,
"IsDeductLeaveForConLateByMin": null,
"DeductLeaveType1LateByMin": null,
"DeductLeaveType2LateByMin": null,
"DeductLeaveType3LateByMin": null,
"IsConsiderHAbsForContEarly": null,
"MarkOrDeductDayEarly": 0.5,
"WhenEarlyBy": 2,
"IsDeductLeaveForConEarly": null,
"DeductLeaveType1Early": null,
"DeductLeaveType2Early": null,
"DeductLeaveType3Early": null,
"IsSameForEveryEarly": null,
"IsConsiderHAbsForContEarlyByMin": null,
"MarkOrDeductDayEarlyByMin": 0.5,
"WhenEarlyByMin": 0,
"IsDeductLeaveForConEarlyByMin": null,
"DeductLeaveType1EarlyByMin": null,
"DeductLeaveType2EarlyByMin": null,
"DeductLeaveType3EarlyByMin": null,
"ExcludedStatusForCon": "",
"ProductionBiometricIds": "",
"FlexiShiftId": 4,
"IsMarkLateEarlyAsPerMnth": null,
"DefaultOverTime": 1,
"DefaultMinWOHOOT": 0,
"IsNeglectLastInPunch": null,
"IsCheckTillLastOut": 1,
"IsOTNotApplicableOnOutStation": null,
"IsOTNotApplicableOnFlexiAndOpenShift": null,
"IsCheckForB24HrShift": 0,
"IsRoundOffOT": null,
"IsRoundDownOT": null,
"IsCheckMissPunchStatus": 1,
"WorkDurationFormula": 1,
"created_at": "2022-11-17T13:00:44.000000Z",
"updated_at": "2024-02-29T07:49:57.000000Z"
}
],
"meta": {
"current_page": 1,
"from": 1,
"last_page": 3,
"links": {
"first": "https://app.timetaag.com/api/v1/GetAttendance?page=1",
"last": "https://app.timetaag.com/api/v1/GetAttendance?page=3",
"prev": null,
"next": "https://app.timetaag.com/api/v1/GetAttendance?page=2"
},
"path": "https://app.timetaag.com/api/v1/GetAttendance",
"per_page": 10,
"to": 10,
"total": 23
},
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Single Attendance Rule
requires authentication
This endpoint is used to get single Attendance Rule from the database.
Example request:
curl --request GET \
--get "https://app.timetaag.com/api/v1/GetAttendance/3" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Accept: application/json"
const url = new URL(
"https://app.timetaag.com/api/v1/GetAttendance/3"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200, Get a Single Attendance Rule):
{
"status": true,
"code": 200,
"data": {
"AttSettingName": "Name",
"AttSettingCode": "Code",
"SetSinglePunchStatusAs": "1/2 Present",
"ApplicableLeaves": "1",
"WorkDurationFormula": "1",
"GraceForLateComing": "2",
"GraceForEarlying": "4",
"MarkHalfDayWhenLateByMins": "1",
"MarkHalfDayWhenEarlyByMins": "2",
"HalfDayForLessDurationMin": "1",
"AbsentForLessDurationMin": "4",
"HalfDayParForLessDurationMin": "1",
"AbsentParForLessDurationMin": "4",
"ProductionBiometricIds": "3",
"FlexiShiftId": "4",
"OTFormula": "shift_hour",
"DefaultOverTime": "2",
"MinimumOT": "2",
"MaximumOT": "4",
"DefaultMinWOHOOT": "4",
"IsOTNotApplicableOnOutStation": "0",
"IsOTNotApplicableOnFlexiAndOpenShift": "1",
"IsRoundOffOT": "1",
"IsRoundDownOT": "0",
"WeeklyOff1Day": "Sunday",
"WeeklyOff1Occurence": "1,3",
"WeeklyOff2Day": "Friday",
"WeeklyOff2Occurence": "4",
"IsValidateEarlyPunch": "1",
"IsValidateLatePunch": "0",
"IsDeductBreakDuration": "1",
"IsConsiderFirstandLastPunch": "1",
"IsWOPHOPInOT": "1",
"IsNeglectLastInPunch": "0",
"IsCheckTillLastOut": "0",
"IsCheckMissPunchStatus": "1",
"IsValPrefixAbsentOnWOHO": "1",
"IsValSuffixAbsentOnWOHO": "0",
"IsValPreSufAbsentOnWOHO": "0",
"IsValLeaveForPrefixSuffix": "0",
"IsAutoCompOff": "1",
"HalfDayCoffForLessDurationMin": "5",
"NoCoffForLessDurationMin": "3",
"HalfDayCoffForLessOT": "0",
"NoCoffForLessOT": "1",
"IsMarkLateEarlyAsPerMnth": "1",
"ExcludedStatusForCon": "2",
"IsConsiderHAbsForContLate": "1",
"MarkOrDeductDayLate": "0.5",
"WhenLateBy": "2",
"IsSameForEveryLate": "1",
"IsDeductLeaveForConLate": "1",
"DeductLeaveType1Late": "1",
"DeductLeaveType2Late": "2",
"DeductLeaveType3Late": "3",
"IsConsiderHAbsForContEarly": "0",
"MarkOrDeductDayEarly": "1",
"WhenEarlyBy": "2",
"IsSameForEveryEarly": "1",
"IsDeductLeaveForConEarly": "0",
"DeductLeaveType1Early": "0",
"DeductLeaveType2Early": "2",
"DeductLeaveType3Early": "4",
"IsConsiderHAbsConLateByMin": "1",
"MarkOrDeductDayLateByMin": "0.5",
"WhenLateByMin": "1",
"IsDeductLeaveForConLateByMin": "0",
"DeductLeaveType1LateByMin": null,
"DeductLeaveType2LateByMin": null,
"DeductLeaveType3LateByMin": null,
"IsConsiderHAbsForContEarlyByMin": "1",
"MarkOrDeductDayEarlyByMin": "1",
"WhenEarlyByMin": "2",
"IsDeductLeaveForConEarlyByMin": "1",
"DeductLeaveType1EarlyByMin": "1",
"DeductLeaveType2EarlyByMin": "2",
"DeductLeaveType3EarlyByMin": null,
"updated_at": "2024-03-05T07:37:55.000000Z",
"created_at": "2024-03-05T07:37:55.000000Z",
"id": 5
},
"message": "Attendance Rule Retrieved Successfully."
}
Example response (400, Attendance Rule Not Found):
{
"status": false,
"code": 400,
"message": "Attendance Rule Not Found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete Attendance Rule
requires authentication
This endpoint is used to delete Attendance Rule from the database.
Example request:
curl --request DELETE \
"https://app.timetaag.com/api/v1/DeleteAttendance/3" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Accept: application/json"
const url = new URL(
"https://app.timetaag.com/api/v1/DeleteAttendance/3"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());
Example response (200, Delete a Attendance Rule):
{
"status": true,
"code": 200,
"message": "Attendance Rule Deleted Successfully."
}
Example response (400, Attendance Rule Not Found):
{
"status": false,
"code": 400,
"message": "Attendance Rule Not Found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Add Attendance Rule
requires authentication
This endpoint is used to add Attendance Rule to the database.
Example request:
curl --request POST \
"https://app.timetaag.com/api/v1/AddAttendance" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Idempotency-Key: base64_encode(\'body\')" \
--header "Accept: application/json" \
--data "{
\"AttSettingName\": \"Test\",
\"AttSettingCode\": \"test\",
\"single_punch_status\": \"1\\/2 Present\",
\"applicable_leaves\": \"1,2\",
\"work_duration_formula\": 1,
\"grace_forlatecoming\": 1,
\"grace_forearlygoing\": 1,
\"mark_halfdaywhenlatebymins\": 1,
\"mark_halfdaywhenearlybymins\": 1,
\"halfday_forlessdurationmin\": 1,
\"absent_forlessdurationmin\": 1,
\"production_biometrics\": \"1,2\",
\"flexi_shift\": 1,
\"ot_formula\": \"shift_hour\",
\"default_ot\": 1,
\"min_ot\": 1,
\"max_ot\": 1,
\"min_woho_ot\": 1,
\"no_ot_on_out_station\": 1,
\"no_ot_on_flexi_open_shift\": 1,
\"round_off_ot\": 1,
\"round_down_ot\": 1,
\"weekly_off1\": \"Sunday\",
\"weekoff1_day\": \"1,3\",
\"weekly_off2\": \"Monday\",
\"weekoff2_day\": \"1,4\",
\"validate_early_punch\": 1,
\"validate_late_punch\": 0,
\"deduct_break_hour\": 1,
\"first_last_punch\": 1,
\"wop_hop\": 1,
\"neglect_last_punch\": 1,
\"check_till_last\": 1,
\"check_miss_punch\": 1,
\"prefix_absent_on_woho\": 1,
\"suffix_absent_on_woho\": 1,
\"ps_absent_on_woho\": 1,
\"ps_leave_on_woho\": 1,
\"auto_compoff\": 1,
\"coff_less\": 1,
\"no_coff_less\": 1,
\"coff_less_ot\": 1,
\"no_coff_less_ot\": 1,
\"mark_late_early\": 1,
\"exclusive_status\": \"1,2\",
\"late_mark_attendance\": 1,
\"late_mark_deduct\": 0,
\"late_for\": 1,
\"late_deduct_leave\": 1,
\"late_leave1\": 1,
\"late_leave2\": 1,
\"late_leave3\": 1,
\"early_mark_attendance\": 1,
\"early_mark_deduct\": 1,
\"early_by\": 1,
\"every_early\": 1,
\"early_deduct_leave\": 1,
\"early_leave1\": 1,
\"early_leave2\": 1,
\"early_leave3\": 1,
\"late_mins_mark_attendance\": 1,
\"late_mins_mark_deduct\": 1,
\"late_mins_late_for\": 1,
\"late_mins_deduct_leave\": 1,
\"late_mins_leave1\": 1,
\"late_mins_leave2\": 1,
\"late_mins_leave3\": 1,
\"early_mins_mark_attendance\": 1,
\"early_mins_mark_deduct\": 1,
\"early_mins_earlyby\": 1,
\"early_mins_deduct_leave\": 1,
\"early_mins_leave1\": 1,
\"early_mins_leave2\": 1,
\"early_mins_leave3\": 1
}"
const url = new URL(
"https://app.timetaag.com/api/v1/AddAttendance"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Idempotency-Key": "base64_encode('body')",
"Accept": "application/json",
};
let body = {
"AttSettingName": "Test",
"AttSettingCode": "test",
"single_punch_status": "1\/2 Present",
"applicable_leaves": "1,2",
"work_duration_formula": 1,
"grace_forlatecoming": 1,
"grace_forearlygoing": 1,
"mark_halfdaywhenlatebymins": 1,
"mark_halfdaywhenearlybymins": 1,
"halfday_forlessdurationmin": 1,
"absent_forlessdurationmin": 1,
"production_biometrics": "1,2",
"flexi_shift": 1,
"ot_formula": "shift_hour",
"default_ot": 1,
"min_ot": 1,
"max_ot": 1,
"min_woho_ot": 1,
"no_ot_on_out_station": 1,
"no_ot_on_flexi_open_shift": 1,
"round_off_ot": 1,
"round_down_ot": 1,
"weekly_off1": "Sunday",
"weekoff1_day": "1,3",
"weekly_off2": "Monday",
"weekoff2_day": "1,4",
"validate_early_punch": 1,
"validate_late_punch": 0,
"deduct_break_hour": 1,
"first_last_punch": 1,
"wop_hop": 1,
"neglect_last_punch": 1,
"check_till_last": 1,
"check_miss_punch": 1,
"prefix_absent_on_woho": 1,
"suffix_absent_on_woho": 1,
"ps_absent_on_woho": 1,
"ps_leave_on_woho": 1,
"auto_compoff": 1,
"coff_less": 1,
"no_coff_less": 1,
"coff_less_ot": 1,
"no_coff_less_ot": 1,
"mark_late_early": 1,
"exclusive_status": "1,2",
"late_mark_attendance": 1,
"late_mark_deduct": 0,
"late_for": 1,
"late_deduct_leave": 1,
"late_leave1": 1,
"late_leave2": 1,
"late_leave3": 1,
"early_mark_attendance": 1,
"early_mark_deduct": 1,
"early_by": 1,
"every_early": 1,
"early_deduct_leave": 1,
"early_leave1": 1,
"early_leave2": 1,
"early_leave3": 1,
"late_mins_mark_attendance": 1,
"late_mins_mark_deduct": 1,
"late_mins_late_for": 1,
"late_mins_deduct_leave": 1,
"late_mins_leave1": 1,
"late_mins_leave2": 1,
"late_mins_leave3": 1,
"early_mins_mark_attendance": 1,
"early_mins_mark_deduct": 1,
"early_mins_earlyby": 1,
"early_mins_deduct_leave": 1,
"early_mins_leave1": 1,
"early_mins_leave2": 1,
"early_mins_leave3": 1
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (200, Add a Attendance):
{
"status": true,
"code": 200,
"data": {
"AttSettingName": "Name",
"AttSettingCode": "Code",
"SetSinglePunchStatusAs": "1/2 Present",
"ApplicableLeaves": "1",
"WorkDurationFormula": "1",
"GraceForLateComing": "2",
"GraceForEarlying": "4",
"MarkHalfDayWhenLateByMins": "1",
"MarkHalfDayWhenEarlyByMins": "2",
"HalfDayForLessDurationMin": "1",
"AbsentForLessDurationMin": "4",
"HalfDayParForLessDurationMin": "1",
"AbsentParForLessDurationMin": "4",
"ProductionBiometricIds": "3",
"FlexiShiftId": "4",
"OTFormula": "shift_hour",
"DefaultOverTime": "2",
"MinimumOT": "2",
"MaximumOT": "4",
"DefaultMinWOHOOT": "4",
"IsOTNotApplicableOnOutStation": "0",
"IsOTNotApplicableOnFlexiAndOpenShift": "1",
"IsRoundOffOT": "1",
"IsRoundDownOT": "0",
"WeeklyOff1Day": "Sunday",
"WeeklyOff1Occurence": "1,3",
"WeeklyOff2Day": "Friday",
"WeeklyOff2Occurence": "4",
"IsValidateEarlyPunch": "1",
"IsValidateLatePunch": "0",
"IsDeductBreakDuration": "1",
"IsConsiderFirstandLastPunch": "1",
"IsWOPHOPInOT": "1",
"IsNeglectLastInPunch": "0",
"IsCheckTillLastOut": "0",
"IsCheckMissPunchStatus": "1",
"IsValPrefixAbsentOnWOHO": "1",
"IsValSuffixAbsentOnWOHO": "0",
"IsValPreSufAbsentOnWOHO": "0",
"IsValLeaveForPrefixSuffix": "0",
"IsAutoCompOff": "1",
"HalfDayCoffForLessDurationMin": "5",
"NoCoffForLessDurationMin": "3",
"HalfDayCoffForLessOT": "0",
"NoCoffForLessOT": "1",
"IsMarkLateEarlyAsPerMnth": "1",
"ExcludedStatusForCon": "2",
"IsConsiderHAbsForContLate": "1",
"MarkOrDeductDayLate": "0.5",
"WhenLateBy": "2",
"IsSameForEveryLate": "1",
"IsDeductLeaveForConLate": "1",
"DeductLeaveType1Late": "1",
"DeductLeaveType2Late": "2",
"DeductLeaveType3Late": "3",
"IsConsiderHAbsForContEarly": "0",
"MarkOrDeductDayEarly": "1",
"WhenEarlyBy": "2",
"IsSameForEveryEarly": "1",
"IsDeductLeaveForConEarly": "0",
"DeductLeaveType1Early": "0",
"DeductLeaveType2Early": "2",
"DeductLeaveType3Early": "4",
"IsConsiderHAbsConLateByMin": "1",
"MarkOrDeductDayLateByMin": "0.5",
"WhenLateByMin": "1",
"IsDeductLeaveForConLateByMin": "0",
"DeductLeaveType1LateByMin": null,
"DeductLeaveType2LateByMin": null,
"DeductLeaveType3LateByMin": null,
"IsConsiderHAbsForContEarlyByMin": "1",
"MarkOrDeductDayEarlyByMin": "1",
"WhenEarlyByMin": "2",
"IsDeductLeaveForConEarlyByMin": "1",
"DeductLeaveType1EarlyByMin": "1",
"DeductLeaveType2EarlyByMin": "2",
"DeductLeaveType3EarlyByMin": null,
"updated_at": "2024-03-05T07:37:55.000000Z",
"created_at": "2024-03-05T07:37:55.000000Z",
"id": 5
},
"message": "Attendance Rule Created Successfully."
}
Example response (400, Validation Error):
{
"status": false,
"code": 400,
"message": "Validation Error.",
"data": {
"attendance_name": [
"validation.required"
],
"attendance_code": [
"validation.required"
],
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update Attendance Rule
requires authentication
This endpoint is used to update Attendance Rule to the database.
Example request:
curl --request PATCH \
"https://app.timetaag.com/api/v1/UpdateAttendance/10" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Idempotency-Key: base64_encode(\'body\')" \
--header "Accept: application/json" \
--data "{
\"attendance_name\": \"id\",
\"attendance_code\": \"ut\",
\"AttSettingName\": \"Test\",
\"AttSettingCode\": \"test\",
\"single_punch_status\": \"1\\/2 Present\",
\"applicable_leaves\": \"1,2\",
\"work_duration_formula\": 1,
\"grace_forlatecoming\": 1,
\"grace_forearlygoing\": 1,
\"mark_halfdaywhenlatebymins\": 1,
\"mark_halfdaywhenearlybymins\": 1,
\"halfday_forlessdurationmin\": 1,
\"absent_forlessdurationmin\": 1,
\"production_biometrics\": \"1,2\",
\"flexi_shift\": 1,
\"ot_formula\": \"shift_hour\",
\"default_ot\": 1,
\"min_ot\": 1,
\"max_ot\": 1,
\"min_woho_ot\": 1,
\"no_ot_on_out_station\": 1,
\"no_ot_on_flexi_open_shift\": 1,
\"round_off_ot\": 1,
\"round_down_ot\": 1,
\"weekly_off1\": \"Sunday\",
\"weekoff1_day\": \"1,3\",
\"weekly_off2\": \"Monday\",
\"weekoff2_day\": \"1,4\",
\"validate_early_punch\": 1,
\"validate_late_punch\": 0,
\"deduct_break_hour\": 1,
\"first_last_punch\": 1,
\"wop_hop\": 1,
\"neglect_last_punch\": 1,
\"check_till_last\": 1,
\"check_miss_punch\": 1,
\"prefix_absent_on_woho\": 1,
\"suffix_absent_on_woho\": 1,
\"ps_absent_on_woho\": 1,
\"ps_leave_on_woho\": 1,
\"auto_compoff\": 1,
\"coff_less\": 1,
\"no_coff_less\": 1,
\"coff_less_ot\": 1,
\"no_coff_less_ot\": 1,
\"mark_late_early\": 1,
\"exclusive_status\": \"1,2\",
\"late_mark_attendance\": 1,
\"late_mark_deduct\": 0,
\"late_for\": 1,
\"late_deduct_leave\": 1,
\"late_leave1\": 1,
\"late_leave2\": 1,
\"late_leave3\": 1,
\"early_mark_attendance\": 1,
\"early_mark_deduct\": 1,
\"early_by\": 1,
\"every_early\": 1,
\"early_deduct_leave\": 1,
\"early_leave1\": 1,
\"early_leave2\": 1,
\"early_leave3\": 1,
\"late_mins_mark_attendance\": 1,
\"late_mins_mark_deduct\": 1,
\"late_mins_late_for\": 1,
\"late_mins_deduct_leave\": 1,
\"late_mins_leave1\": 1,
\"late_mins_leave2\": 1,
\"late_mins_leave3\": 1,
\"early_mins_mark_attendance\": 1,
\"early_mins_mark_deduct\": 1,
\"early_mins_earlyby\": 1,
\"early_mins_deduct_leave\": 1,
\"early_mins_leave1\": 1,
\"early_mins_leave2\": 1,
\"early_mins_leave3\": 1
}"
const url = new URL(
"https://app.timetaag.com/api/v1/UpdateAttendance/10"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Idempotency-Key": "base64_encode('body')",
"Accept": "application/json",
};
let body = {
"attendance_name": "id",
"attendance_code": "ut",
"AttSettingName": "Test",
"AttSettingCode": "test",
"single_punch_status": "1\/2 Present",
"applicable_leaves": "1,2",
"work_duration_formula": 1,
"grace_forlatecoming": 1,
"grace_forearlygoing": 1,
"mark_halfdaywhenlatebymins": 1,
"mark_halfdaywhenearlybymins": 1,
"halfday_forlessdurationmin": 1,
"absent_forlessdurationmin": 1,
"production_biometrics": "1,2",
"flexi_shift": 1,
"ot_formula": "shift_hour",
"default_ot": 1,
"min_ot": 1,
"max_ot": 1,
"min_woho_ot": 1,
"no_ot_on_out_station": 1,
"no_ot_on_flexi_open_shift": 1,
"round_off_ot": 1,
"round_down_ot": 1,
"weekly_off1": "Sunday",
"weekoff1_day": "1,3",
"weekly_off2": "Monday",
"weekoff2_day": "1,4",
"validate_early_punch": 1,
"validate_late_punch": 0,
"deduct_break_hour": 1,
"first_last_punch": 1,
"wop_hop": 1,
"neglect_last_punch": 1,
"check_till_last": 1,
"check_miss_punch": 1,
"prefix_absent_on_woho": 1,
"suffix_absent_on_woho": 1,
"ps_absent_on_woho": 1,
"ps_leave_on_woho": 1,
"auto_compoff": 1,
"coff_less": 1,
"no_coff_less": 1,
"coff_less_ot": 1,
"no_coff_less_ot": 1,
"mark_late_early": 1,
"exclusive_status": "1,2",
"late_mark_attendance": 1,
"late_mark_deduct": 0,
"late_for": 1,
"late_deduct_leave": 1,
"late_leave1": 1,
"late_leave2": 1,
"late_leave3": 1,
"early_mark_attendance": 1,
"early_mark_deduct": 1,
"early_by": 1,
"every_early": 1,
"early_deduct_leave": 1,
"early_leave1": 1,
"early_leave2": 1,
"early_leave3": 1,
"late_mins_mark_attendance": 1,
"late_mins_mark_deduct": 1,
"late_mins_late_for": 1,
"late_mins_deduct_leave": 1,
"late_mins_leave1": 1,
"late_mins_leave2": 1,
"late_mins_leave3": 1,
"early_mins_mark_attendance": 1,
"early_mins_mark_deduct": 1,
"early_mins_earlyby": 1,
"early_mins_deduct_leave": 1,
"early_mins_leave1": 1,
"early_mins_leave2": 1,
"early_mins_leave3": 1
};
fetch(url, {
method: "PATCH",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (200, Update a Attendance Rule):
{
"status": true,
"code": 200,
"data": {
"AttSettingName": "Name",
"AttSettingCode": "Code",
"SetSinglePunchStatusAs": "1/2 Present",
"ApplicableLeaves": "1",
"WorkDurationFormula": "1",
"GraceForLateComing": "2",
"GraceForEarlying": "4",
"MarkHalfDayWhenLateByMins": "1",
"MarkHalfDayWhenEarlyByMins": "2",
"HalfDayForLessDurationMin": "1",
"AbsentForLessDurationMin": "4",
"HalfDayParForLessDurationMin": "1",
"AbsentParForLessDurationMin": "4",
"ProductionBiometricIds": "3",
"FlexiShiftId": "4",
"OTFormula": "shift_hour",
"DefaultOverTime": "2",
"MinimumOT": "2",
"MaximumOT": "4",
"DefaultMinWOHOOT": "4",
"IsOTNotApplicableOnOutStation": "0",
"IsOTNotApplicableOnFlexiAndOpenShift": "1",
"IsRoundOffOT": "1",
"IsRoundDownOT": "0",
"WeeklyOff1Day": "Sunday",
"WeeklyOff1Occurence": "1,3",
"WeeklyOff2Day": "Friday",
"WeeklyOff2Occurence": "4",
"IsValidateEarlyPunch": "1",
"IsValidateLatePunch": "0",
"IsDeductBreakDuration": "1",
"IsConsiderFirstandLastPunch": "1",
"IsWOPHOPInOT": "1",
"IsNeglectLastInPunch": "0",
"IsCheckTillLastOut": "0",
"IsCheckMissPunchStatus": "1",
"IsValPrefixAbsentOnWOHO": "1",
"IsValSuffixAbsentOnWOHO": "0",
"IsValPreSufAbsentOnWOHO": "0",
"IsValLeaveForPrefixSuffix": "0",
"IsAutoCompOff": "1",
"HalfDayCoffForLessDurationMin": "5",
"NoCoffForLessDurationMin": "3",
"HalfDayCoffForLessOT": "0",
"NoCoffForLessOT": "1",
"IsMarkLateEarlyAsPerMnth": "1",
"ExcludedStatusForCon": "2",
"IsConsiderHAbsForContLate": "1",
"MarkOrDeductDayLate": "0.5",
"WhenLateBy": "2",
"IsSameForEveryLate": "1",
"IsDeductLeaveForConLate": "1",
"DeductLeaveType1Late": "1",
"DeductLeaveType2Late": "2",
"DeductLeaveType3Late": "3",
"IsConsiderHAbsForContEarly": "0",
"MarkOrDeductDayEarly": "1",
"WhenEarlyBy": "2",
"IsSameForEveryEarly": "1",
"IsDeductLeaveForConEarly": "0",
"DeductLeaveType1Early": "0",
"DeductLeaveType2Early": "2",
"DeductLeaveType3Early": "4",
"IsConsiderHAbsConLateByMin": "1",
"MarkOrDeductDayLateByMin": "0.5",
"WhenLateByMin": "1",
"IsDeductLeaveForConLateByMin": "0",
"DeductLeaveType1LateByMin": null,
"DeductLeaveType2LateByMin": null,
"DeductLeaveType3LateByMin": null,
"IsConsiderHAbsForContEarlyByMin": "1",
"MarkOrDeductDayEarlyByMin": "1",
"WhenEarlyByMin": "2",
"IsDeductLeaveForConEarlyByMin": "1",
"DeductLeaveType1EarlyByMin": "1",
"DeductLeaveType2EarlyByMin": "2",
"DeductLeaveType3EarlyByMin": null,
"updated_at": "2024-03-05T07:37:55.000000Z",
"created_at": "2024-03-05T07:37:55.000000Z",
"id": 5
},
"message": "Attendance Rule Update Successfully."
}
Example response (400, Attendance Rule Not Found):
{
"status": false,
"code": 400,
"message": "Attendance Rule Not Found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Branchs
APIs for managing Branchs
Get Branchs
requires authentication
This endpoint is used to fetch all branches available in the database.
Example request:
curl --request GET \
--get "https://app.timetaag.com/api/v1/GetBranch" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Accept: application/json"
const url = new URL(
"https://app.timetaag.com/api/v1/GetBranch"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200, Get all Branches):
{
"status": true,
"code": 200,
"data": [
{
"id": 1,
"name": "BranchName",
"code": "b1",
"email": "defaultbranch@gmail.com",
"address": "default",
"created_at": "2022-11-17T11:29:01.000000Z",
"updated_at": "2022-11-17T11:29:01.000000Z"
},
],
"message": "Branch Retrieved Successfully."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Single Branch
requires authentication
This endpoint is used to get a branch from the database.
Example request:
curl --request GET \
--get "https://app.timetaag.com/api/v1/GetBranch/14" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Accept: application/json"
const url = new URL(
"https://app.timetaag.com/api/v1/GetBranch/14"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200, Get a Single Branch):
{
"status": true,
"code": 200,
"data": {
"name": "Test",
"code": "test",
"email": "apidemo@timetaag.com",
"address": "123459",
"updated_at": "2024-03-05T05:13:19.000000Z",
"created_at": "2024-03-05T05:13:19.000000Z",
"id": 3
},
"message": "Branch Retrieved Successfully."
}
Example response (400, Branch Not Found):
{
"status": false,
"code": 400,
"message": "Branch Not Found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete Branch
requires authentication
This endpoint is used to delete a branch from the database.
Example request:
curl --request DELETE \
"https://app.timetaag.com/api/v1/DeleteBranch/voluptas" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Accept: application/json"
const url = new URL(
"https://app.timetaag.com/api/v1/DeleteBranch/voluptas"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());
Example response (200, Delete a Branch):
{
"status": true,
"code": 200,
"message": "Branch Deleted Successfully."
}
Example response (400, Branch Not Found):
{
"status": false,
"code": 400,
"message": "Branch Not Found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Add Branch
requires authentication
This endpoint is used to add branch to the database.
Example request:
curl --request POST \
"https://app.timetaag.com/api/v1/AddBranch" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Idempotency-Key: base64_encode(\'body\')" \
--header "Accept: application/json" \
--data "{
\"name\": \"Test\",
\"code\": \"test\",
\"email\": \"apidemo@timetaag.com\",
\"address\": \"123459\"
}"
const url = new URL(
"https://app.timetaag.com/api/v1/AddBranch"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Idempotency-Key": "base64_encode('body')",
"Accept": "application/json",
};
let body = {
"name": "Test",
"code": "test",
"email": "apidemo@timetaag.com",
"address": "123459"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (200, Add a Branch):
{
"status": true,
"code": 200,
"data": {
"name": "Test",
"code": "test",
"email": "apidemo@timetaag.com",
"address": "123459",
"updated_at": "2024-03-05T05:13:19.000000Z",
"created_at": "2024-03-05T05:13:19.000000Z",
"id": 3
},
"message": "Branch Created Successfully."
}
Example response (400, Validation Error):
{
"status": false,
"code": 400,
"message": "Validation Error.",
"data": {
"name": [
"validation.required"
],
"dept_code": [
"validation.required"
],
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update Branch
requires authentication
This endpoint is used to update a branch to the database.
Example request:
curl --request PATCH \
"https://app.timetaag.com/api/v1/UpdateBranch/6" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Idempotency-Key: base64_encode(\'body\')" \
--header "Accept: application/json" \
--data "{
\"name\": \"Test\",
\"code\": \"test\",
\"email\": \"apidemo@timetaag.com\",
\"address\": \"123459\"
}"
const url = new URL(
"https://app.timetaag.com/api/v1/UpdateBranch/6"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Idempotency-Key": "base64_encode('body')",
"Accept": "application/json",
};
let body = {
"name": "Test",
"code": "test",
"email": "apidemo@timetaag.com",
"address": "123459"
};
fetch(url, {
method: "PATCH",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (200, Update a Branch):
{
"status": true,
"code": 200,
"data": {
"name": "Test",
"code": "test",
"email": "apidemo@timetaag.com",
"address": "123459",
"updated_at": "2024-03-05T05:13:19.000000Z",
"created_at": "2024-03-05T05:13:19.000000Z",
"id": 3
},
"message": "Branch Updated Successfully."
}
Example response (400, Branch Not Found):
{
"status": false,
"code": 400,
"message": "Branch Not Found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Departments
APIs for managing Departments
Get Departments
requires authentication
This endpoint is used to fetch all departments from the database.
Example request:
curl --request GET \
--get "https://app.timetaag.com/api/v1/GetDepartments" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Accept: application/json"
const url = new URL(
"https://app.timetaag.com/api/v1/GetDepartments"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200, Get all Departments):
{
"status": true,
"code": 200,
"message": "Department Retrieved Successfully.",
"data": [
{
"id": 7,
"dept_name": "Administration",
"dept_code": "Admin",
"description": "Administration",
"created_at": "-000001-11-29T20:18:48.000000Z",
"updated_at": "-000001-11-29T20:18:48.000000Z"
},
],
"meta": {
"current_page": 1,
"from": 1,
"last_page": 3,
"links": {
"first": "https://app.timetaag.com/api/v1/GetDepartments?page=1",
"last": "https://app.timetaag.com/api/v1/GetDepartments?page=3",
"prev": null,
"next": "https://app.timetaag.com/api/v1/GetDepartments?page=2"
},
"path": "https://app.timetaag.com/api/v1/GetDepartments",
"per_page": 10,
"to": 10,
"total": 23
},
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Single Department
requires authentication
This endpoint is used to get single department to the database.
Example request:
curl --request GET \
--get "https://app.timetaag.com/api/v1/GetDepartment/17" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Accept: application/json"
const url = new URL(
"https://app.timetaag.com/api/v1/GetDepartment/17"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200, Get a Single Department):
{
"status": true,
"code": 200,
"data": {
"dept_name": "Abc",
"dept_code": "abc",
"description": "ABC",
"updated_at": "2024-03-05T04:42:47.000000Z",
"created_at": "2024-03-05T04:42:47.000000Z",
"id": 9
},
"message": "Department Retrieved Successfully."
}
Example response (400, Department Not Found):
{
"status": false,
"code": 400,
"message": "Department Not Found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete Department
requires authentication
This endpoint is used to delete department from the database.
Example request:
curl --request DELETE \
"https://app.timetaag.com/api/v1/DeleteDepartment/5" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Accept: application/json"
const url = new URL(
"https://app.timetaag.com/api/v1/DeleteDepartment/5"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());
Example response (200, Delete a Department):
{
"status": true,
"code": 200
"message": "Department Deleted Successfully."
}
Example response (400, Department Not Found):
{
"status": false,
"code": 400,
"message": "Department Not Found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Add Department
requires authentication
This endpoint is used to add department to the database.
Example request:
curl --request POST \
"https://app.timetaag.com/api/v1/AddDepartment" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Idempotency-Key: base64_encode(\'body\')" \
--header "Accept: application/json" \
--data "{
\"dept_name\": \"Abc\",
\"dept_code\": \"abc\",
\"description\": \"ABC\"
}"
const url = new URL(
"https://app.timetaag.com/api/v1/AddDepartment"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Idempotency-Key": "base64_encode('body')",
"Accept": "application/json",
};
let body = {
"dept_name": "Abc",
"dept_code": "abc",
"description": "ABC"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (200, Add a Department):
{
"status": true,
"code": 200,
"data": {
"dept_name": "Abc",
"dept_code": "abc",
"description": "ABC",
"updated_at": "2024-03-05T04:42:47.000000Z",
"created_at": "2024-03-05T04:42:47.000000Z",
"id": 9
},
"message": "Department Created Successfully.."
}
Example response (400, Validation Error):
{
"status": false,
"code": 400,
"message": "Validation Error.",
"data": {
"dept_name": [
"validation.required"
],
"dept_code": [
"validation.required"
],
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update Department
requires authentication
This endpoint is used to update department to the database.
Example request:
curl --request PATCH \
"https://app.timetaag.com/api/v1/UpdateDepartment/11" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Idempotency-Key: base64_encode(\'body\')" \
--header "Accept: application/json" \
--data "{
\"dept_name\": \"Abc\",
\"dept_code\": \"abc\",
\"description\": \"ABC\"
}"
const url = new URL(
"https://app.timetaag.com/api/v1/UpdateDepartment/11"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Idempotency-Key": "base64_encode('body')",
"Accept": "application/json",
};
let body = {
"dept_name": "Abc",
"dept_code": "abc",
"description": "ABC"
};
fetch(url, {
method: "PATCH",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (200, Update a Department):
{
"status": true,
"code": 200,
"data": {
"dept_name": "Abc",
"dept_code": "abc",
"description": "ABC",
"updated_at": "2024-03-05T04:42:47.000000Z",
"created_at": "2024-03-05T04:42:47.000000Z",
"id": 9
},
"message": "Department Updated Successfully.."
}
Example response (400, Department Not Found):
{
"status": false,
"code": 400,
"message": "Department Not Found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Devices
APIs for managing Devices
Get Devices
requires authentication
This endpoint is used to fetch all devices from the database.
Example request:
curl --request GET \
--get "https://app.timetaag.com/api/v1/GetDevices" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Accept: application/json"
const url = new URL(
"https://app.timetaag.com/api/v1/GetDevices"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200, Get all Devices):
{
"status": true,
"code": 200,
"message": "Biometrics Devices Retrieved Successfully."
"data": [
{
"id": 5,
"name": "Device1",
"code": "DEV1",
"direction": "Alternate Direction",
"serial_number": "DEVICESERAILNO",
"ip_address": "192.168.1.201",
"FPCount": "5",
"FaceCount": 2,
"UserCount": "18",
"AttLogsCount": "61",
"OnlineStatus": null,
"FirmwareVersion": "Ver 8.0.4.2-20180713",
"LastSwipeDownloadedOn": "2024-02-05 10:04:42",
"LastCommunicateToServer": "2024-02-07 15:03:59",
"biomatric_for": "1",
"branch": "1",
"timezone": "87",
"biomatric_grp": "none",
"location": "1"
}
],
"meta": {
"current_page": 1,
"from": 1,
"last_page": 3,
"links": {
"first": "https://app.timetaag.com/api/v1/GetDevices?page=1",
"last": "https://app.timetaag.com/api/v1/GetDevices?page=3",
"prev": null,
"next": "https://app.timetaag.com/api/v1/GetDevices?page=2"
},
"path": "https://app.timetaag.com/api/v1/GetDevices",
"per_page": 10,
"to": 10,
"total": 23
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Single Device
requires authentication
This endpoint is used to get single Device from the database.
Example request:
curl --request GET \
--get "https://app.timetaag.com/api/v1/GetDevice/19" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Accept: application/json"
const url = new URL(
"https://app.timetaag.com/api/v1/GetDevice/19"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200, Get a Single Device):
{
"status": true,
"code": 200,
"message": "Biometric Device Retrieved Successfully.",
"data": {
"id": 5,
"name": "Device1",
"code": "DEV1",
"direction": "Alternate Direction",
"serial_number": "DEVICESERAILNO",
"ip_address": "192.168.1.201",
"FPCount": "5",
"FaceCount": 0,
"UserCount": "18",
"AttLogsCount": "61",
"OnlineStatus": null,
"FirmwareVersion": "Ver 8.0.4.2-20180713",
"LastSwipeDownloadedOn": "2024-02-05 10:04:42",
"LastCommunicateToServer": "2024-02-07 15:03:59",
"biomatric_for": "1",
"branch": "1",
"timezone": "87",
"biomatric_grp": "1",
"location": "2"
},
}
Example response (400, Device Not Found):
{
"status": false,
"code": 400,
"message": "Device Not Found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete Device
requires authentication
This endpoint is used to delete device from the system.
Example request:
curl --request DELETE \
"https://app.timetaag.com/api/v1/DeleteDevice/10" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Accept: application/json"
const url = new URL(
"https://app.timetaag.com/api/v1/DeleteDevice/10"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());
Example response (200, Delete a Device):
{
"status": true,
"code": 200,
"message": "Biometric Device Deleted Successfully."
}
Example response (400, Biometric Device Not Found):
{
"status": false,
"code": 400,
"message": "Biometric Device Not Found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Device Logs
requires authentication
This endpoint is used to fetch all device logs from the database. Dates to be passed in Unix Timestamp.
Example request:
curl --request POST \
"https://app.timetaag.com/api/v1/GetDeviceLogs" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Accept: application/json" \
--data "{
\"from_date\": \"1735689600\",
\"to_date\": \"1737829713\"
}"
const url = new URL(
"https://app.timetaag.com/api/v1/GetDeviceLogs"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Accept": "application/json",
};
let body = {
"from_date": "1735689600",
"to_date": "1737829713"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (200, Get all Device Logs):
{
"status": true,
"code": 200,
"data": [
{
"UserId": "100",
"InsertDate": "2024-02-05 10:04:42",
"PunchDateTime": "2024-02-05 10:04:38",
"SwipeDirection": "0",
"serial_number": "SERIALNOHERE",
"AuthenticationMode": "1",
"AttendanceMarkingType": "BM",
"Remarks": "",
"Lattitude": 24.2545,
"Longitude": 21.5454,
"distaneInKm": 20,
"PermittedGeoLat": 24.2542,
"PermittedGeoLong": 21.5452,
"PermittedRadius": 50
}
],
"meta": {
"current_page": 1,
"from": 1,
"last_page": 3,
"links": {
"first": "https://app.timetaag.com/api/v1/GetDeviceLogs?page=1",
"last": "https://app.timetaag.com/api/v1/GetDeviceLogs?page=3",
"prev": null,
"next": "https://app.timetaag.com/api/v1/GetDeviceLogs?page=2"
},
"path": "https://app.timetaag.com/api/v1/GetDeviceLogs",
"per_page": 100,
"to": 10,
"total": 23
},
"message": "Device Logs Retrieved Successfully."
}
Example response (400, Validation Error):
{
"status": false,
"code": 400,
"message": "Validation Error.",
"data": {
"from_date": [
"validation.required"
],
"to_date": [
"validation.required"
],
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete Uploaded Users
requires authentication
This endpoint is used to delete uploaded users from the database.
Example request:
curl --request POST \
"https://app.timetaag.com/api/v1/DeleteUsers" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Accept: application/json" \
--data "{
\"employee_codes\": \"1,2\",
\"biometric_ids\": \"1,2\"
}"
const url = new URL(
"https://app.timetaag.com/api/v1/DeleteUsers"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Accept": "application/json",
};
let body = {
"employee_codes": "1,2",
"biometric_ids": "1,2"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (200, Delete Uploaded Users):
{
"status": true,
"code": 200,
"data": [
{
"SerialNumber": "SERIALNOHERE",
"BiometricTitle": "Delete User 100 > John Jacobs #100",
"BiometricCommand": "DEL_USR",
"CmdParmStr": "EID=100",
"RecordedDate": "2024-03-04 16:54:44",
"Status": "Pending",
"updated_at": "2024-03-04T12:54:44.000000Z",
"created_at": "2024-03-04T12:54:44.000000Z",
"id": 396
}
],
"message": "Uploaded User Deleted Successfully."
}
Example response (400, Validation Error):
{
"status": false,
"code": 400,
"message": "Validation Error.",
"data": {
"employee_codes": [
"validation.required"
],
"biometric_ids": [
"validation.required"
],
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Add Device
requires authentication
This endpoint is used to add device to the database.
Example request:
curl --request POST \
"https://app.timetaag.com/api/v1/AddDevice" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Idempotency-Key: base64_encode(\'body\')" \
--header "Accept: application/json" \
--data "{
\"name\": \"abbb\",
\"code\": \"1811\",
\"serial_number\": \"RK\",
\"direction\": 1,
\"biomatric_for\": 1,
\"timezone\": 1,
\"biomatric_grp\": 1,
\"machine_id\": 1,
\"location\": 1,
\"master_biometric\": 1,
\"email\": \"abc@gmail.com\",
\"contact_no\": 9867763294,
\"biomatric_type\": 1,
\"ip_address\": \"12.987\"
}"
const url = new URL(
"https://app.timetaag.com/api/v1/AddDevice"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Idempotency-Key": "base64_encode('body')",
"Accept": "application/json",
};
let body = {
"name": "abbb",
"code": "1811",
"serial_number": "RK",
"direction": 1,
"biomatric_for": 1,
"timezone": 1,
"biomatric_grp": 1,
"machine_id": 1,
"location": 1,
"master_biometric": 1,
"email": "abc@gmail.com",
"contact_no": 9867763294,
"biomatric_type": 1,
"ip_address": "12.987"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (200, Add a Device):
{
"status": true,
"code": 200,
"data": {
"name": "abbb",
"code": "1811",
"direction": "1",
"serial_number": "RK",
"ip_address": "124.40.245.189",
"biomatric_for": "1",
"branch": null,
"timezone": "1",
"biomatric_grp": "1",
"machine_id": "1",
"location": "1",
"master_biometric": "1",
"email": "apidemo@timetaag.com",
"contact_no": "0123654789",
"biomatric_type": "1",
"updated_at": "2024-03-04T12:27:23.000000Z",
"created_at": "2024-03-04T12:27:23.000000Z",
"id": 11
},
"message": "Biometric Device Created Successfully."
}
Example response (400, Validation Error):
{
"status": false,
"code": 400,
"message": "Validation Error.",
"data": {
"name": [
"validation.required"
],
"code": [
"validation.unique"
],
"serial_number": [
"validation.unique"
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Employees
APIs for managing Employees
Get Employees
requires authentication
This endpoint is used to get all employees from the database.
Example request:
curl --request GET \
--get "https://app.timetaag.com/api/v1/GetEmployees" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Accept: application/json"
const url = new URL(
"https://app.timetaag.com/api/v1/GetEmployees"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200, Get all Employees):
{
"status": true,
"code": 200,
"message": "Employees Retrieved Successfully."
"data": [
{
"id": 28,
"emp_name": "Ishitha Prajapati",
"photo": "https://app.timetaag.com/photos/no-user.jpg",
"emp_code": "127",
"emp_branch": "default",
"gender": "2",
"biomatric_code": "127",
"birth_date": "2001-03-16",
"joindate": "2019-08-01",
"resigning_date": "2020-08-01",
"leave_credit_date": "2020-08-01",
"contact_no": "0123456789",
"email": "ishitha@gmail.com",
"address": "123",
"login_name": null,
"timezone": "1",
"imei_number": "1",
"allow_in_out": "1",
"department": "General",
"emp_type": "1",
"team": "1",
"shift_group": "1",
"food_category": "1",
"manager": "1",
"holiday_group": 1,
"designation": "Default",
"location": "DefaultLoc",
"attendance_setting": "Default",
"work_status": "Working",
"delete_status": 0,
"blocked": 0,
"last_login": null,
"created_at": "2024-03-02T07:34:49.000000Z",
"updated_at": "2024-03-02T07:34:49.000000Z",
"desname": {
"id": 1,
"name": "Default",
"created_at": "2022-07-22T16:13:03.000000Z",
"updated_at": "2022-07-22T16:13:03.000000Z"
},
"branchname": {
"id": 1,
"name": "DefaultBranch",
"code": "b1",
"email": "defaultbranch@gmail.com",
"address": "default",
"created_at": "2022-11-17T11:29:01.000000Z",
"updated_at": "2022-11-17T11:29:01.000000Z"
},
"attset": {
"id": 1,
"AttSettingName": "Default",
"AttSettingCode": "Default",
"WeeklyOff1Day": "Friday",
"WeeklyOff1Occurence": "1,2,3,4,5",
"WeeklyOff2Day": "none",
"WeeklyOff2Occurence": "",
"HalfDayForLessDurationMin": 7,
"AbsentForLessDurationMin": 6,
"OTFormula": "shift_hour",
"MinimumOT": 10,
"MaximumOT": 600,
"GraceForLateComing": 0,
"GraceForEarlying": 0,
"MarkHalfDayWhenLateByMins": 0,
"MarkHalfDayWhenEarlyByMins": 0,
"IsConsiderFirstandLastPunch": null,
"IsValidateEarlyPunch": null,
"IsValidateLatePunch": null,
"IsDeductBreakDuration": null,
"SetSinglePunchStatusAs": "In Punch + 1 min",
"IsWOPHOPInOT": 1,
"IsAutoCompOff": null,
"HalfDayParForLessDurationMin": 7,
"AbsentParForLessDurationMin": 6,
"IsValPreSufAbsentOnWOHO": null,
"IsValSuffixAbsentOnWOHO": null,
"IsValPrefixAbsentOnWOHO": null,
"IsValLeaveForPrefixSuffix": null,
"HalfDayCoffForLessDurationMin": 0,
"NoCoffForLessDurationMin": 0,
"HalfDayCoffForLessOT": 0,
"NoCoffForLessOT": 0,
"ApplicableLeaves": "1",
"IsConsiderHAbsForContLate": null,
"MarkOrDeductDayLate": 0.5,
"WhenLateBy": 2,
"IsDeductLeaveForConLate": null,
"DeductLeaveType1Late": null,
"DeductLeaveType2Late": null,
"DeductLeaveType3Late": null,
"IsSameForEveryLate": null,
"IsConsiderHAbsConLateByMin": null,
"MarkOrDeductDayLateByMin": 0.5,
"WhenLateByMin": 0,
"IsDeductLeaveForConLateByMin": null,
"DeductLeaveType1LateByMin": null,
"DeductLeaveType2LateByMin": null,
"DeductLeaveType3LateByMin": null,
"IsConsiderHAbsForContEarly": null,
"MarkOrDeductDayEarly": 0.5,
"WhenEarlyBy": 2,
"IsDeductLeaveForConEarly": null,
"DeductLeaveType1Early": null,
"DeductLeaveType2Early": null,
"DeductLeaveType3Early": null,
"IsSameForEveryEarly": null,
"IsConsiderHAbsForContEarlyByMin": null,
"MarkOrDeductDayEarlyByMin": 0.5,
"WhenEarlyByMin": 0,
"IsDeductLeaveForConEarlyByMin": null,
"DeductLeaveType1EarlyByMin": null,
"DeductLeaveType2EarlyByMin": null,
"DeductLeaveType3EarlyByMin": null,
"ExcludedStatusForCon": "",
"ProductionBiometricIds": "",
"FlexiShiftId": 4,
"IsMarkLateEarlyAsPerMnth": null,
"DefaultOverTime": 1,
"DefaultMinWOHOOT": 0,
"IsNeglectLastInPunch": null,
"IsCheckTillLastOut": 1,
"IsOTNotApplicableOnOutStation": null,
"IsOTNotApplicableOnFlexiAndOpenShift": null,
"IsCheckForB24HrShift": 0,
"IsRoundOffOT": null,
"IsRoundDownOT": null,
"IsCheckMissPunchStatus": 1,
"WorkDurationFormula": 1,
"created_at": "2022-11-17T13:00:44.000000Z",
"updated_at": "2024-02-29T07:49:57.000000Z"
},
"locname": {
"id": 1,
"loc_name": "DefaultLoc",
"description": "Default Location",
"created_at": "2022-11-17T11:30:32.000000Z",
"updated_at": "2023-04-20T17:15:00.000000Z"
},
"workst": {
"id": 1,
"name": "Working",
"created_at": "2022-07-22T16:11:29.000000Z",
"updated_at": "2022-07-22T16:11:29.000000Z"
},
"dept": {
"id": 1,
"dept_name": "General",
"dept_code": "General",
"description": "General Department",
"created_at": "2022-11-17T11:29:44.000000Z",
"updated_at": "2022-11-17T11:29:44.000000Z"
}
}
],
"meta": {
"current_page": 1,
"from": 1,
"last_page": 3,
"links": {
"first": "https://app.timetaag.com/api/v1/GetEmployees?page=1",
"last": "https://app.timetaag.com/api/v1/GetEmployees?page=3",
"prev": null,
"next": "https://app.timetaag.com/api/v1/GetEmployees?page=2"
},
"path": "https://app.timetaag.com/api/v1/GetEmployees",
"per_page": 10,
"to": 10,
"total": 23
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Single Employee
requires authentication
This endpoint is used to get single employee from the database.
Example request:
curl --request GET \
--get "https://app.timetaag.com/api/v1/GetEmployee/18" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Accept: application/json"
const url = new URL(
"https://app.timetaag.com/api/v1/GetEmployee/18"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200, Get a Single Employee):
{
"status": true,
"code": 200,
"message": "Employee Retrieved Successfully.",
"data": {
"id": 2,
"emp_name": "Anoop",
"photo": "",
"emp_code": "101",
"emp_branch": 1,
"gender": null,
"biomatric_code": "101",
"birth_date": null,
"joindate": "2023-08-16",
"resigning_date": "2100-01-01",
"leave_credit_date": null,
"contact_no": null,
"email": null,
"address": null,
"login_name": null,
"timezone": "1",
"imei_number": null,
"allow_in_out": null,
"department": "3",
"emp_type": "1",
"team": "1",
"shift_group": "1",
"food_category": "1",
"manager": "1",
"holiday_group": 1,
"designation": 1,
"location": 1,
"attendance_setting": 1,
"work_status": 1,
"delete_status": 0,
"blocked": 0,
"last_login": null,
"created_at": "2023-08-16T05:11:16.000000Z",
"updated_at": "2023-10-03T10:52:09.000000Z",
"desname": {
"id": 1,
"name": "Default",
"created_at": "2022-07-22T16:13:03.000000Z",
"updated_at": "2022-07-22T16:13:03.000000Z"
},
"branchname": {
"id": 1,
"name": "DefaultBranch",
"code": "b1",
"email": "defaultbranch@gmail.com",
"address": "default",
"created_at": "2022-11-17T11:29:01.000000Z",
"updated_at": "2022-11-17T11:29:01.000000Z"
},
"attset": {
"id": 1,
"AttSettingName": "Default",
"AttSettingCode": "Default",
"WeeklyOff1Day": "Friday",
"WeeklyOff1Occurence": "1,2,3,4,5",
"WeeklyOff2Day": "none",
"WeeklyOff2Occurence": "",
"HalfDayForLessDurationMin": 7,
"AbsentForLessDurationMin": 6,
"OTFormula": "shift_hour",
"MinimumOT": 10,
"MaximumOT": 600,
"GraceForLateComing": 0,
"GraceForEarlying": 0,
"MarkHalfDayWhenLateByMins": 0,
"MarkHalfDayWhenEarlyByMins": 0,
"IsConsiderFirstandLastPunch": null,
"IsValidateEarlyPunch": null,
"IsValidateLatePunch": null,
"IsDeductBreakDuration": null,
"SetSinglePunchStatusAs": "In Punch + 1 min",
"IsWOPHOPInOT": 1,
"IsAutoCompOff": null,
"HalfDayParForLessDurationMin": 7,
"AbsentParForLessDurationMin": 6,
"IsValPreSufAbsentOnWOHO": null,
"IsValSuffixAbsentOnWOHO": null,
"IsValPrefixAbsentOnWOHO": null,
"IsValLeaveForPrefixSuffix": null,
"HalfDayCoffForLessDurationMin": 0,
"NoCoffForLessDurationMin": 0,
"HalfDayCoffForLessOT": 0,
"NoCoffForLessOT": 0,
"ApplicableLeaves": "1",
"IsConsiderHAbsForContLate": null,
"MarkOrDeductDayLate": 0.5,
"WhenLateBy": 2,
"IsDeductLeaveForConLate": null,
"DeductLeaveType1Late": null,
"DeductLeaveType2Late": null,
"DeductLeaveType3Late": null,
"IsSameForEveryLate": null,
"IsConsiderHAbsConLateByMin": null,
"MarkOrDeductDayLateByMin": 0.5,
"WhenLateByMin": 0,
"IsDeductLeaveForConLateByMin": null,
"DeductLeaveType1LateByMin": null,
"DeductLeaveType2LateByMin": null,
"DeductLeaveType3LateByMin": null,
"IsConsiderHAbsForContEarly": null,
"MarkOrDeductDayEarly": 0.5,
"WhenEarlyBy": 2,
"IsDeductLeaveForConEarly": null,
"DeductLeaveType1Early": null,
"DeductLeaveType2Early": null,
"DeductLeaveType3Early": null,
"IsSameForEveryEarly": null,
"IsConsiderHAbsForContEarlyByMin": null,
"MarkOrDeductDayEarlyByMin": 0.5,
"WhenEarlyByMin": 0,
"IsDeductLeaveForConEarlyByMin": null,
"DeductLeaveType1EarlyByMin": null,
"DeductLeaveType2EarlyByMin": null,
"DeductLeaveType3EarlyByMin": null,
"ExcludedStatusForCon": "",
"ProductionBiometricIds": "",
"FlexiShiftId": 4,
"IsMarkLateEarlyAsPerMnth": null,
"DefaultOverTime": 1,
"DefaultMinWOHOOT": 0,
"IsNeglectLastInPunch": null,
"IsCheckTillLastOut": 1,
"IsOTNotApplicableOnOutStation": null,
"IsOTNotApplicableOnFlexiAndOpenShift": null,
"IsCheckForB24HrShift": 0,
"IsRoundOffOT": null,
"IsRoundDownOT": null,
"IsCheckMissPunchStatus": 1,
"WorkDurationFormula": 1,
"created_at": "2022-11-17T13:00:44.000000Z",
"updated_at": "2024-02-29T07:49:57.000000Z"
},
"locname": {
"id": 1,
"loc_name": "DefaultLoc",
"description": "Default Location",
"created_at": "2022-11-17T11:30:32.000000Z",
"updated_at": "2023-04-20T17:15:00.000000Z"
},
"workst": {
"id": 1,
"name": "Working",
"created_at": "2022-07-22T16:11:29.000000Z",
"updated_at": "2022-07-22T16:11:29.000000Z"
}
},
}
Example response (400, Employee Not Found):
{
"status": false,
"code": 400,
"message": "Employee Not Found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete Employee
requires authentication
This endpoint is used to delete employee from the database.
Example request:
curl --request DELETE \
"https://app.timetaag.com/api/v1/DeleteEmployee/4" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Accept: application/json"
const url = new URL(
"https://app.timetaag.com/api/v1/DeleteEmployee/4"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());
Example response (200, Delete a Employee):
{
"status": true,
"code": 200,
"message": "Employee Deleted Successfully."
}
Example response (400, Employee Not Found):
{
"status": false,
"code": 400,
"message": "Employee Not Found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Add Employee
requires authentication
This endpoint is used to add employee to the database.
Example request:
curl --request POST \
"https://app.timetaag.com/api/v1/AddEmployee" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Idempotency-Key: base64_encode(\'body\')" \
--header "Accept: application/json" \
--data "{
\"emp_code\": 128,
\"emp_name\": \"AAAAAAA\",
\"biomatric_code\": 128,
\"base64image\": \"image.png\",
\"emp_branch\": 1,
\"designation\": 1,
\"location\": 1,
\"attendance_setting\": 1,
\"work_status\": 1,
\"gender\": 1,
\"birth_date\": \"2024-01-01\",
\"joindate\": \"2024-01-01\",
\"resigning_date\": \"2024-01-01\",
\"leave_credit_date\": \"2024-01-01\",
\"contact_no\": \"258963214\",
\"email\": \"abc@gmail.com\",
\"address\": \"465768 abc\",
\"login_name\": \"abc\",
\"password\": \"123654789\",
\"timezone\": 1,
\"imei_number\": 1,
\"allow_in_out\": 1,
\"department\": 1,
\"emp_type\": 1,
\"team\": 1,
\"shift_group\": 1,
\"food_category\": 1,
\"manager\": 1,
\"holiday_group\": 1
}"
const url = new URL(
"https://app.timetaag.com/api/v1/AddEmployee"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Idempotency-Key": "base64_encode('body')",
"Accept": "application/json",
};
let body = {
"emp_code": 128,
"emp_name": "AAAAAAA",
"biomatric_code": 128,
"base64image": "image.png",
"emp_branch": 1,
"designation": 1,
"location": 1,
"attendance_setting": 1,
"work_status": 1,
"gender": 1,
"birth_date": "2024-01-01",
"joindate": "2024-01-01",
"resigning_date": "2024-01-01",
"leave_credit_date": "2024-01-01",
"contact_no": "258963214",
"email": "abc@gmail.com",
"address": "465768 abc",
"login_name": "abc",
"password": "123654789",
"timezone": 1,
"imei_number": 1,
"allow_in_out": 1,
"department": 1,
"emp_type": 1,
"team": 1,
"shift_group": 1,
"food_category": 1,
"manager": 1,
"holiday_group": 1
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (200, Add a Employee):
{
"status": true,
"code": 200,
"data": {
"photo": "https://app.timetaag.com/photos/no-user.jpg",
"emp_name": "",
"emp_code": "128",
"emp_branch": "1",
"designation": "1",
"location": "1",
"attendance_setting": "1",
"work_status": "1",
"gender": "2",
"biomatric_code": "128",
"birth_date": "2001-03-16",
"joindate": "2019-08-01",
"resigning_date": "2020-08-01",
"leave_credit_date": "2020-08-01",
"contact_no": "0123456789",
"email": "ishitha@gmail.com",
"address": "123",
"login_name": null,
"password": "$2y$10$DmLZAsmjh0pEqWCjo7xsG.qPRLpKTZPUx0TeB4hJvu6265yfdT4pe",
"timezone": "1",
"imei_number": "1",
"allow_in_out": "1",
"department": "1",
"emp_type": "1",
"team": "1",
"shift_group": "1",
"food_category": "1",
"manager": "1",
"holiday_group": "1",
"updated_at": "2024-03-04T11:54:26.000000Z",
"created_at": "2024-03-04T11:54:26.000000Z",
"id": 29
},
"message": "Employee Created Successfully.."
}
Example response (400, Validation Error):
{
"status": false,
"code": 400,
"message": "Validation Error.",
"data": {
"emp_code": [
"validation.required"
],
"emp_name": [
"validation.required"
],
"biomatric_code": [
"validation.required"
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update Employee
requires authentication
This endpoint is used to update employee to the database.
Example request:
curl --request PATCH \
"https://app.timetaag.com/api/v1/UpdateEmployee/6" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Idempotency-Key: base64_encode(\'body\')" \
--header "Accept: application/json" \
--data "{
\"emp_name\": \"AAAAAAA\",
\"emp_code\": 128,
\"biomatric_code\": 128,
\"base64image\": \"image.png\",
\"emp_branch\": 1,
\"designation\": 1,
\"location\": 1,
\"attendance_setting\": 1,
\"work_status\": 1,
\"gender\": 1,
\"birth_date\": \"2024-01-01\",
\"joindate\": \"2024-01-01\",
\"resigning_date\": \"2024-01-01\",
\"leave_credit_date\": \"2024-01-01\",
\"contact_no\": \"258963214\",
\"email\": \"abc@gmail.com\",
\"address\": \"465768 abc\",
\"login_name\": \"abc\",
\"password\": \"123654789\",
\"timezone\": 1,
\"imei_number\": 1,
\"allow_in_out\": 1,
\"department\": 1,
\"emp_type\": 1,
\"team\": 1,
\"shift_group\": 1,
\"food_category\": 1,
\"manager\": 1,
\"holiday_group\": 1
}"
const url = new URL(
"https://app.timetaag.com/api/v1/UpdateEmployee/6"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Idempotency-Key": "base64_encode('body')",
"Accept": "application/json",
};
let body = {
"emp_name": "AAAAAAA",
"emp_code": 128,
"biomatric_code": 128,
"base64image": "image.png",
"emp_branch": 1,
"designation": 1,
"location": 1,
"attendance_setting": 1,
"work_status": 1,
"gender": 1,
"birth_date": "2024-01-01",
"joindate": "2024-01-01",
"resigning_date": "2024-01-01",
"leave_credit_date": "2024-01-01",
"contact_no": "258963214",
"email": "abc@gmail.com",
"address": "465768 abc",
"login_name": "abc",
"password": "123654789",
"timezone": 1,
"imei_number": 1,
"allow_in_out": 1,
"department": 1,
"emp_type": 1,
"team": 1,
"shift_group": 1,
"food_category": 1,
"manager": 1,
"holiday_group": 1
};
fetch(url, {
method: "PATCH",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (200, Update a Employee):
{
"status": true,
"code": 200,
"data": {
"photo": "https://app.timetaag.com/photos/no-user.jpg",
"emp_name": "AAAAAAA",
"emp_code": "128",
"emp_branch": "1",
"designation": "1",
"location": "1",
"attendance_setting": "1",
"work_status": "1",
"gender": "2",
"biomatric_code": "128",
"birth_date": "2001-03-16",
"joindate": "2019-08-01",
"resigning_date": "2020-08-01",
"leave_credit_date": "2020-08-01",
"contact_no": "0123456789",
"email": "ishitha@gmail.com",
"address": "123",
"login_name": null,
"password": "$2y$10$DmLZAsmjh0pEqWCjo7xsG.qPRLpKTZPUx0TeB4hJvu6265yfdT4pe",
"timezone": "1",
"imei_number": "1",
"allow_in_out": "1",
"department": "1",
"emp_type": "1",
"team": "1",
"shift_group": "1",
"food_category": "1",
"manager": "1",
"holiday_group": "1",
"updated_at": "2024-03-04T11:54:26.000000Z",
"created_at": "2024-03-04T11:54:26.000000Z",
"id": 29
},
"message": "Employee Updated Successfully."
}
Example response (400, Employee Not Found):
{
"status": false,
"code": 400,
"message": "Employee Not Found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Employees Leaves
APIs for managing Employees Leaves
Get Employee Leaves
requires authentication
This endpoint is used to fetch all employee leaves available in the database.
Example request:
curl --request POST \
"https://app.timetaag.com/api/v1/GetEmpLeaves" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Accept: application/json" \
--data "{
\"month\": 1,
\"year\": 2024
}"
const url = new URL(
"https://app.timetaag.com/api/v1/GetEmpLeaves"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Accept": "application/json",
};
let body = {
"month": 1,
"year": 2024
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (200, Get all Leaves):
{
"status": true,
"code": 200,
"message": "Leaves Retrieved Successfully.",
"data": [
{
"StaffLeaveEntryId": 10,
"LeaveTypeId": 2,
"LeaveStatus": "Full Day",
"StaffId": "120",
"LeaveFromDate": "2024-03-01",
"LeaveToDate": "2024-03-10",
"IsApproved": 0,
"ApprovedBy": null,
"AppliedDate": null,
"Remarks": null,
"TotalDays": "10",
"ApproveDeclineOn": null,
"ManagerRemarks": null,
"LV1IsApproved": null,
"LV2IsApproved": null,
"LV3IsApproved": null,
"LV4IsApproved": null,
"LV5IsApproved": null,
"LV1ManagerRemarks": null,
"LV2ManagerRemarks": null,
"LV3ManagerRemarks": null,
"LV4ManagerRemarks": null,
"LV5ManagerRemarks": null,
"LV1ApproveDeclineOn": null,
"LV2ApproveDeclineOn": null,
"LV3ApproveDeclineOn": null,
"LV4ApproveDeclineOn": null,
"LV5ApproveDeclineOn": null,
"DocumentName": null,
"AppliedBy": null,
"is_delete": 0,
"created_at": "2022-11-17T12:08:27.000000Z",
"updated_at": "2022-11-19T11:08:56.000000Z",
"id": 19,
"emp_name": "CJ Talib",
"photo": null,
"emp_code": "120",
"emp_branch": 1,
"gender": "1",
"biomatric_code": "120",
"birth_date": "1990-01-01",
"joindate": "2020-01-01",
"resigning_date": "3000-01-01",
"leave_credit_date": null,
"contact_no": null,
"email": null,
"address": null,
"login_name": null,
"password": null,
"timezone": null,
"imei_number": null,
"allow_in_out": null,
"department": "3",
"emp_type": "1",
"team": "1",
"shift_group": "1",
"food_category": null,
"manager": null,
"holiday_group": null,
"designation": 1,
"location": 1,
"attendance_setting": 1,
"work_status": 1,
"delete_status": 0,
"blocked": 0,
"last_login": null,
"LeaveTypeName": "Casual Leave",
"LeaveTypeCode": "CL",
"Gender": "All",
"CreditBalance": null,
"Description": "Casual Leave (CL) is a type of leave that an employee is entitled to take for a short duration",
"IsNegativeBalance": "0",
"AllotmentType": "Monthly",
"StartCreditFrom": null,
"IsLossOfPay": "0",
"ApplicableLeaveStatus": "full_day",
"MaxTakeLPMonth": null,
"MaxTakeLAtOnce": null,
"MinDGapBTwoLeave": null,
"MaxTakeLPYear": null,
"MaxNegativeBalance": null,
"IsProrated": "0",
"GraceApplyPeriod": null,
"GracePShiftApplicable": "1"
},
],
"meta": {
"current_page": 1,
"from": 1,
"last_page": 3,
"links": {
"first": "https://app.timetaag.com/api/v1/GetEmpLeaves?page=1",
"last": "https://app.timetaag.com/api/v1/GetEmpLeaves?page=3",
"prev": null,
"next": "https://app.timetaag.com/api/v1/GetEmpLeaves?page=2"
},
"path": "https://app.timetaag.com/api/v1/GetEmpLeaves",
"per_page": 10,
"to": 10,
"total": 23
}
}
Example response (400, Validation Error):
{
"status": false,
"code": 400,
"message": "Validation Error.",
"data": {
"month": [
"validation.required"
],
"year": [
"validation.required"
],
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Single Employee Leave
requires authentication
This endpoint is used to get single employee leave from the database.
Example request:
curl --request GET \
--get "https://app.timetaag.com/api/v1/GetEmpLeave/15" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Accept: application/json"
const url = new URL(
"https://app.timetaag.com/api/v1/GetEmpLeave/15"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200, Get a Single Employee Leave):
{
"status": true,
"code": 200,
"data": {
"StaffLeaveEntryId": 12,
"LeaveTypeId": "1",
"LeaveStatus": "Full Day",
"StaffId": "128",
"LeaveFromDate": "2024-03-01",
"LeaveToDate": "2024-03-06",
"IsApproved": 1,
"ApprovedBy": null,
"AppliedDate": null,
"Remarks": "test remark",
"TotalDays": "6",
"ApproveDeclineOn": null,
"ManagerRemarks": null,
"LV1IsApproved": null,
"LV2IsApproved": null,
"LV3IsApproved": null,
"LV4IsApproved": null,
"LV5IsApproved": null,
"LV1ManagerRemarks": null,
"LV2ManagerRemarks": null,
"LV3ManagerRemarks": null,
"LV4ManagerRemarks": null,
"LV5ManagerRemarks": null,
"LV1ApproveDeclineOn": null,
"LV2ApproveDeclineOn": null,
"LV3ApproveDeclineOn": null,
"LV4ApproveDeclineOn": null,
"LV5ApproveDeclineOn": null,
"DocumentName": null,
"AppliedBy": null,
"is_delete": 0,
"created_at": "2024-03-05T06:42:24.000000Z",
"updated_at": "2024-03-05T06:50:50.000000Z"
},
"message": "Employee Leave Retrieved Successfully."
}
Example response (400, Employee Leave Not Found):
{
"status": false,
"code": 400,
"message": "Employee Leave Not Found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete Employee Leave
requires authentication
This endpoint is used to delete employee leave to the database.
Example request:
curl --request DELETE \
"https://app.timetaag.com/api/v1/DeleteEmpLeaves/8" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Accept: application/json"
const url = new URL(
"https://app.timetaag.com/api/v1/DeleteEmpLeaves/8"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());
Example response (200, Update a Leave):
{
"status": true,
"code": 200,
"message": "Employee Leave Deleted Successfully."
}
Example response (400, Employee Leave Not Found):
{
"status": false,
"code": 400,
"message": "Employee Leave Not Found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Add Employee Leave
requires authentication
This endpoint is used to add employee to the database.
Example request:
curl --request POST \
"https://app.timetaag.com/api/v1/AddEmpLeaves" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Idempotency-Key: base64_encode(\'body\')" \
--header "Accept: application/json" \
--data "{
\"employee_code\": \"1,2\",
\"from_date\": \"2024-01-01\",
\"to_date\": \"2024-01-01\",
\"leave_type\": 1,
\"leave_status\": \"Full Day\",
\"remarks\": \"your remarks...\",
\"approve\": 1
}"
const url = new URL(
"https://app.timetaag.com/api/v1/AddEmpLeaves"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Idempotency-Key": "base64_encode('body')",
"Accept": "application/json",
};
let body = {
"employee_code": "1,2",
"from_date": "2024-01-01",
"to_date": "2024-01-01",
"leave_type": 1,
"leave_status": "Full Day",
"remarks": "your remarks...",
"approve": 1
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (200, Add a Leave):
{
"status": true,
"code": 200,
"data": [
{
"StaffId": "128",
"LeaveTypeId": "1",
"LeaveStatus": "Full Day",
"LeaveFromDate": "2024-03-01",
"LeaveToDate": "2024-03-05",
"IsApproved": "1",
"Remarks": "test",
"TotalDays": 5,
"updated_at": "2024-03-05T06:42:24.000000Z",
"created_at": "2024-03-05T06:42:24.000000Z",
"id": 12
}
],
"message": "Employee Leave assigned Successfully."
}
Example response (400, Validation Error):
{
"status": false,
"code": 400,
"message": "Validation Error.",
"data": {
"employee_code": [
"validation.required"
],
"from_date": [
"validation.required"
],
"to_date": [
"validation.required"
],
"leave_type": [
"validation.required"
],
"leave_status": [
"validation.required"
],
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update Employee Leave
requires authentication
This endpoint is used to update employee leave to the database.
Example request:
curl --request PATCH \
"https://app.timetaag.com/api/v1/UpdateEmpLeaves/5" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Idempotency-Key: base64_encode(\'body\')" \
--header "Accept: application/json" \
--data "{
\"employee_code\": \"1,2\",
\"from_date\": \"2024-01-01\",
\"to_date\": \"2024-01-01\",
\"leave_type\": 1,
\"leave_status\": \"Full Day\",
\"remarks\": \"your remarks...\",
\"approve\": 1
}"
const url = new URL(
"https://app.timetaag.com/api/v1/UpdateEmpLeaves/5"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Idempotency-Key": "base64_encode('body')",
"Accept": "application/json",
};
let body = {
"employee_code": "1,2",
"from_date": "2024-01-01",
"to_date": "2024-01-01",
"leave_type": 1,
"leave_status": "Full Day",
"remarks": "your remarks...",
"approve": 1
};
fetch(url, {
method: "PATCH",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (200, Update a Leave):
{
"status": true,
"code": 200,
"data": {
"StaffLeaveEntryId": 12,
"LeaveTypeId": "1",
"LeaveStatus": "Full Day",
"StaffId": "128",
"LeaveFromDate": "2024-03-01",
"LeaveToDate": "2024-03-06",
"IsApproved": 1,
"ApprovedBy": null,
"AppliedDate": null,
"Remarks": "test remark",
"TotalDays": "6",
"ApproveDeclineOn": null,
"ManagerRemarks": null,
"LV1IsApproved": null,
"LV2IsApproved": null,
"LV3IsApproved": null,
"LV4IsApproved": null,
"LV5IsApproved": null,
"LV1ManagerRemarks": null,
"LV2ManagerRemarks": null,
"LV3ManagerRemarks": null,
"LV4ManagerRemarks": null,
"LV5ManagerRemarks": null,
"LV1ApproveDeclineOn": null,
"LV2ApproveDeclineOn": null,
"LV3ApproveDeclineOn": null,
"LV4ApproveDeclineOn": null,
"LV5ApproveDeclineOn": null,
"DocumentName": null,
"AppliedBy": null,
"is_delete": 0,
"created_at": "2024-03-05T06:42:24.000000Z",
"updated_at": "2024-03-05T06:50:50.000000Z"
},
"message": "Employee Leave Updated Successfully."
}
Example response (400, Employee Leave Not Found):
{
"status": false,
"code": 400,
"message": "Employee Leave Not Found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Employees Outdoors
APIs for managing Employees Outdoors
Get Employee Outdoors
requires authentication
This endpoint is used to fetch all employee outdoor entries available in the database.
Example request:
curl --request POST \
"https://app.timetaag.com/api/v1/GetEmpOutdoors" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Accept: application/json" \
--data "{
\"month\": 1,
\"year\": 2024
}"
const url = new URL(
"https://app.timetaag.com/api/v1/GetEmpOutdoors"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Accept": "application/json",
};
let body = {
"month": 1,
"year": 2024
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (200, Get all outdoor entries):
{
"status": true,
"code": 200,
"message": "Outdoor Entries Retrieved Successfully.",
"data": [
{
"StaffOutDoorEntryId": 2,
"StaffId": "120",
"OutDoorType": "2",
"StartDateTime": "2024-03-01 15:15:00",
"EndDateTime": "2024-03-05 16:15:00",
"TotalDays": "5",
"AppliedDate": null,
"Remarks": null,
"IsApproved": 0,
"ApprovedBy": null,
"ApproveDeclineOn": null,
"ManagerRemarks": null,
"LV1IsApproved": null,
"LV2IsApproved": null,
"LV3IsApproved": null,
"LV4IsApproved": null,
"LV5IsApproved": null,
"LV1ManagerRemarks": null,
"LV2ManagerRemarks": null,
"LV3ManagerRemarks": null,
"LV4ManagerRemarks": null,
"LV5ManagerRemarks": null,
"LV1ApproveDeclineOn": null,
"LV2ApproveDeclineOn": null,
"LV3ApproveDeclineOn": null,
"LV4ApproveDeclineOn": null,
"LV5ApproveDeclineOn": null,
"ClientId": null,
"TaskStartLattitude": null,
"TaskStartLongitude": null,
"TaskStartLocation": "",
"TaskEndLattitude": null,
"TaskEndLongitude": null,
"TaskEndLocation": null,
"TaskTitle": null,
"TaskStatus": null,
"TaskCategoryId": null,
"IsNextDayEntry": null,
"AppliedBy": null,
"is_delete": 0,
"created_at": "2023-08-23T17:01:41.000000Z",
"updated_at": "2023-10-03T10:52:09.000000Z",
"id": 19,
"emp_name": "CJ Talib",
"photo": null,
"emp_code": "120",
"emp_branch": 1,
"gender": "1",
"biomatric_code": "120",
"birth_date": "1990-01-01",
"joindate": "2020-01-01",
"resigning_date": "3000-01-01",
"leave_credit_date": null,
"contact_no": null,
"email": null,
"address": null,
"login_name": null,
"password": null,
"timezone": null,
"imei_number": null,
"allow_in_out": null,
"department": "3",
"emp_type": "1",
"team": "1",
"shift_group": "1",
"food_category": null,
"manager": null,
"holiday_group": null,
"designation": 1,
"location": 1,
"attendance_setting": 1,
"work_status": 1,
"delete_status": 0,
"blocked": 0,
"last_login": null
},
],
"meta": {
"current_page": 1,
"from": 1,
"last_page": 3,
"links": {
"first": "https://app.timetaag.com/api/v1/GetEmpOutdoors?page=1",
"last": "https://app.timetaag.com/api/v1/GetEmpOutdoors?page=3",
"prev": null,
"next": "https://app.timetaag.com/api/v1/GetEmpOutdoors?page=2"
},
"path": "https://app.timetaag.com/api/v1/GetEmpOutdoors",
"per_page": 10,
"to": 10,
"total": 23
},
}
Example response (400, Validation Error):
{
"status": false,
"code": 400,
"message": "Validation Error.",
"data": {
"month": [
"validation.required"
],
"year": [
"validation.required"
],
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Single Employee Outdoor
requires authentication
This endpoint is used to get employee outdoor entry from the database.
Example request:
curl --request GET \
--get "https://app.timetaag.com/api/v1/GetEmpOutdoor/20" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Accept: application/json"
const url = new URL(
"https://app.timetaag.com/api/v1/GetEmpOutdoor/20"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200, Get a Single Employee Outdoor):
{
"status": true,
"code": 200,
"data": {
"StaffOutDoorEntryId": 4,
"StaffId": "128",
"OutDoorType": "2",
"StartDateTime": "2024-03-01 15:15:00",
"EndDateTime": "2024-03-05 16:15:00",
"TotalDays": "2",
"AppliedDate": null,
"Remarks": "test",
"IsApproved": 1,
"ApprovedBy": null,
"ApproveDeclineOn": null,
"ManagerRemarks": null,
"LV1IsApproved": null,
"LV2IsApproved": null,
"LV3IsApproved": null,
"LV4IsApproved": null,
"LV5IsApproved": null,
"LV1ManagerRemarks": null,
"LV2ManagerRemarks": null,
"LV3ManagerRemarks": null,
"LV4ManagerRemarks": null,
"LV5ManagerRemarks": null,
"LV1ApproveDeclineOn": null,
"LV2ApproveDeclineOn": null,
"LV3ApproveDeclineOn": null,
"LV4ApproveDeclineOn": null,
"LV5ApproveDeclineOn": null,
"ClientId": null,
"TaskStartLattitude": null,
"TaskStartLongitude": null,
"TaskStartLocation": "",
"TaskEndLattitude": null,
"TaskEndLongitude": null,
"TaskEndLocation": null,
"TaskTitle": null,
"TaskStatus": null,
"TaskCategoryId": null,
"IsNextDayEntry": null,
"AppliedBy": null,
"is_delete": 0,
"created_at": "2024-03-05T07:09:00.000000Z",
"updated_at": "2024-03-05T07:11:35.000000Z"
},
"message": "Outdoor Entry Retrieved Successfully."
}
Example response (400, Outdoor Entry Not Found):
{
"status": false,
"code": 400,
"message": "Outdoor Entry Not Found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete Employee Outdoor
requires authentication
This endpoint is used to delete employee outdoor entry from the database.
Example request:
curl --request DELETE \
"https://app.timetaag.com/api/v1/DeleteEmpOutdoors/10" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Accept: application/json"
const url = new URL(
"https://app.timetaag.com/api/v1/DeleteEmpOutdoors/10"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());
Example response (200, Delete Outdoor entry):
{
"status": true,
"code": 200,
"message": "Outdoor Entry Updated Successfully."
}
Example response (400, Outdoor Entry Not Found):
{
"status": false,
"code": 400,
"message": "Outdoor Entry Not Found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Add Employee Outdoor
requires authentication
This endpoint is used to add employee outdoor entry to the database.
Example request:
curl --request POST \
"https://app.timetaag.com/api/v1/AddEmpOutdoors" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Idempotency-Key: base64_encode(\'body\')" \
--header "Accept: application/json" \
--data "{
\"employee_code\": \"1,2\",
\"from_date\": \"2024-01-01\",
\"to_date\": \"2024-01-01\",
\"start_time\": \"3:15 PM\",
\"end_time\": \"3:15 PM\",
\"out_type\": 1,
\"remarks\": \"test\"
}"
const url = new URL(
"https://app.timetaag.com/api/v1/AddEmpOutdoors"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Idempotency-Key": "base64_encode('body')",
"Accept": "application/json",
};
let body = {
"employee_code": "1,2",
"from_date": "2024-01-01",
"to_date": "2024-01-01",
"start_time": "3:15 PM",
"end_time": "3:15 PM",
"out_type": 1,
"remarks": "test"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (200, Add a Outdoor entry):
{
"status": true,
"code": 200,
"data": [
{
"StaffId": "128",
"OutDoorType": "2",
"StartDateTime": "2024-03-05 15:15:00",
"EndDateTime": "2024-03-06 16:15:00",
"IsApproved": "0",
"Remarks": null,
"TotalDays": 2,
"updated_at": "2024-03-05T07:09:00.000000Z",
"created_at": "2024-03-05T07:09:00.000000Z",
"id": 4
}
],
"message": "Employee Outdoor assigned Successfully."
}
Example response (400, Validation Error):
{
"status": false,
"code": 400,
"message": "Validation Error.",
"data": {
"employee_code": [
"validation.required"
],
"from_date": [
"validation.required"
],
"to_date": [
"validation.required"
],
"start_time": [
"validation.required"
],
"end_time": [
"validation.required"
],
"out_type": [
"validation.required"
],
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update Employee Outdoor
requires authentication
This endpoint is used to update employee outdoor entry to the database.
Example request:
curl --request PATCH \
"https://app.timetaag.com/api/v1/UpdateEmpOutdoors/14" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Idempotency-Key: base64_encode(\'body\')" \
--header "Accept: application/json" \
--data "{
\"employee_code\": \"1,2\",
\"from_date\": \"2024-01-01\",
\"to_date\": \"2024-01-01\",
\"start_time\": \"3:15 PM\",
\"end_time\": \"3:15 PM\",
\"out_type\": 1,
\"remarks\": \"test\"
}"
const url = new URL(
"https://app.timetaag.com/api/v1/UpdateEmpOutdoors/14"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Idempotency-Key": "base64_encode('body')",
"Accept": "application/json",
};
let body = {
"employee_code": "1,2",
"from_date": "2024-01-01",
"to_date": "2024-01-01",
"start_time": "3:15 PM",
"end_time": "3:15 PM",
"out_type": 1,
"remarks": "test"
};
fetch(url, {
method: "PATCH",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (200, Update Outdoor entry):
{
"status": true,
"code": 200,
"data": {
"StaffOutDoorEntryId": 4,
"StaffId": "128",
"OutDoorType": "2",
"StartDateTime": "2024-03-01 15:15:00",
"EndDateTime": "2024-03-05 16:15:00",
"TotalDays": "2",
"AppliedDate": null,
"Remarks": "test",
"IsApproved": 1,
"ApprovedBy": null,
"ApproveDeclineOn": null,
"ManagerRemarks": null,
"LV1IsApproved": null,
"LV2IsApproved": null,
"LV3IsApproved": null,
"LV4IsApproved": null,
"LV5IsApproved": null,
"LV1ManagerRemarks": null,
"LV2ManagerRemarks": null,
"LV3ManagerRemarks": null,
"LV4ManagerRemarks": null,
"LV5ManagerRemarks": null,
"LV1ApproveDeclineOn": null,
"LV2ApproveDeclineOn": null,
"LV3ApproveDeclineOn": null,
"LV4ApproveDeclineOn": null,
"LV5ApproveDeclineOn": null,
"ClientId": null,
"TaskStartLattitude": null,
"TaskStartLongitude": null,
"TaskStartLocation": "",
"TaskEndLattitude": null,
"TaskEndLongitude": null,
"TaskEndLocation": null,
"TaskTitle": null,
"TaskStatus": null,
"TaskCategoryId": null,
"IsNextDayEntry": null,
"AppliedBy": null,
"is_delete": 0,
"created_at": "2024-03-05T07:09:00.000000Z",
"updated_at": "2024-03-05T07:11:35.000000Z"
},
"message": "Outdoor Entry Updated Successfully."
}
Example response (400, Outdoor Entry Not Found):
{
"status": false,
"code": 400,
"message": "Outdoor Entry Not Found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Reports
APIs for managing Reports
Get Daily Reports
requires authentication
This endpoint is used to fetch daily reports available in the database.
Example request:
curl --request POST \
"https://app.timetaag.com/api/v1/GetProcessData" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Idempotency-Key: base64_encode(\'body\')" \
--header "Accept: application/json" \
--data "{
\"fdate\": \"2024-01-01\",
\"tdate\": \"2024-03-01\",
\"calculate\": 0,
\"report\": \"basic\",
\"group1\": 0,
\"group2\": \"LocationId\",
\"sort_column\": 0,
\"client_db_name\": \"tt_10000\",
\"emp_code\": 1,
\"emp_ids\": \"1,2\",
\"designation\": 1,
\"location\": 1,
\"att_set\": 1,
\"department\": 1,
\"branch\": 1,
\"page\": 1,
\"per_page\": 10
}"
const url = new URL(
"https://app.timetaag.com/api/v1/GetProcessData"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Idempotency-Key": "base64_encode('body')",
"Accept": "application/json",
};
let body = {
"fdate": "2024-01-01",
"tdate": "2024-03-01",
"calculate": 0,
"report": "basic",
"group1": 0,
"group2": "LocationId",
"sort_column": 0,
"client_db_name": "tt_10000",
"emp_code": 1,
"emp_ids": "1,2",
"designation": 1,
"location": 1,
"att_set": 1,
"department": 1,
"branch": 1,
"page": 1,
"per_page": 10
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (200, Get all Reports):
{
"status": true,
"code": 200,
"data": [
{
"list": [
{
"ProcessDataId": 311,
"emp_code": "112",
"ProcessDataDate": "2024-01-01 00:00:00",
"StaffId": 112,
"StaffInTime": null,
"StaffInBiometricID": null,
"StaffOutTime": null,
"StaffOutBiometricId": null,
"WorkDurationMins": 0,
"BreakDurationMins": 0,
"LateEnteredBy": null,
"EarlyDepartureBy": null,
"LeaveTypeId": null,
"LeaveStatus": null,
"IsOnOutDoor": null,
"WeeklyOff": 0,
"Holiday": null,
"PunchRecords": null,
"ShiftsId": 4,
"ShiftStartTime": "2024-01-01 08:00",
"ShiftEndTime": "2024-01-01 18:00",
"Present": 1,
"Absent": 0,
"DetailedStatus": "Marked As Absent",
"Status": null,
"DetailedStatusCode": null,
"StatusCode": "A",
"Session1Status": null,
"Session2Status": null,
"OverTime": 1,
"IsOutPunchMissed": 0,
"IsInPunchMissed": 0,
"Remarks": null,
"TotalDurationMIns": 0,
"OverTime1": null,
"OverTime2": null,
"OverTime3": null,
"WorkDurationStr": null,
"TotalDurationStr": null,
"LateByDurationStr": null,
"EarlyByDurationStr": null,
"OverTimeDurationStr": null,
"InTimeDurationStr": null,
"OutTimeDurationStr": null,
"UniqueStatusCode": null,
"LeaveTypeId2": null,
"LeaveStatus2": null,
"BranchId": 1,
"DeptId": 3,
"AttSettingId": 1,
"attendance_setting": "",
"LocationId": 1,
"DesignationId": 1,
"EmploymentTypeId": 1,
"Session1InTime": null,
"Session1OutTime": null,
"Session1PunchRecords": null,
"Session2InTime": null,
"Session2OutTime": null,
"Session2PunchRecords": null,
"ProductionDurationStr": null,
"OverAllDuration": 0,
"LastModifiedDate": null,
"created_at": "2024-03-05 15:27:51",
"updated_at": "2024-03-05 15:27:51",
"ISFlexiShift": "0",
"emp_name": "CJ Sanoop",
"dept_name": "Human Resources",
"name": "Default",
"loc_name": "DefaultLoc",
"AttSettingName": "Default",
"ShiftCode": "GS",
"weekday": "Monday"
},
],
"summary": {
"total_present": 52,
"total_weekly_off": 9
},
},
],
"message": "Retrieved Successfully."
}
Example response (400, Validation Error):
{
"status": false,
"code": 400,
"message": "Validation Error.",
"data": {
"fdate": [
"validation.required"
],
"tdate": [
"validation.required"
],
"calculate": [
"validation.required"
],
"report": [
"validation.required"
],
"group1": [
"validation.required"
],
"group2": [
"validation.required"
],
"sort_column": [
"validation.required"
],
"client_db_name": [
"validation.required"
],
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Shifts
APIs for managing Shifts
Get Shifts
requires authentication
This endpoint is used to fetch all shifts available in the database.
Example request:
curl --request GET \
--get "https://app.timetaag.com/api/v1/GetShifts" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Accept: application/json"
const url = new URL(
"https://app.timetaag.com/api/v1/GetShifts"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200, Get all Shifts):
{
"status": true,
"code": 200,
"data": [
{
"ShiftId": 5,
"ShiftName": "Flexible Shift",
"ShiftCode": "FS",
"ShiftStartTime": null,
"ShiftEndTime": null,
"PunchStartFromMins": null,
"PunchEndAfterMins": null,
"ShiftBreakStartTime": null,
"ShiftBreakEndTime": null,
"HalfDay": null,
"HalfDayOccurence": "",
"HalfDayDuration": "0",
"HalfDayShiftEndTime": null,
"IsFlexiShift": "1",
"FlexiShiftDuration": "540",
"FlexiShiftBreakDuration": "60",
"IsFlexiShiftEndNextDay": null,
"FlexiShiftEndBy": "23:59",
"created_at": "2023-04-27T20:25:54.000000Z",
"updated_at": "2023-04-27T20:25:54.000000Z"
},
],
"meta": {
"current_page": 1,
"from": 1,
"last_page": 3,
"links": {
"first": "https://app.timetaag.com/api/v1/GetShifts?page=1",
"last": "https://app.timetaag.com/api/v1/GetShifts?page=3",
"prev": null,
"next": "https://app.timetaag.com/api/v1/GetShifts?page=2"
},
"path": "https://app.timetaag.com/api/v1/GetShifts",
"per_page": 10,
"to": 10,
"total": 23
},
"message": "Shifts Retrieved Successfully."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Single Shift
requires authentication
This endpoint is used to get a single shift from the database.
Example request:
curl --request GET \
--get "https://app.timetaag.com/api/v1/GetShift/11" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Accept: application/json"
const url = new URL(
"https://app.timetaag.com/api/v1/GetShift/11"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200, Get a Single Shift):
{
"status": true,
"code": 200,
"data": {
"ShiftName": "abc",
"ShiftCode": "abc",
"IsFlexiShift": "0",
"ShiftStartTime": "04:30",
"ShiftEndTime": "05:30",
"ShiftBreakStartTime": "04:30",
"ShiftBreakEndTime": "05:30",
"HalfDay": "Wednesday",
"HalfDayOccurence": "1,2",
"HalfDayDuration": "2",
"PunchStartFromMins": "1",
"PunchEndAfterMins": "3",
"FlexiShiftDuration": "3",
"FlexiShiftBreakDuration": "2",
"IsFlexiShiftEndNextDay": "0",
"FlexiShiftEndBy": "06:30",
"updated_at": "2024-03-05T09:02:09.000000Z",
"created_at": "2024-03-05T09:02:09.000000Z",
"id": 15
},
"message": "Shift Retrieved Successfully."
}
Example response (400, Shift Not Found):
{
"status": false,
"code": 400,
"message": "Shift Not Found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete Shift
requires authentication
This endpoint is used to delete shift from the database.
Example request:
curl --request DELETE \
"https://app.timetaag.com/api/v1/DeleteShifts/18" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Accept: application/json"
const url = new URL(
"https://app.timetaag.com/api/v1/DeleteShifts/18"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());
Example response (200, Delete a Shift):
{
"status": true,
"code": 200,
"message": "Shift Deleted Successfully."
}
Example response (400, Shift Not Found):
{
"status": false,
"code": 400,
"message": "Shift Not Found.",
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Assign Shifts
requires authentication
This endpoint is used to fetch all assign shifts available in the database.
Example request:
curl --request GET \
--get "https://app.timetaag.com/api/v1/GetAssignShifts" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Accept: application/json"
const url = new URL(
"https://app.timetaag.com/api/v1/GetAssignShifts"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200, Get all Assign Shifts):
{
"status": true,
"code": 200,
"message": "Allocates Retrieved Successfully.",
"data": [
{
"StaffShiftId": 11,
"ShiftId": 4,
"StaffId": 120,
"StartDate": "2024-03-01",
"EndDate": "2024-03-10",
"created_at": "2023-08-23T17:01:41.000000Z",
"updated_at": "2023-10-03T10:52:09.000000Z",
"ShiftName": "General Shift",
"id": 19,
"emp_name": "CJ Talib",
"photo": null,
"emp_code": "120",
"emp_branch": 1,
"gender": "1",
"biomatric_code": "120",
"birth_date": "1990-01-01",
"joindate": "2020-01-01",
"resigning_date": "3000-01-01",
"leave_credit_date": null,
"contact_no": null,
"email": null,
"address": null,
"login_name": null,
"password": null,
"timezone": null,
"imei_number": null,
"allow_in_out": null,
"department": "3",
"emp_type": "1",
"team": "1",
"shift_group": "1",
"food_category": null,
"manager": null,
"holiday_group": null,
"designation": 1,
"location": 1,
"attendance_setting": 1,
"work_status": 1,
"delete_status": 0,
"blocked": 0,
"last_login": null
},
],
"meta": {
"current_page": 1,
"from": 1,
"last_page": 3,
"links": {
"first": "https://app.timetaag.com/api/v1/GetAssignShifts?page=1",
"last": "https://app.timetaag.com/api/v1/GetAssignShifts?page=3",
"prev": null,
"next": "https://app.timetaag.com/api/v1/GetAssignShifts?page=2"
},
"path": "https://app.timetaag.com/api/v1/GetAssignShifts",
"per_page": 10,
"to": 10,
"total": 23
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Single Assign Shift
requires authentication
This endpoint is used to get single assign shift from the database.
Example request:
curl --request GET \
--get "https://app.timetaag.com/api/v1/GetAssignShift/5" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Accept: application/json"
const url = new URL(
"https://app.timetaag.com/api/v1/GetAssignShift/5"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200, Get a Single Assign Shift):
{
"status": true,
"code": 200,
"data": {
"StaffShiftId": 11,
"ShiftId": 4,
"StaffId": 120,
"StartDate": "2024-03-01",
"EndDate": "2024-03-10",
"created_at": "2024-03-01T05:12:48.000000Z",
"updated_at": "2024-03-05T09:19:01.000000Z"
},
"message": "Shift Retrieved Successfully."
}
Example response (400, Shift Not Found):
{
"status": false,
"code": 200,
"message": "Shift Not Found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete Assign Shift
requires authentication
This endpoint is used to delete assign shift from the database.
Example request:
curl --request DELETE \
"https://app.timetaag.com/api/v1/DeleteAssignShifts/13" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Accept: application/json"
const url = new URL(
"https://app.timetaag.com/api/v1/DeleteAssignShifts/13"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());
Example response (200, Delete a Assign Shift):
{
"status": true,
"code": 200,
"message": "Shift Deleted Successfully."
}
Example response (400, Shift Not Found):
{
"status": false,
"code": 400,
"message": "Shift Not Found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Add Shift
requires authentication
This endpoint is used to add shift to the database.
Example request:
curl --request POST \
"https://app.timetaag.com/api/v1/AddShifts" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Idempotency-Key: base64_encode(\'body\')" \
--header "Accept: application/json" \
--data "{
\"ShiftName\": \"Test\",
\"ShiftCode\": \"test\",
\"flexi_shift\": 1,
\"shift_start_time\": \"04:30\",
\"shift_end_time\": \"04:30\",
\"shift_break_start_time\": \"04:30\",
\"shift_break_end_time\": \"04:30\",
\"half_day\": \"Wednesday\",
\"half_day_occurence\": \"1,2\",
\"half_day_duration\": 1,
\"punch_start_from_mins\": 1,
\"punch_end_after_mins\": 1,
\"flexi_shift_duration\": 1,
\"flexi_shift_break_duration\": 1,
\"flexi_shift_end_next_day\": 1,
\"flexi_shift_end_by\": \"06:30\",
\"open_shift_duration\": 1
}"
const url = new URL(
"https://app.timetaag.com/api/v1/AddShifts"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Idempotency-Key": "base64_encode('body')",
"Accept": "application/json",
};
let body = {
"ShiftName": "Test",
"ShiftCode": "test",
"flexi_shift": 1,
"shift_start_time": "04:30",
"shift_end_time": "04:30",
"shift_break_start_time": "04:30",
"shift_break_end_time": "04:30",
"half_day": "Wednesday",
"half_day_occurence": "1,2",
"half_day_duration": 1,
"punch_start_from_mins": 1,
"punch_end_after_mins": 1,
"flexi_shift_duration": 1,
"flexi_shift_break_duration": 1,
"flexi_shift_end_next_day": 1,
"flexi_shift_end_by": "06:30",
"open_shift_duration": 1
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (200, Add a Shift):
{
"status": true,
"code": 200,
"data": {
"ShiftName": "abc",
"ShiftCode": "abc",
"IsFlexiShift": "0",
"ShiftStartTime": "04:30",
"ShiftEndTime": "05:30",
"ShiftBreakStartTime": "04:30",
"ShiftBreakEndTime": "05:30",
"HalfDay": "Wednesday",
"HalfDayOccurence": "1,2",
"HalfDayDuration": "2",
"PunchStartFromMins": "1",
"PunchEndAfterMins": "3",
"FlexiShiftDuration": "3",
"FlexiShiftBreakDuration": "2",
"IsFlexiShiftEndNextDay": "0",
"FlexiShiftEndBy": "06:30",
"updated_at": "2024-03-05T09:02:09.000000Z",
"created_at": "2024-03-05T09:02:09.000000Z",
"id": 15
},
"message": "Shift Created Successfully."
}
Example response (400, Validation Error):
{
"status": false,
"code": 400,
"message": "Validation Error.",
"data": {
"Shift_name": [
"validation.required"
],
"Shift_code": [
"validation.required"
],
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update Shift
requires authentication
This endpoint is used to update shift to the database.
Example request:
curl --request PATCH \
"https://app.timetaag.com/api/v1/UpdateShifts/15" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Idempotency-Key: base64_encode(\'body\')" \
--header "Accept: application/json" \
--data "{
\"ShiftName\": \"Test\",
\"ShiftCode\": \"test\",
\"flexi_shift\": 1,
\"shift_start_time\": \"04:30\",
\"shift_end_time\": \"04:30\",
\"shift_break_start_time\": \"04:30\",
\"shift_break_end_time\": \"04:30\",
\"half_day\": \"Wednesday\",
\"half_day_occurence\": \"1,2\",
\"half_day_duration\": 1,
\"punch_start_from_mins\": 1,
\"punch_end_after_mins\": 1,
\"flexi_shift_duration\": 1,
\"flexi_shift_break_duration\": 1,
\"flexi_shift_end_next_day\": 1,
\"flexi_shift_end_by\": \"06:30\",
\"open_shift_duration\": 1
}"
const url = new URL(
"https://app.timetaag.com/api/v1/UpdateShifts/15"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Idempotency-Key": "base64_encode('body')",
"Accept": "application/json",
};
let body = {
"ShiftName": "Test",
"ShiftCode": "test",
"flexi_shift": 1,
"shift_start_time": "04:30",
"shift_end_time": "04:30",
"shift_break_start_time": "04:30",
"shift_break_end_time": "04:30",
"half_day": "Wednesday",
"half_day_occurence": "1,2",
"half_day_duration": 1,
"punch_start_from_mins": 1,
"punch_end_after_mins": 1,
"flexi_shift_duration": 1,
"flexi_shift_break_duration": 1,
"flexi_shift_end_next_day": 1,
"flexi_shift_end_by": "06:30",
"open_shift_duration": 1
};
fetch(url, {
method: "PATCH",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (200, Update a Shift):
{
"status": true,
"code": 200,
"data": {
"ShiftName": "abc",
"ShiftCode": "abc",
"IsFlexiShift": "0",
"ShiftStartTime": "04:30",
"ShiftEndTime": "05:30",
"ShiftBreakStartTime": "04:30",
"ShiftBreakEndTime": "05:30",
"HalfDay": "Wednesday",
"HalfDayOccurence": "1,2",
"HalfDayDuration": "2",
"PunchStartFromMins": "1",
"PunchEndAfterMins": "3",
"FlexiShiftDuration": "3",
"FlexiShiftBreakDuration": "2",
"IsFlexiShiftEndNextDay": "0",
"FlexiShiftEndBy": "06:30",
"updated_at": "2024-03-05T09:02:09.000000Z",
"created_at": "2024-03-05T09:02:09.000000Z",
"id": 15
},
"message": "Shift Updated Successfully."
}
Example response (400, Shift Not Found):
{
"status": false,
"code": 400,
"message": "Shift Not Found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Add Assign Shift
requires authentication
This endpoint is used to add assign shift to the database.
Example request:
curl --request POST \
"https://app.timetaag.com/api/v1/AddAssignShifts" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Idempotency-Key: base64_encode(\'body\')" \
--header "Accept: application/json" \
--data "{
\"employee_codes\": \"[1,2]\",
\"start_date\": \"2024-03-01\",
\"end_date\": \"2024-03-01\",
\"shift\": \"4\"
}"
const url = new URL(
"https://app.timetaag.com/api/v1/AddAssignShifts"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Idempotency-Key": "base64_encode('body')",
"Accept": "application/json",
};
let body = {
"employee_codes": "[1,2]",
"start_date": "2024-03-01",
"end_date": "2024-03-01",
"shift": "4"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (200, Add a Assign Shift):
{
"status": true,
"code": 200,
"data": [
{
"StaffId": "126",
"ShiftId": "4",
"StartDate": "2024-03-01",
"EndDate": "2024-03-10",
"updated_at": "2024-03-05T09:15:17.000000Z",
"created_at": "2024-03-05T09:15:17.000000Z",
"id": 12
}
],
"message": "Shift Assigned Successfully."
}
Example response (400, Validation Error):
{
"status": false,
"code": 400,
"message": "Validation Error.",
"data": {
"employee_codes": [
"validation.required"
],
"start_date": [
"validation.required"
],
"end_date": [
"validation.required"
],
"shift": [
"validation.required"
],
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update Assign Shift
requires authentication
This endpoint is used to update assign shift to the database.
Example request:
curl --request PATCH \
"https://app.timetaag.com/api/v1/UpdateAssignShifts/11" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "BioTaag-API-Key: YOUR-API-KEY" \
--header "Idempotency-Key: base64_encode(\'body\')" \
--header "Accept: application/json" \
--data "{
\"start_date\": \"2024-03-01\",
\"end_date\": \"2024-03-01\",
\"shift\": \"4\"
}"
const url = new URL(
"https://app.timetaag.com/api/v1/UpdateAssignShifts/11"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"BioTaag-API-Key": "YOUR-API-KEY",
"Idempotency-Key": "base64_encode('body')",
"Accept": "application/json",
};
let body = {
"start_date": "2024-03-01",
"end_date": "2024-03-01",
"shift": "4"
};
fetch(url, {
method: "PATCH",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (200, Update a Assign Shift):
{
"status": true,
"code": 200,
"data": {
"StaffShiftId": 11,
"ShiftId": 4,
"StaffId": 120,
"StartDate": "2024-03-01",
"EndDate": "2024-03-10",
"created_at": "2024-03-01T05:12:48.000000Z",
"updated_at": "2024-03-05T09:19:01.000000Z"
},
"message": "Shift Updated Successfully."
}
Example response (400, Shift Not Found):
{
"status": false,
"code": 200,
"message": "Shift Not Found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.