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.

438 lines (415 loc) 17 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 IssueTypeSchemes { constructor(private client: Client) {} /** * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of issue * type schemes. * * Only issue type schemes used in classic projects are returned. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async getAllIssueTypeSchemes<T = Models.PageIssueTypeScheme>( parameters: Parameters.GetAllIssueTypeSchemes | undefined, callback: Callback<T>, ): Promise<void>; /** * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of issue * type schemes. * * Only issue type schemes used in classic projects are returned. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async getAllIssueTypeSchemes<T = Models.PageIssueTypeScheme>( parameters?: Parameters.GetAllIssueTypeSchemes, callback?: never, ): Promise<T>; async getAllIssueTypeSchemes<T = Models.PageIssueTypeScheme>( parameters?: Parameters.GetAllIssueTypeSchemes, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: '/rest/api/2/issuetypescheme', method: 'GET', params: { startAt: parameters?.startAt, maxResults: parameters?.maxResults, id: parameters?.id, orderBy: parameters?.orderBy, expand: parameters?.expand, queryString: parameters?.queryString, }, }; return this.client.sendRequest(config, callback); } /** * Creates an issue type scheme. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async createIssueTypeScheme<T = Models.IssueTypeSchemeID>( parameters: Parameters.CreateIssueTypeScheme, callback: Callback<T>, ): Promise<void>; /** * Creates an issue type scheme. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async createIssueTypeScheme<T = Models.IssueTypeSchemeID>( parameters: Parameters.CreateIssueTypeScheme, callback?: never, ): Promise<T>; async createIssueTypeScheme<T = Models.IssueTypeSchemeID>( parameters: Parameters.CreateIssueTypeScheme, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: '/rest/api/2/issuetypescheme', method: 'POST', data: { name: parameters.name, description: parameters.description, defaultIssueTypeId: parameters.defaultIssueTypeId, issueTypeIds: parameters.issueTypeIds, }, }; return this.client.sendRequest(config, callback); } /** * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of issue * type scheme items. * * Only issue type scheme items used in classic projects are returned. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async getIssueTypeSchemesMapping<T = Models.PageIssueTypeSchemeMapping>( parameters: Parameters.GetIssueTypeSchemesMapping | undefined, callback: Callback<T>, ): Promise<void>; /** * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of issue * type scheme items. * * Only issue type scheme items used in classic projects are returned. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async getIssueTypeSchemesMapping<T = Models.PageIssueTypeSchemeMapping>( parameters?: Parameters.GetIssueTypeSchemesMapping, callback?: never, ): Promise<T>; async getIssueTypeSchemesMapping<T = Models.PageIssueTypeSchemeMapping>( parameters?: Parameters.GetIssueTypeSchemesMapping, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: '/rest/api/2/issuetypescheme/mapping', method: 'GET', params: { startAt: parameters?.startAt, maxResults: parameters?.maxResults, issueTypeSchemeId: parameters?.issueTypeSchemeId, }, }; return this.client.sendRequest(config, callback); } /** * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of issue * type schemes and, for each issue type scheme, a list of the projects that use it. * * Only issue type schemes used in classic projects are returned. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async getIssueTypeSchemeForProjects<T = Models.PageIssueTypeSchemeProjects>( parameters: Parameters.GetIssueTypeSchemeForProjects, callback: Callback<T>, ): Promise<void>; /** * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of issue * type schemes and, for each issue type scheme, a list of the projects that use it. * * Only issue type schemes used in classic projects are returned. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async getIssueTypeSchemeForProjects<T = Models.PageIssueTypeSchemeProjects>( parameters: Parameters.GetIssueTypeSchemeForProjects, callback?: never, ): Promise<T>; async getIssueTypeSchemeForProjects<T = Models.PageIssueTypeSchemeProjects>( parameters: Parameters.GetIssueTypeSchemeForProjects, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: '/rest/api/2/issuetypescheme/project', method: 'GET', params: { startAt: parameters.startAt, maxResults: parameters.maxResults, projectId: parameters.projectId, }, }; return this.client.sendRequest(config, callback); } /** * Assigns an issue type scheme to a project. * * If any issues in the project are assigned issue types not present in the new scheme, the operation will fail. To * complete the assignment those issues must be updated to use issue types in the new scheme. * * Issue type schemes can only be assigned to classic projects. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async assignIssueTypeSchemeToProject<T = void>( parameters: Parameters.AssignIssueTypeSchemeToProject, callback: Callback<T>, ): Promise<void>; /** * Assigns an issue type scheme to a project. * * If any issues in the project are assigned issue types not present in the new scheme, the operation will fail. To * complete the assignment those issues must be updated to use issue types in the new scheme. * * Issue type schemes can only be assigned to classic projects. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async assignIssueTypeSchemeToProject<T = void>( parameters: Parameters.AssignIssueTypeSchemeToProject, callback?: never, ): Promise<T>; async assignIssueTypeSchemeToProject<T = void>( parameters: Parameters.AssignIssueTypeSchemeToProject, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: '/rest/api/2/issuetypescheme/project', method: 'PUT', data: { issueTypeSchemeId: parameters.issueTypeSchemeId, projectId: parameters.projectId, }, }; return this.client.sendRequest(config, callback); } /** * Updates an issue type scheme. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async updateIssueTypeScheme<T = void>( parameters: Parameters.UpdateIssueTypeScheme, callback: Callback<T>, ): Promise<void>; /** * Updates an issue type scheme. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async updateIssueTypeScheme<T = void>(parameters: Parameters.UpdateIssueTypeScheme, callback?: never): Promise<T>; async updateIssueTypeScheme<T = void>( parameters: Parameters.UpdateIssueTypeScheme, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: `/rest/api/2/issuetypescheme/${parameters.issueTypeSchemeId}`, method: 'PUT', data: { name: parameters.name, description: parameters.description, defaultIssueTypeId: parameters.defaultIssueTypeId, }, }; return this.client.sendRequest(config, callback); } /** * Deletes an issue type scheme. * * Only issue type schemes used in classic projects can be deleted. * * Any projects assigned to the scheme are reassigned to the default issue type scheme. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async deleteIssueTypeScheme<T = void>( parameters: Parameters.DeleteIssueTypeScheme | string, callback: Callback<T>, ): Promise<void>; /** * Deletes an issue type scheme. * * Only issue type schemes used in classic projects can be deleted. * * Any projects assigned to the scheme are reassigned to the default issue type scheme. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async deleteIssueTypeScheme<T = void>( parameters: Parameters.DeleteIssueTypeScheme | string, callback?: never, ): Promise<T>; async deleteIssueTypeScheme<T = void>( parameters: Parameters.DeleteIssueTypeScheme | string, callback?: Callback<T>, ): Promise<void | T> { const issueTypeSchemeId = typeof parameters === 'string' ? parameters : parameters.issueTypeSchemeId; const config: RequestConfig = { url: `/rest/api/2/issuetypescheme/${issueTypeSchemeId}`, method: 'DELETE', }; return this.client.sendRequest(config, callback); } /** * Adds issue types to an issue type scheme. * * The added issue types are appended to the issue types list. * * If any of the issue types exist in the issue type scheme, the operation fails and no issue types are added. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async addIssueTypesToIssueTypeScheme<T = void>( parameters: Parameters.AddIssueTypesToIssueTypeScheme, callback: Callback<T>, ): Promise<void>; /** * Adds issue types to an issue type scheme. * * The added issue types are appended to the issue types list. * * If any of the issue types exist in the issue type scheme, the operation fails and no issue types are added. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async addIssueTypesToIssueTypeScheme<T = void>( parameters: Parameters.AddIssueTypesToIssueTypeScheme, callback?: never, ): Promise<T>; async addIssueTypesToIssueTypeScheme<T = void>( parameters: Parameters.AddIssueTypesToIssueTypeScheme, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: `/rest/api/2/issuetypescheme/${parameters.issueTypeSchemeId}/issuetype`, method: 'PUT', data: { issueTypeIds: parameters.issueTypeIds, }, }; return this.client.sendRequest(config, callback); } /** * Changes the order of issue types in an issue type scheme. * * The request body parameters must meet the following requirements: * * - All of the issue types must belong to the issue type scheme. * - Either `after` or `position` must be provided. * - The issue type in `after` must not be in the issue type list. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async reorderIssueTypesInIssueTypeScheme<T = void>( parameters: Parameters.ReorderIssueTypesInIssueTypeScheme, callback: Callback<T>, ): Promise<void>; /** * Changes the order of issue types in an issue type scheme. * * The request body parameters must meet the following requirements: * * - All of the issue types must belong to the issue type scheme. * - Either `after` or `position` must be provided. * - The issue type in `after` must not be in the issue type list. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async reorderIssueTypesInIssueTypeScheme<T = void>( parameters: Parameters.ReorderIssueTypesInIssueTypeScheme, callback?: never, ): Promise<T>; async reorderIssueTypesInIssueTypeScheme<T = void>( parameters: Parameters.ReorderIssueTypesInIssueTypeScheme, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: `/rest/api/2/issuetypescheme/${parameters.issueTypeSchemeId}/issuetype/move`, method: 'PUT', data: { issueTypeIds: parameters.issueTypeIds, after: parameters.after, position: parameters.position, }, }; return this.client.sendRequest(config, callback); } /** * Removes an issue type from an issue type scheme. * * This operation cannot remove: * * - Any issue type used by issues. * - Any issue types from the default issue type scheme. * - The last standard issue type from an issue type scheme. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async removeIssueTypeFromIssueTypeScheme<T = void>( parameters: Parameters.RemoveIssueTypeFromIssueTypeScheme, callback: Callback<T>, ): Promise<void>; /** * Removes an issue type from an issue type scheme. * * This operation cannot remove: * * - Any issue type used by issues. * - Any issue types from the default issue type scheme. * - The last standard issue type from an issue type scheme. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async removeIssueTypeFromIssueTypeScheme<T = void>( parameters: Parameters.RemoveIssueTypeFromIssueTypeScheme, callback?: never, ): Promise<T>; async removeIssueTypeFromIssueTypeScheme<T = void>( parameters: Parameters.RemoveIssueTypeFromIssueTypeScheme, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: `/rest/api/2/issuetypescheme/${parameters.issueTypeSchemeId}/issuetype/${parameters.issueTypeId}`, method: 'DELETE', }; return this.client.sendRequest(config, callback); } }