import * as Models from './models'; import * as Parameters from './parameters'; import { Callback } from '../callback'; import { Client } from '../clients'; import { RequestConfig } from '../requestConfig'; export class IssueResolutions { constructor(private client: Client) {} /** * Creates an issue resolution. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async createResolution( parameters: Parameters.CreateResolution, callback: Callback, ): Promise; /** * Creates an issue resolution. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async createResolution( parameters: Parameters.CreateResolution, callback?: never, ): Promise; async createResolution( parameters: Parameters.CreateResolution, callback?: Callback, ): Promise { const config: RequestConfig = { url: '/rest/api/3/resolution', method: 'POST', data: parameters, }; return this.client.sendRequest(config, callback); } /** * Sets default issue resolution. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async setDefaultResolution( parameters: Parameters.SetDefaultResolution, callback: Callback, ): Promise; /** * Sets default issue resolution. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async setDefaultResolution(parameters: Parameters.SetDefaultResolution, callback?: never): Promise; async setDefaultResolution( parameters: Parameters.SetDefaultResolution, callback?: Callback, ): Promise { const config: RequestConfig = { url: '/rest/api/3/resolution/default', method: 'PUT', data: { id: parameters.id, }, }; return this.client.sendRequest(config, callback); } /** * Changes the order of issue resolutions. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async moveResolutions(parameters: Parameters.MoveResolutions, callback: Callback): Promise; /** * Changes the order of issue resolutions. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async moveResolutions(parameters: Parameters.MoveResolutions, callback?: never): Promise; async moveResolutions(parameters: Parameters.MoveResolutions, callback?: Callback): Promise { const config: RequestConfig = { url: '/rest/api/3/resolution/move', method: 'PUT', data: { ids: parameters.ids, after: parameters.after, position: parameters.position, }, }; return this.client.sendRequest(config, callback); } /** * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of * resolutions. The list can contain all resolutions or a subset determined by any combination of these criteria: * * - A list of resolutions IDs. * - Whether the field configuration is a default. This returns resolutions from company-managed (classic) projects * only, as there is no concept of default resolutions in team-managed projects. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** * Permission to access Jira. */ async searchResolutions( parameters: Parameters.SearchResolutions | undefined, callback: Callback, ): Promise; /** * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of * resolutions. The list can contain all resolutions or a subset determined by any combination of these criteria: * * - A list of resolutions IDs. * - Whether the field configuration is a default. This returns resolutions from company-managed (classic) projects * only, as there is no concept of default resolutions in team-managed projects. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** * Permission to access Jira. */ async searchResolutions( parameters?: Parameters.SearchResolutions, callback?: never, ): Promise; async searchResolutions( parameters?: Parameters.SearchResolutions, callback?: Callback, ): Promise { const config: RequestConfig = { url: '/rest/api/3/resolution/search', method: 'GET', params: { startAt: parameters?.startAt, maxResults: parameters?.maxResults, id: parameters?.id, onlyDefault: parameters?.onlyDefault, }, }; return this.client.sendRequest(config, callback); } /** * Updates an issue resolution. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async updateResolution(parameters: Parameters.UpdateResolution, callback: Callback): Promise; /** * Updates an issue resolution. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async updateResolution(parameters: Parameters.UpdateResolution, callback?: never): Promise; async updateResolution(parameters: Parameters.UpdateResolution, callback?: Callback): Promise { const config: RequestConfig = { url: `/rest/api/3/resolution/${parameters.id}`, method: 'PUT', data: { ...parameters, name: parameters.name, description: parameters.description, id: undefined, }, }; return this.client.sendRequest(config, callback); } /** * Deletes an issue resolution. * * This operation is * [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#async-operations). Follow the * `location` link in the response to determine the status of the task and use [Get * task](#api-rest-api-3-task-taskId-get) to obtain subsequent updates. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async deleteResolution( parameters: Parameters.DeleteResolution, callback: Callback, ): Promise; /** * Deletes an issue resolution. * * This operation is * [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#async-operations). Follow the * `location` link in the response to determine the status of the task and use [Get * task](#api-rest-api-3-task-taskId-get) to obtain subsequent updates. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). */ async deleteResolution( parameters: Parameters.DeleteResolution, callback?: never, ): Promise; async deleteResolution( parameters: Parameters.DeleteResolution, callback?: Callback, ): Promise { const config: RequestConfig = { url: `/rest/api/3/resolution/${parameters.id}`, method: 'DELETE', params: { replaceWith: parameters.replaceWith, }, }; return this.client.sendRequest(config, callback); } }