Timekeeping

Overview

The Timekeeping API provides access to instructor time records and paid activity data from flaik. This enables seamless integration with payroll systems, labor reporting tools, and workforce analytics platforms.

Authentication

All Timekeeping endpoints require authentication. Include your access token in the Authorization header:

Authorization: Bearer {access_token}

See the Authentication Guide for details on obtaining access tokens.

Endpoints

Get Paid Activities by Date Range

Retrieves paid activity records for all instructors within a specified date range, with optional filtering by update timestamp.

GET {api-url}/api/timekeeping/paidactivities/paidactivitiesbydaterange

Query Parameters:

Parameter
Type
Required
Description

seasonId

integer

Yes

Season identifier (get from )

startDate

string

Yes

Start date for activity search (YYYY-MM-DD format)

endDate

string

Yes

End date for activity search (YYYY-MM-DD format)

updatedAfterLocalDateTime

string

Yes

Only return records updated after this timestamp (YYYY-MM-DDTHH:mm:ss format)

Example Request:

GET {api-url}/api/timekeeping/paidactivities/paidactivitiesbydaterange?seasonId=17&startDate=2024-07-22&endDate=2024-07-25&updatedAfterLocalDateTime=2024-07-22T00:00:00
Authorization: Bearer {access_token}

Response Format:


  [
	{
		"seasonId": 17,
		"seasonName": "2024/2025",
		"payrollId": "EMP123456",
		"employeeIdentifier": "11122258",
		"employeeName": "Employee Name",
		"flaikEmployeeId": 15,
		"timesheetId": 46727,
		"timesheetStatus": "Finalized",
		"timesheetDate": "2024-12-07T00:00:00",
		"paidActivityGroupId": 1,
		"paidActivityGroupName": "Private",
		"paidActivityId": 1,
		"paidActivityName": "Private Assigned Lesson",
		"startTime": "09:30:00",
		"endTime": "12:00:00",
		"paidActivityType": "1",
		"durationMinutes": 150,
		"wageTypeUsedForCalculation": 1,
		"calculatedWageValue": 88.925,
		"calculatedCommissionValue": 0,
		"totalCalculatedValue": 88.925,
		"businessStructureId": 1,
		"businessStructureName": "Ski School 123456",
		"costCentre": "354029",
		"exportBusinessStructureName": "123456",
		"externalId": "456789",
		"locationName": "Ski School",
		"parentPath": "Ski & Ride Lessons",
		"payCodeId": null,
		"payCodeName": "",
		"payCodeType": "",
		"payCodeCostCentre": "",
		"jobCodeId": null,
		"jobCodeName": "",
		"jobCodeType": "",
		"jobCodeCostCentre": ""
	},
	... ... ...
]

Performance Considerations

Optimize Date Ranges

  • Maximum range: 31 days per request

  • Recommended: Request 1-7 days

  • For historical data: Use multiple smaller requests with appropriate delays

Incremental Sync Strategy

  • Use updatedAfterLocalDateTime to only retrieve changed records

  • Store last sync timestamp for each successful operation


Need help with timekeeping data integration? Contact [email protected] with specific questions about data formats or integration patterns.

Last updated

Was this helpful?