Skip to content

SDK Domains (Read Methods)

Every domain exposes auto-generated read methods — one per GET endpoint in the OpenAPI spec. Method names follow {resource}{Qualifier} pattern (e.g. appIdTicketsId = GET /api/{appId}/tickets/{id}).

Parameter convention

Read methods accept a single options object with params.path and params.query:

ts
client.{domain}.{methodName}({
  params?: {
    path?: { [paramName]: string | number }
    query?: Record<string, string | undefined>
  }
})

All methods return Promise<unknown>. The response type corresponds to the OpenAPI schema for that endpoint. Use projectFields() to narrow the response to known fields.

Application IDs

Methods marked needs appId require appId as a path parameter. This is the numeric Application ID from TeamDynamix (visible in the URL bar when viewing an app in the web UI).


client.discovery

MethodHTTPPathDescription
applications()GET/api/applicationsList all applications
authGetuser()GET/api/auth/getuserGet current auth user info
authLoginsso()GET/api/auth/loginssoSSO login status
ts
const apps = await client.discovery.applications()

client.tickets

Methodneeds appIdHTTPPath
appIdTicketsBlackoutwindows()YesGET/{appId}/tickets/blackoutwindows
appIdTicketsBlackoutwindowsId()YesGET/{appId}/tickets/blackoutwindows/{id}
appIdTicketsImpacts()YesGET/{appId}/tickets/impacts
appIdTicketsPriorities()YesGET/{appId}/tickets/priorities
appIdTicketsSearches()YesGET/{appId}/tickets/searches
appIdTicketsSources()YesGET/{appId}/tickets/sources
appIdTicketsTypes()YesGET/{appId}/tickets/types
appIdTicketsTypesId()YesGET/{appId}/tickets/types/{id}
appIdTicketsUrgencies()YesGET/{appId}/tickets/urgencies
appIdTicketsId()YesGET/{appId}/tickets/{id}
appIdTicketsIdConfigurationItems()YesGET/{appId}/tickets/{id}/configurationItems
appIdTicketsFeed()YesGET/{appId}/tickets/feed
appIdTicketsForms()YesGET/{appId}/tickets/forms
appIdTicketsResources()YesGET/{appId}/tickets/resources
appIdTicketsResponseTemplates()YesGET/{appId}/tickets/responseTemplates
appIdTicketsIdWorkflow()YesGET/{appId}/tickets/{id}/workflow
appIdTicketsIdWorkflowActions()YesGET/{appId}/tickets/{id}/workflow/actions
ts
// Get a specific ticket
const ticket = await client.tickets.appIdTicketsId({
  params: { path: { appId: 1, id: 456 } },
})

// Search saved reports
const searches = await client.tickets.appIdTicketsSearches({
  params: { path: { appId: 1 } },
})

// Ticket feed (paginated)
const feed = await client.tickets.appIdTicketsFeed({
  params: {
    path: { appId: 1 },
    query: { Page: '1', PageSize: '50' },
  },
})

client.ticketRelationships

Methodneeds appIdHTTPPath
appIdTicketsTicketIdTasks()YesGET/{appId}/tickets/{ticketId}/tasks
appIdTicketsTicketIdTasksId()YesGET/{appId}/tickets/{ticketId}/tasks/{id}
appIdTicketsTicketIdTasksIdFeed()YesGET/{appId}/tickets/{ticketId}/tasks/{id}/feed
appIdTicketsIdAssets()YesGET/{appId}/tickets/{id}/assets
appIdTicketsIdContacts()YesGET/{appId}/tickets/{id}/contacts

client.people

MethodHTTPPath
groupsId()GET/api/groups/{id}
groupsIdApplications()GET/api/groups/{id}/applications
groupsIdMembers()GET/api/groups/{id}/members
peopleUid()GET/api/people/{uid}
peopleUidFunctionalroles()GET/api/people/{uid}/functionalroles
peopleUidGroups()GET/api/people/{uid}/groups
peopleGetuidUsername()GET/api/people/getuid/{username}
peopleLookup()GET/api/people/lookup
peopleUserlist()GET/api/people/userlist
ts
// Look up a person by UID
const person = await client.people.peopleUid({
  params: { path: { uid: 'abc123' } },
})

// Get UID from username
const { UID } = await client.people.peopleGetuidUsername({
  params: { path: { username: 'jdoe' } },
})

// List group members
const members = await client.people.groupsIdMembers({
  params: { path: { id: 7 } },
})

client.knowledgeBase

Methodneeds appIdHTTPPath
appIdKnowledgebaseId()YesGET/{appId}/knowledgebase/{id}
appIdKnowledgebaseIdAssetscis()YesGET/{appId}/knowledgebase/{id}/assetscis
appIdKnowledgebaseIdRelated()YesGET/{appId}/knowledgebase/{id}/related
appIdKnowledgebaseCategories()YesGET/{appId}/knowledgebase/categories
appIdKnowledgebaseCategoriesId()YesGET/{appId}/knowledgebase/categories/{id}

client.assets (app-scoped)

