2024 is the year of the connector - vote here

Explore the Tanda API data model

See how the various Tanda endpoints relate to each other, using our handy Entity Relationship Diagram

Pulling data from the Tanda API is only the first part of your reporting. You also need to understand the relationships between different endpoints - something that APIs typically fail to convey.

At SyncHub, we not only sync your Tanda API endpoints down into a reportable format, we also describe their relationships (e.g. in terms of foreign keys) so that you can quickly get a grasp of your data and how it fits together. This page is intended as technical documentation of these relationships.

Endpoints

Allowance

Column Type Relates to Notes
RemoteID string - -
ShiftRemoteID string Shift → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
Name string - -
Value decimal - -
Cost decimal - -
ShiftID int Shift → ID -

AwardTag

Documentation: https://my.tanda.co/api/v2/documentation#award-tags

Column Type Relates to Notes
RemoteID string - -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
Name string - -
UpdatedAt decimal - -

AwardTemplate

Documentation: https://my.tanda.co/api/v2/documentation#award-templates

Column Type Relates to Notes
RemoteID string - -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
Name string - -
AwardTemplateID int - -
Identifier string - -
UpdatedAt decimal - -

Break

Documentation: https://my.tanda.co/api/v2/documentation#shifts

Column Type Relates to Notes
RemoteID string - -
ShiftRemoteID string Shift → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
ShiftID int Shift → ID -
Start decimal - -
Finish decimal - -
Length decimal - -
Paid boolean - -
WhenStart datetime - -
WhenFinish datetime - -
UpdatedAt decimal - -

ClockIn

Documentation: https://my.tanda.co/api/v2/documentation#clock-ins

Column Type Relates to Notes
RemoteID string - -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
UserID int User → ID -
DeviceID int -
  • 14 Jul 2020 Foreign Key - References `Device` (not implemented).
Time decimal - -
Type string - -
Latitude decimal - -
Longitude decimal - -
Photo string - -
DepartmentID int Team → ID -
ShiftID int Shift → ID -
Removed boolean - -
WhenClockedIn datetime - -
UpdatedAt decimal - -

CustomEvent

Documentation: https://my.tanda.co/api/v2/documentation#custom-events

Column Type Relates to Notes
RemoteID string - -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
Name string - -
OrganisationID int Organisation → ID -
Start string - -
Finish string - -
DiscourageTimeOff boolean - -
UpdatedAt decimal - -

LeaveBalance

Documentation: https://my.tanda.co/api/v2/documentation#leave-balances

Column Type Relates to Notes
RemoteID string - -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
UserID int User → ID -
LeaveType string - -
Hours decimal - -
ShouldAccrue boolean - -
UpdatedAt decimal - -

LeaveRequest

Documentation: https://my.tanda.co/api/v2/documentation#leave-requests-leave-list-get

Column Type Relates to Notes
RemoteID string - -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
DepartmentID int Team → ID
  • 4 Feb 2022 Departments are also referred to as Teams in Tanda
UserID int User → ID -
Reason string - -
LeaveType string - -
Hours decimal - -
Start datetime - -
Finish datetime - -
StartTime datetime - -
FinishTime datetime - -
Status string - -
Multitagging string - -
AllDay boolean - -
UpdatedAt decimal - -

Location

Documentation: https://my.tanda.co/api/v2/documentation#locations

Column Type Relates to Notes
RemoteID string - -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
TimeZone string - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
Name string - -
ShortName string - -
Latitude decimal - -
Longitude decimal - -
Address string - -
UtcOffset decimal - -
BusinessDayCutoff int - -
UpdatedAt decimal - -

LocationSalesTarget

Documentation: https://my.tanda.co/api/v2/documentation#rosters-sales-targets-for-location-get

Column Type Relates to Notes
RemoteID string - -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
Target decimal - -
CreatedAt decimal - -
UserEntered boolean - -
Date string - -
LocationID int Location → ID -
UpdatedAt decimal - -

Organisation

Documentation: https://my.tanda.co/api/v2/documentation#organisations

Column Type Relates to Notes
RemoteID string - -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
TimeZone string - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
Name string - -
PayrollSystem string - -
Country string - -
Locale string - -
Industry string - -
UpdatedAt decimal - -

