This library is a thin wrapper facilitating requests to the TimeTac REST API. For more information please visit the API documentation.
Use the package manager yarn or npm to install TimeTac Client Library.
Using yarn:
yarn add @timetac/js-client-library
Using npm:
npm install @timetac/js-client-library
Existing customers can activate API access or request access to a sandbox environment by contacting [email protected]. This process usually takes less than two business days and is currently free of charge.
If you are not a customer yet, you may set up a
free trial and contact
[email protected] to obtain a client_id
and client_secret
for your
personal demo account.
Finally, if you just want to run a few requests, you may use the public API
playground
sandbox account. This account is reset to its initial state in
regular intervals. Access credentials are available in the react playground's
README.
import Api from "@timetac/js-client-library"
//Only account name is required.
const environment = {
host: 'go.timetac.com',
https?: boolean;
account: <ACCOUNT_NAME>,
version: 3,
account?: string;
accessToken?: string;
refreshToken?: string;
clientId?: string;
clientSecret?: string;
//Callback, called on refresh of the token. object of access token and refresh {accessToken, refreshTOken} token are passed as parameter
onTokenRefreshedCallback: (tokens) => console.log(`${tokens.accessToken} ${tokens.refreshToken}`),
//Callback called when refresh of the token fails.
onTokenRefreshFailed: () => { console.log('Intended action, such as logout')},
//If true, it tries to refresh token on failed request. Default true.
shouldAutoRefreshToken?: boolean;
timeout?: number;
}
const authCredentials = {
grant_type: 'password',
client_id: <CLIENT_ID>,
client_secret: <CLIENT_SECRET>,
username: <USER_NAME>,
password: <PASSWORD>
}
const api = new Api(environment);
async() => {
await api.authentication.login(authCredentials);
api.timeTrackings.read()
.then({ Results }} => {
console.log(Results)
});
api.users.readMe().then({ Results } => {
console.log(Results);
});
api.absenceDays.read(
new RequestParamsBuilder<AbsenceDay>()
.eq('user_id', 1)
.gteq('date', '2020-01-01')
.build()
);
api.absenceDay.read({
user_id: '1',
date: '2020-01-01',
_op__date: 'gteq'
})
}
- authentication
- absenceBanRestrictToDepartments
- absenceBanRestrictToTypes
- absenceBans
- absenceDays
- absenceMultistageResponsibilities
- absenceReplacements
- absences
- absenceTypes
- absenceTypesRestrictToCountries
- accessCredentials
- acDocumentAssignedClients
- acDocumentAssignedProjects
- acDocumentAssignedUsers
- acDocumentFiles
- acDocumentGroups
- acDocumentPositionAttributeValues
- acDocumentPositionCategories
- acDocumentPositionCategoryAttributeCombos
- acDocumentPositionCategoryAttributes
- acDocumentPositionCategoryCategoryAttributes
- acDocumentPositions
- acDocuments
- acDocumentStatus
- acDocumentTypes
- acPaymentFiles
- acPayments
- acPaymentTypes
- acSuppliers
- acTaxrates
- changeTimeTrackingRequests
- checkpoints
- checkpointTrackings
- clients
- countries
- currencies
- currencyRates
- deltaSync
- departments
- favouriteTasks
- fileInfo
- files
- generalSettingsChangeLog
- generalSettings
- geofences
- geofenceToNodes
- invoices
- JobParams
- JobQueues
- languages
- legalDocumentAcceptanceLog
- legalDocuments
- legalDocumentTypes
- messages
- multiuserToTasks
- multiuserToUsers
- nfcTransponder
- nfcTransponders
- nodesToUsers
- notifications
- notificationsTypeHtml
- notificationUrls
- offlineSyncError
- offlineSyncErrors
- permissionResolveAbsenceTypesAndUsers
- permissionResolveDepartments
- permissionResolveEntities
- permissionResolveHolidayRequests
- permissionResolveOauthClients
- permissionResolveQuestions
- permissionResolveTeams
- permissionResolveUsers
- permissions
- permissionScopes
- projects
- publicHolidayTemplates
- recentTasks
- salutations
- schedulings
- [serverCommunication]
- serverEvents
- skills
- surveyAnswers
- surveyQuestionDefinitions
- surveyQuestions
- surveys
- surveySubmits
- tasks
- teamLeaderAssistants
- teamMembers
- teams
- teamTypes
- timePlannings
- timesheetAccountings
- timesheetAccountingSummaries
- timesheetActionLogs
- timeTrackingChangelogs
- timeTrackings
- timezones
- todoTasks
- translations
- userDefinedFieldDefinitionOptions
- userDefinedFieldDefinitions
- userRoles
- users
- userStatusOverview
- userTemplateHistory
- workSchedules
- workScheduleDays
- workScheduleDayDefinitions
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
The shortest, simplest way of running the test suite is the following command:
yarn test
When experiencing issues with cross-origin resource sharing (CORS), you will have to configure a proxy server for development. This can be done, for example, with http-proxy-middleware. An example configuration for a React project can be found in the react playground.