MethodHTTPPath
appIdAssetsId()GET/{appId}/assets/{id}
appIdAssetsIdArticles()GET/{appId}/assets/{id}/articles
appIdAssetsIdAssociatedcontracts()GET/{appId}/assets/{id}/associatedcontracts
appIdAssetsIdFeed()GET/{appId}/assets/{id}/feed
appIdAssetsIdUsers()GET/{appId}/assets/{id}/users
appIdAssetsFeed()GET/{appId}/assets/feed
appIdAssetsForms()GET/{appId}/assets/forms
appIdAssetsSearches()GET/{appId}/assets/searches
appIdAssetsStatuses()GET/{appId}/assets/statuses
appIdAssetsStatusesId()GET/{appId}/assets/statuses/{id}
appIdAssetsModels()GET/{appId}/assets/models
appIdAssetsModelsId()GET/{appId}/assets/models/{id}
appIdAssetsModelsTypes()GET/{appId}/assets/models/types
appIdAssetsModelsTypesId()GET/{appId}/assets/models/types/{id}
appIdAssetsContractsId()GET/{appId}/assets/contracts/{id}
appIdAssetsContractsIdAssociatedassets()GET/{appId}/assets/contracts/{id}/associatedassets

client.cmdb

Methodneeds appIdHTTPPath
appIdCmdbId()YesGET/{appId}/cmdb/{id}
appIdCmdbIdArticles()YesGET/{appId}/cmdb/{id}/articles
appIdCmdbIdFeed()YesGET/{appId}/cmdb/{id}/feed
appIdCmdbIdRelationships()YesGET/{appId}/cmdb/{id}/relationships
appIdCmdbIdTickets()YesGET/{appId}/cmdb/{id}/tickets
appIdCmdbSearches()YesGET/{appId}/cmdb/searches
appIdCmdbTypes()YesGET/{appId}/cmdb/types
appIdCmdbTypesId()YesGET/{appId}/cmdb/types/{id}
appIdCmdbForms()YesGET/{appId}/cmdb/forms
appIdCmdbRelationshiptypes()YesGET/{appId}/cmdb/relationshiptypes
appIdCmdbRelationshiptypesId()YesGET/{appId}/cmdb/relationshiptypes/{id}
appIdCmdbMaintenanceschedules()YesGET/{appId}/cmdb/maintenanceschedules
appIdCmdbMaintenancewindows()YesGET/{appId}/cmdb/maintenancewindows
appIdCmdbMaintenancewindowsId()YesGET/{appId}/cmdb/maintenancewindows/{id}
appIdAssetsVendors()YesGET/{appId}/assets/vendors
appIdAssetsVendorsId()YesGET/{appId}/assets/vendors/{id}

client.services

Methodneeds appIdHTTPPath
appIdServices()YesGET/{appId}/services
appIdServicesId()YesGET/{appId}/services/{id}
appIdServicesIdPermissions()YesGET/{appId}/services/{id}/permissions
appIdServicesIdRelatedarticles()YesGET/{appId}/services/{id}/relatedarticles
appIdServicesServiceIdOfferingsId()YesGET/{appId}/services/{serviceId}/offerings/{id}
appIdServicesServiceIdOfferingsIdRelatedarticles()YesGET/{appId}/services/{serviceId}/offerings/{id}/relatedarticles
appIdServicesCategories()YesGET/{appId}/services/categories
appIdServicesCategoriesId()YesGET/{appId}/services/categories/{id}
appIdServicesCategoriesIdPermissions()YesGET/{appId}/services/categories/{id}/permissions
appIdServicesIcons()YesGET/{appId}/services/icons

client.projects