Qualification

Documentation: https://my.tanda.co/api/v2/documentation#qualifications

Column Type Relates to Notes
RemoteID string - -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
Name string - -
MaximumHours decimal - -
UpdatedAt decimal - -

Roster

Documentation: https://my.tanda.co/api/v2/documentation#rosters

Column Type Relates to Notes
RemoteID string - -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
Start string - -
Finish string - -

SalesTarget

Documentation: https://my.tanda.co/api/v2/documentation#rosters-sales-targets

Column Type Relates to Notes
RemoteID string - -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
Target decimal - -
CreatedAt decimal - -
UserEntered boolean - -
Date string - -
UpdatedAt decimal - -

Schedule

Documentation: https://my.tanda.co/api/v2/documentation#schedules-schedules-get-1

Column Type Relates to Notes
RemoteID string - -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
TimeZone string - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
RosterID int Roster → ID -
UserID int User → ID -
Start decimal -
  • 30 Jan 2023 We have observed records coming down without start/finish times set
Finish decimal -
  • 30 Jan 2023 We have observed records coming down without start/finish times set
AutomaticBreakLength decimal - -
DepartmentID int Team → ID -
ShiftDetailID int ShiftDetail → ID -
Cost decimal - -
LastPublishedAt decimal - -
LastAcknowledgedAt decimal -
  • 17 Jan 2024 Unlike other dates in this payload, the last_acknowledged_at field comes down in ISO format, not unix epoch.
UtcOffset decimal - -
NeedsAcceptance boolean - -
RecordID int - -
LastCostedAt decimal - -
AcceptanceStatus string - -
WhenLastCosted datetime - -
WhenLastAcknowledged datetime - -
WhenLastPublished datetime - -
WhenStart datetime - -
WhenFinish datetime - -
UpdatedAt decimal - -

Shift

Documentation: https://my.tanda.co/api/v2/documentation#shifts

Column Type Relates to Notes
RemoteID string - -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
TimesheetID int Timesheet → ID -
UserID int User → ID -
Date string - -
Start decimal - -
Finish decimal - -
BreakStart decimal - -
BreakFinish decimal - -
BreakLength decimal - -
Status string - -
Tag string - -
TagID int - -
SubCostCentre string - -
Cost decimal - -
LastCostedAt decimal - -
WhenLastCosted datetime - -
AwardCost decimal - -
AllowanceCost decimal - -
DepartmentID int Team → ID -
Metadata string - -
LeaveRequestID int -
  • 14 Jul 2020 Foreign key - References `LeaveRequest` (not implemented).
WhenStart datetime - -
WhenFinish datetime - -
WhenBreakStart datetime - -
WhenBreakFinish datetime - -
UpdatedAt decimal - -

ShiftDetail

Documentation: https://my.tanda.co/api/v2/documentation#shift-details-shift-detail

Column Type Relates to Notes
RemoteID string - -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
Name string - -
DepartmentID int Team → ID -
UpdatedAt decimal - -

Team

Documentation: https://my.tanda.co/api/v2/documentation#teams-(departments)

Column Type Relates to Notes
RemoteID string - -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
Name string - -
LocationID int Location → ID -
ExportName string - -
Colour string - -
UpdatedAt decimal - -

TeamSalesTarget

Documentation: https://my.tanda.co/api/v2/documentation#rosters-sales-targets

Column Type Relates to Notes
RemoteID string - -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
Target decimal - -
CreatedAt decimal - -
UserEntered boolean - -
Date string - -
TeamID int Team → ID -
UpdatedAt decimal - -

TimeclockQuestion

Documentation: https://my.tanda.co/api/v2/documentation#timeclock-questions-timeclock-questions-list-get

Column Type Relates to Notes
RemoteID string - -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
Question string - -
TriggerOn string - -
Condition string - -
Type string - -
Lenience decimal - -
Process string - -
UpdatedAt decimal - -

Timesheet

Documentation: https://my.tanda.co/api/v2/documentation#timesheets

Column Type Relates to Notes
RemoteID string - -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
UserID int User → ID -
Start string - -
Finish string - -
Status string - -
Cost decimal - -
UpdatedAt decimal - -

User

