Explore the Teamwork API data model

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

Pulling data from the Teamwork 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 Teamwork 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

Budget

Documentation: https://developer.teamwork.com/projects/api-v3/ref/budgets/get-projects-api-v3-budgetsjson

Column Type Relates to Notes
RemoteID string - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
ProjectID int Project → ID -
Type string - -
Status string - -
CapacityUsed int - -
Capacity int - -
IsRepeating boolean - -
RepeatPeriod int - -
RepeatUnit string - -
RepeatsRemaining int - -
SequenceNumber int - -
StartDateTime datetime - -
EndDateTime datetime - -
CurrencyCode string - -
TimelogType string - -
ExpenseType string - -
DefaultRate decimal - -
CreatedByUserID int Person → ID -
DateCreated datetime - -
UpdatedByUserID int Person → ID -
DateUpdated datetime - -

Milestone

Documentation: https://developer.teamwork.com/projects/api-v1/ref/milestones/get-milestones-json

Column Type Relates to Notes
RemoteID string - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
Name string - -
Description string - -
Deadline string - -
Completed boolean - -
ProjectID int Project → ID -
CreatedOn datetime - -
LastChangedOn datetime - -
CreatorUserID int Person → ID -
Reminder string - -
IsPrivate boolean - -
Status string - -
UserFollowingComments boolean - -
UserFollowingChanges boolean - -
CanEdit boolean - -
CanComplete boolean - -
CommentsCount int - -

MilestoneAssignee

Column Type Relates to Notes
RemoteID string - -
MilestoneRemoteID string Milestone → RemoteID -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
MileStoneID int Milestone → ID -
PersonID int Person → ID -

Person

Documentation: https://developer.teamwork.com/projects/api-v1/ref/people/get-people-json

Column Type Relates to Notes
RemoteID string - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
CanAccessTemplatesPermission boolean - -
CanViewProjectTemplates boolean - -
CanAddProjectsPermission boolean - -
CanManageCustomFieldsPermission boolean - -
CanManageProjectTemplatesPermission boolean - -
CanAccessCalendarPermission boolean - -
CanViewSchedulePermission boolean - -
CanManagePeoplePermission boolean - -
CanManageScheudlePermission boolean - -
AvatarUrl string - -
CurrentFeatureAnnouncementID string CurrentFeatureAnnouncement → ID -
LastChangedOn datetime - -
EmailAddress string - -
LastLogin datetime - -
DocumentEditorInstalled boolean - -
UserName string - -
PhoneNumberFax string - -
SiteOwner boolean - -
CompanyName string - -
UserInvitedDate string - -
UserType string - -
PhoneNumberMobile string - -
HasFeatureUpdates boolean - -
OpenID string - -
PhoneNumberOffice string - -
ImHandle string - -
TwoFactorAuthEnabled boolean - -
IsClientUser boolean - -
HasAccessToNewProjects boolean - -
ImService string - -
Deleted boolean - -
Notes string - -
InOwnerCompany string - -
Profile string - -
UserInvitedStatus string - -
UserUUID string - -
UserInvited string - -
CreatedAt datetime - -
CompanyID string -
  • 28 Jul 2020 Foreign Key - References `Companies` (not implemented).
HasDeskAccount boolean - -
PhoneNumberHome string - -
ProfileText string - -
PrivateNotesText string - -
Pid string - -
PhoneNumberCountryCode string - -
PhoneNumberPrefix string - -
PhoneNumberPhone string - -
LoginCount string - -
PrivateNotes string - -
EmailAlt1 string - -
Administrator boolean - -
EmailAlt2 string - -
EmailAlt3 string - -
FeatureUpdatesCount string - -
LastName string - -
Title string - -
FirstName string - -
PhoneNumberOfficeExt string - -
Twitter string - -
LengthOfDay string - -

Project

Documentation: https://developer.teamwork.com/projects/api-v2/ref/custom-fields/getprojectsapiv2projectsjson

Column Type Relates to Notes
RemoteID string - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
Name string - -
Description string - -
ReplyByEmailEnabled boolean - -
Starred boolean - -
ShowAnnouncement boolean - -
HarvestTimersEnabled boolean - -
SubStatus string - -
Status string - -
DefaultPrivacy string - -
CreatedOn datetime - -
FilesAutoNewVersion boolean - -
CategoryName string - -
CategoryID string Category → ID -
CategoryColor string - -
OverviewStartPage string - -
Logo string - -
StartDate string - -
Type string - -
EndDate string - -
CompanyID string -
  • 28 Jul 2020 Foreign Key - References `Companies` (not implemented).
