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.

412 lines (391 loc) 20.3 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 IssueCustomFieldOptionsApps { constructor(private client: Client) {} /** * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of all * the options of a select list issue field. A select list issue field is a type of [issue * field](https://developer.atlassian.com/cloud/jira/platform/modules/issue-field/) that enables a user to select a * value from a list of options. * * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be * used with issue field select list options created in Jira or using operations from the [Issue custom field * options](#api-group-Issue-custom-field-options) resource. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required * for the app providing the field. */ async getAllIssueFieldOptions<T = Models.PageIssueFieldOption>( parameters: Parameters.GetAllIssueFieldOptions | string, callback: Callback<T>, ): Promise<void>; /** * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of all * the options of a select list issue field. A select list issue field is a type of [issue * field](https://developer.atlassian.com/cloud/jira/platform/modules/issue-field/) that enables a user to select a * value from a list of options. * * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be * used with issue field select list options created in Jira or using operations from the [Issue custom field * options](#api-group-Issue-custom-field-options) resource. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required * for the app providing the field. */ async getAllIssueFieldOptions<T = Models.PageIssueFieldOption>( parameters: Parameters.GetAllIssueFieldOptions | string, callback?: never, ): Promise<T>; async getAllIssueFieldOptions<T = Models.PageIssueFieldOption>( parameters: Parameters.GetAllIssueFieldOptions | string, callback?: Callback<T>, ): Promise<void | T> { const fieldKey = typeof parameters === 'string' ? parameters : parameters.fieldKey; const config: RequestConfig = { url: `/rest/api/2/field/${fieldKey}/option`, method: 'GET', params: { startAt: typeof parameters !== 'string' && parameters.startAt, maxResults: typeof parameters !== 'string' && parameters.maxResults, }, }; return this.client.sendRequest(config, callback); } /** * Creates an option for a select list issue field. * * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be * used with issue field select list options created in Jira or using operations from the [Issue custom field * options](#api-group-Issue-custom-field-options) resource. * * Each field can have a maximum of 10000 options, and each option can have a maximum of 10000 scopes. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required * for the app providing the field. */ async createIssueFieldOption<T = Models.IssueFieldOption>( parameters: Parameters.CreateIssueFieldOption, callback: Callback<T>, ): Promise<void>; /** * Creates an option for a select list issue field. * * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be * used with issue field select list options created in Jira or using operations from the [Issue custom field * options](#api-group-Issue-custom-field-options) resource. * * Each field can have a maximum of 10000 options, and each option can have a maximum of 10000 scopes. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required * for the app providing the field. */ async createIssueFieldOption<T = Models.IssueFieldOption>( parameters: Parameters.CreateIssueFieldOption, callback?: never, ): Promise<T>; async createIssueFieldOption<T = Models.IssueFieldOption>( parameters: Parameters.CreateIssueFieldOption, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: `/rest/api/2/field/${parameters.fieldKey}/option`, method: 'POST', data: { config: parameters.config, properties: parameters.properties, value: parameters.value, }, }; return this.client.sendRequest(config, callback); } /** * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of * options for a select list issue field that can be viewed and selected by the user. * * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be * used with issue field select list options created in Jira or using operations from the [Issue custom field * options](#api-group-Issue-custom-field-options) resource. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * Permission to access Jira. */ async getSelectableIssueFieldOptions<T = Models.PageIssueFieldOption>( parameters: Parameters.GetSelectableIssueFieldOptions | string, callback: Callback<T>, ): Promise<void>; /** * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of * options for a select list issue field that can be viewed and selected by the user. * * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be * used with issue field select list options created in Jira or using operations from the [Issue custom field * options](#api-group-Issue-custom-field-options) resource. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * Permission to access Jira. */ async getSelectableIssueFieldOptions<T = Models.PageIssueFieldOption>( parameters: Parameters.GetSelectableIssueFieldOptions | string, callback?: never, ): Promise<T>; async getSelectableIssueFieldOptions<T = Models.PageIssueFieldOption>( parameters: Parameters.GetSelectableIssueFieldOptions | string, callback?: Callback<T>, ): Promise<void | T> { const fieldKey = typeof parameters === 'string' ? parameters : parameters.fieldKey; const config: RequestConfig = { url: `/rest/api/2/field/${fieldKey}/option/suggestions/edit`, method: 'GET', params: { startAt: typeof parameters !== 'string' && parameters.startAt, maxResults: typeof parameters !== 'string' && parameters.maxResults, projectId: typeof parameters !== 'string' && parameters.projectId, }, }; return this.client.sendRequest(config, callback); } /** * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of * options for a select list issue field that can be viewed by the user. * * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be * used with issue field select list options created in Jira or using operations from the [Issue custom field * options](#api-group-Issue-custom-field-options) resource. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * Permission to access Jira. */ async getVisibleIssueFieldOptions<T = Models.PageIssueFieldOption>( parameters: Parameters.GetVisibleIssueFieldOptions | string, callback: Callback<T>, ): Promise<void>; /** * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of * options for a select list issue field that can be viewed by the user. * * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be * used with issue field select list options created in Jira or using operations from the [Issue custom field * options](#api-group-Issue-custom-field-options) resource. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * Permission to access Jira. */ async getVisibleIssueFieldOptions<T = Models.PageIssueFieldOption>( parameters: Parameters.GetVisibleIssueFieldOptions | string, callback?: never, ): Promise<T>; async getVisibleIssueFieldOptions<T = Models.PageIssueFieldOption>( parameters: Parameters.GetVisibleIssueFieldOptions | string, callback?: Callback<T>, ): Promise<void | T> { const fieldKey = typeof parameters === 'string' ? parameters : parameters.fieldKey; const config: RequestConfig = { url: `/rest/api/2/field/${fieldKey}/option/suggestions/search`, method: 'GET', params: { startAt: typeof parameters !== 'string' && parameters.startAt, maxResults: typeof parameters !== 'string' && parameters.maxResults, projectId: typeof parameters !== 'string' && parameters.projectId, }, }; return this.client.sendRequest(config, callback); } /** * Returns an option from a select list issue field. * * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be * used with issue field select list options created in Jira or using operations from the [Issue custom field * options](#api-group-Issue-custom-field-options) resource. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required * for the app providing the field. */ async getIssueFieldOption<T = Models.IssueFieldOption>( parameters: Parameters.GetIssueFieldOption, callback: Callback<T>, ): Promise<void>; /** * Returns an option from a select list issue field. * * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be * used with issue field select list options created in Jira or using operations from the [Issue custom field * options](#api-group-Issue-custom-field-options) resource. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required * for the app providing the field. */ async getIssueFieldOption<T = Models.IssueFieldOption>( parameters: Parameters.GetIssueFieldOption, callback?: never, ): Promise<T>; async getIssueFieldOption<T = Models.IssueFieldOption>( parameters: Parameters.GetIssueFieldOption, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: `/rest/api/2/field/${parameters.fieldKey}/option/${parameters.optionId}`, method: 'GET', }; return this.client.sendRequest(config, callback); } /** * Updates or creates an option for a select list issue field. This operation requires that the option ID is provided * when creating an option, therefore, the option ID needs to be specified as a path and body parameter. The option ID * provided in the path and body must be identical. * * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be * used with issue field select list options created in Jira or using operations from the [Issue custom field * options](#api-group-Issue-custom-field-options) resource. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required * for the app providing the field. */ async updateIssueFieldOption<T = Models.IssueFieldOption>( parameters: Parameters.UpdateIssueFieldOption, callback: Callback<T>, ): Promise<void>; /** * Updates or creates an option for a select list issue field. This operation requires that the option ID is provided * when creating an option, therefore, the option ID needs to be specified as a path and body parameter. The option ID * provided in the path and body must be identical. * * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be * used with issue field select list options created in Jira or using operations from the [Issue custom field * options](#api-group-Issue-custom-field-options) resource. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required * for the app providing the field. */ async updateIssueFieldOption<T = Models.IssueFieldOption>( parameters: Parameters.UpdateIssueFieldOption, callback?: never, ): Promise<T>; async updateIssueFieldOption<T = Models.IssueFieldOption>( parameters: Parameters.UpdateIssueFieldOption, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: `/rest/api/2/field/${parameters.fieldKey}/option/${parameters.optionId}`, method: 'PUT', data: { config: parameters.config, id: parameters.id, properties: parameters.properties, value: parameters.value, }, }; return this.client.sendRequest(config, callback); } /** * Deletes an option from a select list issue field. * * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be * used with issue field select list options created in Jira or using operations from the [Issue custom field * options](#api-group-Issue-custom-field-options) resource. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required * for the app providing the field. */ async deleteIssueFieldOption<T = void>( parameters: Parameters.DeleteIssueFieldOption, callback: Callback<T>, ): Promise<void>; /** * Deletes an option from a select list issue field. * * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be * used with issue field select list options created in Jira or using operations from the [Issue custom field * options](#api-group-Issue-custom-field-options) resource. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required * for the app providing the field. */ async deleteIssueFieldOption<T = void>(parameters: Parameters.DeleteIssueFieldOption, callback?: never): Promise<T>; async deleteIssueFieldOption<T = void>( parameters: Parameters.DeleteIssueFieldOption, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: `/rest/api/2/field/${parameters.fieldKey}/option/${parameters.optionId}`, method: 'DELETE', }; return this.client.sendRequest(config, callback); } /** * Deselects an issue-field select-list option from all issues where it is selected. A different option can be * selected to replace the deselected option. The update can also be limited to a smaller set of issues by using a JQL * query. * * Connect and Forge app users with _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) * can override the screen security configuration using `overrideScreenSecurity` and `overrideEditableFlag`. * * This is an [asynchronous * operation](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#async-operations). The response * object contains a link to the long-running task. * * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be * used with issue field select list options created in Jira or using operations from the [Issue custom field * options](#api-group-Issue-custom-field-options) resource. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required * for the app providing the field. */ async replaceIssueFieldOption<T = Models.TaskProgressRemoveOptionFromIssuesResult>( parameters: Parameters.ReplaceIssueFieldOption, callback: Callback<T>, ): Promise<void>; /** * Deselects an issue-field select-list option from all issues where it is selected. A different option can be * selected to replace the deselected option. The update can also be limited to a smaller set of issues by using a JQL * query. * * Connect and Forge app users with _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) * can override the screen security configuration using `overrideScreenSecurity` and `overrideEditableFlag`. * * This is an [asynchronous * operation](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#async-operations). The response * object contains a link to the long-running task. * * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be * used with issue field select list options created in Jira or using operations from the [Issue custom field * options](#api-group-Issue-custom-field-options) resource. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required * for the app providing the field. */ async replaceIssueFieldOption<T = Models.TaskProgressRemoveOptionFromIssuesResult>( parameters: Parameters.ReplaceIssueFieldOption, callback?: never, ): Promise<T>; async replaceIssueFieldOption<T = Models.TaskProgressRemoveOptionFromIssuesResult>( parameters: Parameters.ReplaceIssueFieldOption, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: `/rest/api/2/field/${parameters.fieldKey}/option/${parameters.optionId}/issue`, method: 'DELETE', params: { replaceWith: parameters.replaceWith, jql: parameters.jql, overrideScreenSecurity: parameters.overrideScreenSecurity, overrideEditableFlag: parameters.overrideEditableFlag, }, }; return this.client.sendRequest(config, callback); } }