Documentation: https://my.tanda.co/api/v2/documentation#staff-(users)

Column Type Relates to Notes
RemoteID string - -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
TimeZone string - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
Name string - -
DateOfBirth string - -
EmploymentStartDate string - -
EmployeeID string -
  • 3 Aug 2020 Note - not a user_id foreign key reference. It is just an optional id for employees.
PreferredHours decimal - -
AwardTemplateID int AwardTemplate → ID -
ReportDepartmentID int Team → ID -
Active boolean - -
Email string - -
Photo string - -
Phone string - -
NormalisedPhone string - -
Salary decimal - -
HourlyRate decimal - -
UtcOffset decimal - -
PartTimeFixedHours decimal - -
ExpectedHoursInPayPeriod decimal - -
DaysOvertimeAveragedOver decimal - -
OvertimeCalculatedOverPeriodStart string - -
CreatedAt decimal - -
UpdatedAt decimal - -

CustomEventTeam

Column Type Relates to Notes
RemoteID string - -
CustomEventRemoteID string CustomEvent → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
CustomEventID int CustomEvent → ID -
TeamID int Team → ID -

LeaveRequestDailyBreakdown

Column Type Relates to Notes
RemoteID string - -
LeaveRequestRemoteID string LeaveRequest → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID string -
  • 16 Feb 2021 If a leave request is rejected or deleted, Tanda changes the id from integer to string. For example the id would change from `93796060` to `i2021-01-01` in all the DailyBreakdown objects.
LeaveID int LeaveRequest → ID -
Date datetime - -
AllDay boolean - -
DepartmentID int - -
StartTime datetime - -
FinishTime datetime - -
Hours decimal - -
IsHoliday boolean - -
TimesheetOnThisDayIsExported boolean - -
FilledFrom string - -

ScheduleBreak

Column Type Relates to Notes
RemoteID string - -
ScheduleRemoteID string Schedule → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ScheduleID int Schedule → ID -
Start decimal -
  • 30 Jan 2023 We have observed records coming down without start/finish times set
Finish decimal -
  • 30 Jan 2023 We have observed records coming down without start/finish times set
Paid boolean -
  • 30 Jan 2023 This field is not documented, however we have observed it coming down in some payloads
WhenStart datetime - -
WhenFinish datetime - -

ScheduleAwardInterpretation

Column Type Relates to Notes
RemoteID string - -
ScheduleRemoteID string Schedule → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ScheduleID int Schedule → ID -
Units decimal - -
Date string - -
ExportName string - -
SecondaryExportName string - -
PayClass string - -
OrdinaryHours boolean - -
Cost decimal - -
From decimal - -
To decimal - -
WhenFrom datetime - -
WhenTo datetime - -

ShiftAwardInterpretation

Column Type Relates to Notes
RemoteID string - -
ShiftRemoteID string Shift → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
Name string - -
SortOrder int - -
Units decimal - -
Date string - -
ExportName string - -
SecondaryExportName string - -
OrdinaryHours boolean - -
Cost decimal - -
From int - -
To int - -
WhenFrom datetime - -
WhenTo datetime - -
ShiftID int Shift → ID -

TimesheetAwardInterpretation

Column Type Relates to Notes
RemoteID string - -
TimesheetRemoteID string Timesheet → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
Name string - -
TimeSheetID int Timesheet → ID -
SortOrder int - -
Units decimal - -
Date string - -
ExportName string - -
SecondaryExportName string - -
OrdinaryHours boolean - -
Cost decimal - -
From int - -
To int - -
WhenFrom datetime - -
WhenTo datetime - -
ShiftID int Shift → ID -

UserQualification

Column Type Relates to Notes
RemoteID string - -
UserRemoteID string User → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
UserID int User → ID -
QualificationID int Qualification → ID -
Enabled boolean - -
LicenseNumber string - -
Expires string - -
InTraining boolean - -

UserAwardTag

Column Type Relates to Notes
RemoteID string - -
UserRemoteID string User → RemoteID -
WhenUpsertedIntoDataStore datetime - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
UserID int User → ID -
AwardTagID int AwardTag → ID -

Need more?

SyncHub lives and breathes APIs and data. Keep exploring using the links below.