TasksStartPage string - -
PrivacyEnabled boolean - -
Announcement string - -
StartPage string - -
Notifyeveryone boolean - -
AnnouncementHTML string - -
LastChangedOn datetime - -

ProjectTag

Column Type Relates to Notes
RemoteID string - -
ProjectRemoteID string Project → RemoteID -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
TagID int Tag → ID
  • 29 Jul 2020 This is the globally unique tag-id, it is not the ProjectTag relationship
ProjectID int Project → ID -

ProjectUpdate

Column Type Relates to Notes
RemoteID string - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
Text string - -
Health int - -
Color string - -
CreatedAt datetime - -
UpdatedAt datetime - -
Deleted boolean - -
ProjectID int Project → ID -
CreatedBy int Person → ID -
ReactionsCountLike int - -
ReactionsCountDislike int - -
ReactionsCountJoy int - -
ReactionsCountFrown int - -
ReactionsCountHeart int - -

Task

Documentation: https://developer.teamwork.com/projects/api-v1/ref/tasks/get-tasks-json

Column Type Relates to Notes
RemoteID string - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
Description string - -
BoardColumnID int - -
BoardColumnName string - -
BoardColumnColor string - -
CardID int - -
CanComplete boolean - -
CommentsCount int - -
HasReminders boolean - -
HasUnreadComments boolean - -
PrivateInt int - -
CompleterID int Person → ID -
Content string - -
Order int - -
ProjectID int Project → ID -
ProjectName string - -
TaskListID int TaskList → ID -
TodoListID int - -
TodoListName string - -
TasklistPrivate boolean - -
TasklistIsTemplate boolean - -
Status string - -
CompanyName string - -
CompanyID int -
  • 28 Jul 2020 Foreign Key - References `Companies` (not implemented).
CreatorID int Person → ID -
CreatorFirstname string - -
CreatorLastname string - -
UpdaterID int Person → ID -
UpdaterFirstname string - -
UpdaterLastname string - -
Completed boolean - -
StartDate string - -
DueDateBase string - -
DueDate string -
  • 21 Jul 2020 Format is yyyyMMdd
CreatedOn datetime - -
Position int - -
EstimatedMinutes int - -
Priority string - -
Progress int - -
HarvestEnabled boolean - -
ParentTaskID int Task → ID -
LockdownID string - -
TasklistLockdownID string - -
HasDependencies int - -
HasPredecessors int - -
HasTickets boolean - -
TimeIsLogged int - -
MinutesLogged decimal - -
BillableMinutesLogged decimal - -
AttachmentsCount int - -
ResponsiblePartyIds string - -
ResponsiblePartyID string - -
ResponsiblePartyNames string - -
ResponsiblePartyType string - -
ResponsiblePartyFirstname string - -
ResponsiblePartyLastname string - -
ResponsiblePartySummary string - -
CanEdit boolean - -
ViewEstimatedTime boolean - -
CreatorAvatarUrl string - -
CanLogTime boolean - -
UserFollowingComments boolean - -
UserFollowingChanges boolean - -
DLM int - -
LastChangedOn datetime - -

ProjectLatestActivity

Documentation: https://developer.teamwork.com/projects/api-v3/ref/activity/get-projects-api-v3-projects-projectid-latestactivity

Column Type Relates to Notes
RemoteID string - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
Description string - -
UserID int Person → ID -
ProjectID int Project → ID -
CompanyID int - -
SctivityType string - -
DateTime datetime - -
ExtraDescription string - -
DueDate string - -
ForUserID int - -
ForUserName string - -
IsPrivate int - -
ItemID int - -
ItemLink string - -
LatestActivityType string - -
Link string - -
LockdownID int - -
PublicInfo string - -
Type string - -

CustomField

Column Type Relates to Notes
RemoteID string - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
Name string - -
Description string - -
ProjectID int - -
Entity string - -
Type string - -
IsPrivate boolean - -
Required boolean - -
CreatedAt datetime - -
CreatedByUserID int - -
UpdatedAt datetime - -
UpdatedByUserID int - -
Deleted boolean - -
DeletedAt datetime - -
DeletedByUserID int - -

ProjectCustomField

Column Type Relates to Notes
RemoteID string - -
ProjectRemoteID string Project → RemoteID -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
CustomFieldID int CustomField → ID -
Value string - -
ProjectID int Project → ID -

CustomFieldOption

Column Type Relates to Notes
RemoteID string - -
CustomFieldRemoteID string CustomField → RemoteID -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
Value string - -
Color string - -
Position int - -
CustomFieldID int - -

TimeLog

Documentation: https://developer.teamwork.com/projects/api-v3/ref/time-tracking/get-projects-api-v3-timejson