MethodHTTPPath
projectsId()GET/api/projects/{id}
projectsIdFeed()GET/api/projects/{id}/feed
projectsIdResources()GET/api/projects/{id}/resources
projectsFeed()GET/api/projects/feed
projectsList()GET/api/projects/list
projectsTypes()GET/api/projects/types
projectsTypesId()GET/api/projects/types/{id}
projecttemplates()GET/api/projecttemplates
projecttemplatesIdPlans()GET/api/projecttemplates/{id}/plans
projectsProjectIDPlansPlanID()GET/api/projects/{projectID}/plans/{planID}
projectsProjectIdPlansPlanIdCheckedOutTo()GET/api/projects/{projectId}/plans/{planId}/checkedOutTo
projectsProjectIdPlansPlanIdFeed()GET/api/projects/{projectId}/plans/{planId}/feed
projectsProjectIdPlansPlanIdTasks()GET/api/projects/{projectId}/plans/{planId}/tasks
projectsProjectIdPlansPlanIdTasksTaskId()GET/api/projects/{projectId}/plans/{planId}/tasks/{taskId}
projectsProjectIdPlansPlanIdTasksTaskIdFeed()GET/api/projects/{projectId}/plans/{planId}/tasks/{taskId}/feed
projectsProjectIdBoardsBoardIdLists()GET/api/projects/{projectId}/boards/{boardId}/lists
projectsProjectIdIssuesIssueId()GET/api/projects/{projectId}/issues/{issueId}
projectsProjectIdIssuesIssueIdFeed()GET/api/projects/{projectId}/issues/{issueId}/feed
projectsProjectIdIssuesCategories()GET/api/projects/{projectId}/issues/categories
projectsProjectIdIssuesCategoriesIssueCategoryId()GET/api/projects/{projectId}/issues/categories/{issueCategoryId}
projectsIssuesPriorities()GET/api/projects/issues/priorities
projectsIssuesStatuses()GET/api/projects/issues/statuses
projectsProjectIdRisksRiskId()GET/api/projects/{projectId}/risks/{riskId}
projectsProjectIdRisksRiskIdFeed()GET/api/projects/{projectId}/risks/{riskId}/feed
projectsProjectIdRisksCategories()GET/api/projects/{projectId}/risks/categories
projectsProjectIdRisksCategoriesRiskCategoryId()GET/api/projects/{projectId}/risks/categories/{riskCategoryId}
projectsRisksStatuses()GET/api/projects/risks/statuses
projectsProjectIdLinksLinkId()GET/api/projects/{projectId}/links/{linkId}
projectsProjectIdLinksLinkIdFeed()GET/api/projects/{projectId}/links/{linkId}/feed
projectsProjectIdLinksCategories()GET/api/projects/{projectId}/links/categories
projectsProjectIDFilesId()GET/api/projects/{projectID}/files/{id}
projectsProjectIDFilesIdContent()GET/api/projects/{projectID}/files/{id}/content
projectsProjectIDFolders()GET/api/projects/{projectID}/folders
projectsProjectIDFoldersIdFiles()GET/api/projects/{projectID}/folders/{id}/files

client.time

MethodHTTPPath
timeId()GET/api/time/{id}
timeLocked()GET/api/time/locked
timeReportReportDate()GET/api/time/report/{reportDate}
timeReportReportDateUid()GET/api/time/report/{reportDate}/{uid}
timeTypes()GET/api/time/types
timeTypesId()GET/api/time/types/{id}
timeTypesIdLimitsUid()GET/api/time/types/{id}/limits/{uid}
timeTypesComponentAppAppIDTicketTicketID()GET/api/time/types/component/app/{appID}/ticket/{ticketID}
timeTypesComponentAppAppIDTicketTicketIDTaskTaskID()GET/api/time/types/component/app/{appID}/ticket/{ticketID}/task/{taskID}
timeTypesComponentProjectProjectID()GET/api/time/types/component/project/{projectID}
timeTypesComponentProjectProjectIDIssueIssueID()GET/api/time/types/component/project/{projectID}/issue/{issueID}
timeTypesComponentProjectProjectIDPlanPlanIDTaskTaskID()GET/api/time/types/component/project/{projectID}/plan/{planID}/task/{taskID}
timeTypesComponentRequestRequestID()GET/api/time/types/component/request/{requestID}
timeTypesComponentTimeoffProjectID()GET/api/time/types/component/timeoff/{projectID}
timeTypesComponentWorkspaceWorkspaceID()GET/api/time/types/component/workspace/{workspaceID}
daysoff()GET/api/daysoff
ts
// Time entry
const entry = await client.time.timeId({
  params: { path: { id: 789 } },
})

// Time report for a date
const report = await client.time.timeReportReportDate({
  params: { path: { reportDate: '2025-01-01' } },
})

client.referenceData (global, no appId needed)

MethodHTTPPath
accounts()GET/api/accounts
accountsId()GET/api/accounts/{id}
attachmentsId()GET/api/attachments/{id}
attachmentsIdContent()GET/api/attachments/{id}/content
attachmentsIdContentBase64()GET/api/attachments/{id}/contentBase64
attributesIdChoices()GET/api/attributes/{id}/choices
attributesCustom()GET/api/attributes/custom
feedId()GET/api/feed/{id}
industries()GET/api/industries
integrationsIntegrationIdExclusions()GET/api/integrations/{integrationId}/exclusions
locations()GET/api/locations
locationsId()GET/api/locations/{id}
locationsIdRoomsRoomId()GET/api/locations/{id}/rooms/{roomId}
appIdTicketsStatuses()GET/{appId}/tickets/statuses (needs appId)
appIdTicketsStatusesId()GET/{appId}/tickets/statuses/{id} (needs appId)
appIdAssetsSearches()GET/{appId}/assets/searches (needs appId)
reports()GET/api/reports
reportsId()GET/api/reports/{id}
securityrolesId()GET/api/securityroles/{id}
securityrolesPermissions()GET/api/securityroles/permissions
typecategories()GET/api/typecategories
typecategoriesId()GET/api/typecategories/{id}
ts
// Active accounts
const accounts = await client.referenceData.accounts()

// Locations
const locations = await client.referenceData.locations()

// Ticket statuses (scoped to app)
const statuses = await client.referenceData.appIdTicketsStatuses({
  params: { path: { appId: 1 } },
})

// Custom attribute definitions
const definitions = await client.referenceData.attributesCustom()