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-libraryUsing npm:
npm install @timetac/js-client-libraryExisting customers can activate API access or request access to a sandbox environment by contacting support@timetac.com. 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
support@timetac.com 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: 'api.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 testWhen 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.