UNPKG

@esm-js/jira.js

Version:

A comprehensive JavaScript/TypeScript library designed for both Node.JS and browsers, facilitating seamless interaction with the Atlassian Jira API.

170 lines (158 loc) 7.62 kB
import type * as Models from './models'; import type * as Parameters from './parameters'; import type { Client } from '../clients'; import type { Callback } from '../callback'; import type { RequestConfig } from '../requestConfig'; export class TimeTracking { constructor(private client: Client) {} /** * Returns the time tracking provider that is currently selected. Note that if time tracking is disabled, then a * successful but empty response is returned. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async getSelectedTimeTrackingImplementation<T = void>(callback: Callback<T>): Promise<void>; /** * Returns the time tracking provider that is currently selected. Note that if time tracking is disabled, then a * successful but empty response is returned. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async getSelectedTimeTrackingImplementation<T = void>(callback?: never): Promise<T>; async getSelectedTimeTrackingImplementation<T = void>(callback?: Callback<T>): Promise<void | T> { const config: RequestConfig = { url: '/rest/api/3/configuration/timetracking', method: 'GET', }; return this.client.sendRequest(config, callback); } /** * Selects a time tracking provider. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async selectTimeTrackingImplementation<T = void>( parameters: Parameters.SelectTimeTrackingImplementation | undefined, callback: Callback<T>, ): Promise<void>; /** * Selects a time tracking provider. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async selectTimeTrackingImplementation<T = void>( parameters?: Parameters.SelectTimeTrackingImplementation, callback?: never, ): Promise<T>; async selectTimeTrackingImplementation<T = void>( parameters?: Parameters.SelectTimeTrackingImplementation, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: '/rest/api/3/configuration/timetracking', method: 'PUT', data: { key: parameters?.key, name: parameters?.name, url: parameters?.url, }, }; return this.client.sendRequest(config, callback); } /** * Returns all time tracking providers. By default, Jira only has one time tracking provider: _JIRA provided time * tracking_. However, you can install other time tracking providers via apps from the Atlassian Marketplace. For more * information on time tracking providers, see the documentation for the [ Time Tracking * Provider](https://developer.atlassian.com/cloud/jira/platform/modules/time-tracking-provider/) module. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async getAvailableTimeTrackingImplementations<T = Models.TimeTrackingProvider[]>( callback: Callback<T>, ): Promise<void>; /** * Returns all time tracking providers. By default, Jira only has one time tracking provider: _JIRA provided time * tracking_. However, you can install other time tracking providers via apps from the Atlassian Marketplace. For more * information on time tracking providers, see the documentation for the [ Time Tracking * Provider](https://developer.atlassian.com/cloud/jira/platform/modules/time-tracking-provider/) module. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async getAvailableTimeTrackingImplementations<T = Models.TimeTrackingProvider[]>(callback?: never): Promise<T>; async getAvailableTimeTrackingImplementations<T = Models.TimeTrackingProvider[]>( callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: '/rest/api/3/configuration/timetracking/list', method: 'GET', }; return this.client.sendRequest(config, callback); } /** * Returns the time tracking settings. This includes settings such as the time format, default time unit, and others. * For more information, see [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM). * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async getSharedTimeTrackingConfiguration<T = Models.TimeTrackingConfiguration>(callback: Callback<T>): Promise<void>; /** * Returns the time tracking settings. This includes settings such as the time format, default time unit, and others. * For more information, see [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM). * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async getSharedTimeTrackingConfiguration<T = Models.TimeTrackingConfiguration>(callback?: never): Promise<T>; async getSharedTimeTrackingConfiguration<T = Models.TimeTrackingConfiguration>( callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: '/rest/api/3/configuration/timetracking/options', method: 'GET', }; return this.client.sendRequest(config, callback); } /** * Sets the time tracking settings. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async setSharedTimeTrackingConfiguration<T = Models.TimeTrackingConfiguration>( parameters: Parameters.SetSharedTimeTrackingConfiguration, callback: Callback<T>, ): Promise<void>; /** * Sets the time tracking settings. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async setSharedTimeTrackingConfiguration<T = Models.TimeTrackingConfiguration>( parameters: Parameters.SetSharedTimeTrackingConfiguration, callback?: never, ): Promise<T>; async setSharedTimeTrackingConfiguration<T = Models.TimeTrackingConfiguration>( parameters: Parameters.SetSharedTimeTrackingConfiguration, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: '/rest/api/3/configuration/timetracking/options', method: 'PUT', data: { defaultUnit: parameters.defaultUnit, timeFormat: parameters.timeFormat, workingDaysPerWeek: parameters.workingDaysPerWeek, workingHoursPerDay: parameters.workingHoursPerDay, }, }; return this.client.sendRequest(config, callback); } }