Column Type Relates to Notes
RemoteID string - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
Description string - -
CreatedAt datetime - -
Minutes decimal - -
TimeLogged datetime - -
Billable boolean - -
Deleted boolean - -
DeletedAt datetime - -
HasStartTime boolean - -
UpdatedAt datetime - -
DeskTicketID int - -
InvoiceNumber string - -
UserID int Person → ID -
TaskID int Task → ID -
ProjectID int Project → ID -
LoggedByUserID int Person → ID -
DeletedByUserID int Person → ID -
EditedByUserID int Person → ID -
TaskIdPreMove int - -
ProjectBillingInvoiceID int - -

MilestoneTaskList

Column Type Relates to Notes
RemoteID string - -
MilestoneRemoteID string Milestone → RemoteID -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
MileStoneID int Milestone → ID -
TaskListID int TaskList → ID -

TaskList

Documentation: https://developer.teamwork.com/projects/api-v3/ref/task-lists/get-projects-api-v3-projects-projectid-tasklists

Column Type Relates to Notes
RemoteID string - -
ProjectRemoteID string Project → RemoteID -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
Name string - -
Description string - -
DisplayOrder decimal - -
ProjectID int Project → ID -
MilestoneID int Milestone → ID -
IsPinned boolean - -
IsPrivate boolean - -
LockdownID boolean - -
Status string - -
DefaultTaskID int Task → ID -

ProjectPerson

Column Type Relates to Notes
RemoteID string - -
ProjectRemoteID string Project → RemoteID -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
PersonID int Person → ID -
ProjectID int Project → ID -

Tag

Documentation: https://developer.teamwork.com/projects/api-v3/ref/tags/get-projects-api-v3-tagsjson

Column Type Relates to Notes
RemoteID string - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
Name string - -
ProjectID int Project → ID -
Color string - -

TaskTag

Column Type Relates to Notes
RemoteID string - -
TaskRemoteID string Task → RemoteID -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
TagID int Tag → ID
  • 29 Jul 2020 This is the globally unique tag-id, it is not the TaskTag relationship
TaskID int Task → ID -

Risk

Documentation: https://developer.teamwork.com/projects/api-v3/ref/risks/get-projects-api-v3-risksjson

Column Type Relates to Notes
RemoteID string - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
ProjectID int Project → ID -
Source string - -
Probability string - -
ProbabilityValue decimal - -
Impact string - -
ImpactValue decimal - -
ImpactCost boolean - -
ImpactSchedule boolean - -
ImpactPerformance boolean - -
CreatedAt datetime - -
CreatedBy int Person → ID -
UpdatedAt datetime - -
UpdatedBy int Person → ID -
Result decimal - -
MitigationPlan string - -
Status string - -
Deleted boolean - -
CanEdit boolean - -

TaskAssignee

Column Type Relates to Notes
RemoteID string - -
TaskRemoteID string Task → RemoteID -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
PersonID int Person → ID -
TaskID int Task → ID -

Team

Documentation: https://developer.teamwork.com/projects/api-v1/ref/tasks/get-tasks-json

Column Type Relates to Notes
RemoteID string - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
Name string - -
Description string - -
CreatedByUserID int Person → ID -
LogoIcon string - -
DeletedDate datetime - -
Handle string - -
DateUpdated datetime - -
NumMembers int - -
LogoUrl string - -
LogoColor string - -
NumDirectChildren int - -
CanEdit boolean - -
UpdatedByUserID int - -
IsPrivate boolean - -
DateCreated datetime - -
Deleted boolean - -
NumSubteams int - -

TeamMember

Column Type Relates to Notes
RemoteID string - -
TeamRemoteID string Team → RemoteID -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
PersonID int Person → ID -
TeamID int Team → ID -

TaskTeam

Column Type Relates to Notes
RemoteID string - -
TaskRemoteID string Task → RemoteID -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
TeamID int Team → ID -
TaskID int Task → ID -

TaskCustomField

Documentation: https://developer.teamwork.com/projects/api/v3/tasks.json?includeCustomFields=true

Column Type Relates to Notes
RemoteID string - -
TaskRemoteID string Task → RemoteID -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
CustomfieldID int CustomField → ID -
TaskID int Task → ID -
Value string - -
CreatedAt datetime - -
CreatedBy int Person → ID -

Invoice

Documentation: https://apidocs.teamwork.com/docs/teamwork/d7ff00359e06f-get-all-invoices-across-your-projects

Column Type Relates to Notes
RemoteID string - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
Description string - -
ProjectID int Project → ID -
TimeCost decimal - -
FixedCost decimal - -
Status string - -
DateCreated datetime - -
Number string - -
PoNumber string - -
UpdateByUserID int Person → ID -
CreatedByUserID int - -
Pricing string - -
CompanyName string - -
TotalTimeDecimal decimal - -
TotalCost decimal - -
ExpensesCost decimal - -
CompanyID int Company → ID -
TotalTime decimal - -
DisplayDate string - -
DateUpdated datetime - -
CurrencyCode string - -

InvoiceLine

Column Type Relates to Notes
RemoteID string - -
InvoiceRemoteID string Invoice → RemoteID -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
Description string - -
InvoiceID int Invoice → ID -
Minutes decimal - -
DateLoggedUTC datetime - -
Rate decimal - -
DecimalHours decimal - -
Billable int - -
UserID string Person → ID -
TaskID string Task → ID -
Date datetime - -
Cost decimal - -
Hours decimal - -

Company

Documentation: https://apidocs.teamwork.com/docs/teamwork/acfee1f502698-get-all-companies

Column Type Relates to Notes
RemoteID string - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
Name string - -
Accounts int - -
AddressOne string - -
AddressTwo string - -
CanSeePrivate boolean - -
Cid string - -
City string - -
Clients int - -
Collaborators int - -
CompanyNameUrl string - -
Contacts int - -
CountryCode string - -
CreatedAt datetime - -
EmailOne string - -
EmailThree string - -
EmailTwo string - -
Fax string - -
IndustryID int - -
IsOwner boolean - -
LogoUrl string - -
Phone string - -
PrivateNotes string - -
PrivateNotesText string - -
ProfileText string - -
State string - -
UpdatedAt datetime - -
Website string - -
Zip string - -

Allocation

Documentation: https://apidocs.teamwork.com/docs/teamwork/169368b9b19e7-get-all-allocations

Column Type Relates to Notes
RemoteID string - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
Description string - -
InstallationID int - -
ProjectID int Project → ID -
Title string - -
StartedAt datetime - -
EndedAt datetime - -
Duration decimal - -
HoursPerDay decimal - -
Color string - -
Status string - -
DistributeType string - -
CreatedAt datetime - -
UpdatedAt datetime - -
DeletedAt datetime - -
CreatedBy int Person → ID -
UpdatedBy int Person → ID -
DeletedBy int Person → ID -
AssignedUserID int Person → ID -
RecurringRule string - -

Event

Documentation: https://apidocs.teamwork.com/docs/teamwork/2714bb8ca5e74-get-events

Column Type Relates to Notes
RemoteID string - -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
ID int - -
Description string - -
Title string - -
Where string - -
SequenceID long - -
ProjectUsersCanEdit boolean - -
AttendeesCanEdit boolean - -
Status string - -
DateDeleted datetime - -
DeletedByUserID int Person → ID -
DeletedByUserFirstName string - -
DeletedByUserLastName string - -
Utc boolean - -
CanEdit boolean - -
AllDay boolean - -
IsUnavailable boolean - -
AttendingUserNames string - -
AttendingUserFirstNames string - -
AttendingUserLastNames string - -
AttendingUserCompanyIDs string - -
AttendingUserCompanyNames string - -
AttendingUserAvatarURLs string - -
NotifyUserNames string - -
NotifyUserFirstNames string - -
NotifyUserLastNames string - -
NotifyUserAvatarURLs string - -
ShowAsBusy boolean - -
LastChangedOn datetime - -
CreatedAt datetime - -
Start datetime - -
End datetime - -
OwnerID int Person → ID -
OwnerFirstName string - -
OwnerLastName string - -
OwnerAvatarURL string - -
TypeID long -
  • 16 Mar 2023 Foreign Key for EventTypes which is currently unimplemented
TypeColor string - -
TypeName string - -
RepeatFrequency string - -
RepeatEnds boolean - -
RepeatEndDate datetime - -

EventReminder

Column Type Relates to Notes
RemoteID string - -
EventRemoteID string Event → RemoteID -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
Iterator int - -
EventID int Event → ID
  • 16 Mar 2023 This is the id of the event, not the reminder
Before int - -
Period string - -
Type string - -

EventAttendingUser

Column Type Relates to Notes
RemoteID string - -
EventRemoteID string Event → RemoteID -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
EventID int Event → ID -
PersonID int Person → ID -

EventNotifyUser

Column Type Relates to Notes
RemoteID string - -
EventRemoteID string Event → RemoteID -
MirrorRemoteID int - -
IsDeleted boolean - -
WhenCreated datetime - -
WhenModified datetime - -
EventID int Event → ID -
PersonID int Person → ID -

Need more?

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