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.

1,106 lines (1,048 loc) 45.7 kB
import type * as Models from './models'; import type * as Parameters from './parameters'; import type { Callback } from '../callback'; import type { Client } from '../clients'; import type { RequestConfig } from '../requestConfig'; export class Request { constructor(private client: Client) {} /** * This method returns all customer requests for the user executing the query. * * The returned customer requests are ordered chronologically by the latest activity on each request. For example, the * latest status transition or comment. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to access the specified service desk. * * **Response limitations**: For customers, the list returned will include request they created (or were created on * their behalf) or are participating in only. */ async getCustomerRequests<T = Models.PagedCustomerRequest>( parameters: Parameters.GetCustomerRequests | undefined, callback: Callback<T>, ): Promise<void>; /** * This method returns all customer requests for the user executing the query. * * The returned customer requests are ordered chronologically by the latest activity on each request. For example, the * latest status transition or comment. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to access the specified service desk. * * **Response limitations**: For customers, the list returned will include request they created (or were created on * their behalf) or are participating in only. */ async getCustomerRequests<T = Models.PagedCustomerRequest>( parameters?: Parameters.GetCustomerRequests, callback?: never, ): Promise<T>; async getCustomerRequests<T = Models.PagedCustomerRequest>( parameters?: Parameters.GetCustomerRequests, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: '/rest/servicedeskapi/request', method: 'GET', params: { searchTerm: parameters?.searchTerm, requestStatus: parameters?.requestStatus, approvalStatus: parameters?.approvalStatus, organizationId: parameters?.organizationId, serviceDeskId: parameters?.serviceDeskId, requestTypeId: parameters?.requestTypeId, expand: parameters?.expand, start: parameters?.start, limit: parameters?.limit, }, }; return this.client.sendRequest(config, callback); } /** * This method creates a customer request in a service desk. * * The JSON request must include the service desk and customer request type, as well as any fields that are required * for the request type. A list of the fields required by a customer request type can be obtained using * [servicedesk/{serviceDeskId}/requesttype/{requestTypeId}/field](#api-servicedesk-serviceDeskId-requesttype-requestTypeId-field-get). * * The fields required for a customer request type depend on the user's permissions: * * - `raiseOnBehalfOf` is not available to Users who have the customer permission only. * - `requestParticipants` is not available to Users who have the customer permission only or if the feature is turned * off for customers. * * `requestFieldValues` is a map of Jira field IDs and their values. See [Field input formats](#fieldformats), for * details of each field's JSON semantics and the values they can take. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to create requests in the specified service desk. */ async createCustomerRequest<T = Models.CustomerRequest>( parameters: Parameters.CreateCustomerRequest | undefined, callback: Callback<T>, ): Promise<void>; /** * This method creates a customer request in a service desk. * * The JSON request must include the service desk and customer request type, as well as any fields that are required * for the request type. A list of the fields required by a customer request type can be obtained using * [servicedesk/{serviceDeskId}/requesttype/{requestTypeId}/field](#api-servicedesk-serviceDeskId-requesttype-requestTypeId-field-get). * * The fields required for a customer request type depend on the user's permissions: * * - `raiseOnBehalfOf` is not available to Users who have the customer permission only. * - `requestParticipants` is not available to Users who have the customer permission only or if the feature is turned * off for customers. * * `requestFieldValues` is a map of Jira field IDs and their values. See [Field input formats](#fieldformats), for * details of each field's JSON semantics and the values they can take. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to create requests in the specified service desk. */ async createCustomerRequest<T = Models.CustomerRequest>( parameters?: Parameters.CreateCustomerRequest, callback?: never, ): Promise<T>; async createCustomerRequest<T = Models.CustomerRequest>( parameters?: Parameters.CreateCustomerRequest, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: '/rest/servicedeskapi/request', method: 'POST', data: { serviceDeskId: parameters?.serviceDeskId, requestTypeId: parameters?.requestTypeId, requestFieldValues: parameters?.requestFieldValues, requestParticipants: parameters?.requestParticipants, raiseOnBehalfOf: parameters?.raiseOnBehalfOf, channel: parameters?.channel, }, }; return this.client.sendRequest(config, callback); } /** * This method returns a customer request. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to access the specified service desk. * * **Response limitations**: For customers, only a request they created, was created on their behalf, or they are * participating in will be returned. */ async getCustomerRequestByIdOrKey<T = Models.CustomerRequest>( parameters: Parameters.GetCustomerRequestByIdOrKey, callback: Callback<T>, ): Promise<void>; /** * This method returns a customer request. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to access the specified service desk. * * **Response limitations**: For customers, only a request they created, was created on their behalf, or they are * participating in will be returned. */ async getCustomerRequestByIdOrKey<T = Models.CustomerRequest>( parameters: Parameters.GetCustomerRequestByIdOrKey, callback?: never, ): Promise<T>; async getCustomerRequestByIdOrKey<T = Models.CustomerRequest>( parameters: Parameters.GetCustomerRequestByIdOrKey, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}`, method: 'GET', params: { expand: parameters.expand, }, }; return this.client.sendRequest(config, callback); } /** * This method returns all approvals on a customer request. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to view the customer request. */ async getApprovals<T = Models.PagedApproval>( parameters: Parameters.GetApprovals, callback: Callback<T>, ): Promise<void>; /** * This method returns all approvals on a customer request. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to view the customer request. */ async getApprovals<T = Models.PagedApproval>(parameters: Parameters.GetApprovals, callback?: never): Promise<T>; async getApprovals<T = Models.PagedApproval>( parameters: Parameters.GetApprovals, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/approval`, method: 'GET', params: { start: parameters.start, limit: parameters.limit, }, }; return this.client.sendRequest(config, callback); } /** * This method returns an approval. Use this method to determine the status of an approval and the list of approvers. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to view the customer request. */ async getApprovalById<T = Models.Approval>( parameters: Parameters.GetApprovalById, callback: Callback<T>, ): Promise<void>; /** * This method returns an approval. Use this method to determine the status of an approval and the list of approvers. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to view the customer request. */ async getApprovalById<T = Models.Approval>(parameters: Parameters.GetApprovalById, callback?: never): Promise<T>; async getApprovalById<T = Models.Approval>( parameters: Parameters.GetApprovalById, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/approval/${parameters.approvalId}`, method: 'GET', }; return this.client.sendRequest(config, callback); } /** * This method enables a user to **Approve** or **Decline** an approval on a customer request. The approval is assumed * to be owned by the user making the call. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: User * is assigned to the approval request. */ async answerApproval<T = Models.Approval>( parameters: Parameters.AnswerApproval, callback: Callback<T>, ): Promise<void>; /** * This method enables a user to **Approve** or **Decline** an approval on a customer request. The approval is assumed * to be owned by the user making the call. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: User * is assigned to the approval request. */ async answerApproval<T = Models.Approval>(parameters: Parameters.AnswerApproval, callback?: never): Promise<T>; async answerApproval<T = Models.Approval>( parameters: Parameters.AnswerApproval, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/approval/${parameters.approvalId}`, method: 'POST', data: { decision: parameters.decision, }, }; return this.client.sendRequest(config, callback); } /** * This method returns all the attachments for a customer requests. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to view the customer request. * * **Response limitations**: Customers will only get a list of public attachments. */ async getAttachmentsForRequest<T = Models.PagedAttachment>( parameters: Parameters.GetAttachmentsForRequest, callback: Callback<T>, ): Promise<void>; /** * This method returns all the attachments for a customer requests. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to view the customer request. * * **Response limitations**: Customers will only get a list of public attachments. */ async getAttachmentsForRequest<T = Models.PagedAttachment>( parameters: Parameters.GetAttachmentsForRequest, callback?: never, ): Promise<T>; async getAttachmentsForRequest<T = Models.PagedAttachment>( parameters: Parameters.GetAttachmentsForRequest, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/attachment`, method: 'GET', params: { start: parameters.start, limit: parameters.limit, }, }; return this.client.sendRequest(config, callback); } /** * This method adds one or more temporary files (attached to the request's service desk using * [servicedesk/{serviceDeskId}/attachTemporaryFile](#api-servicedesk-serviceDeskId-attachTemporaryFile-post)) as * attachments to a customer request and set the attachment visibility using the `public` flag. Also, it is possible * to include a comment with the attachments. * * To get a list of attachments for a comment on the request use * [servicedeskapi/request/{issueIdOrKey}/comment/{commentId}/attachment](#api-request-issueIdOrKey-comment-commentId-attachment-get). * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to add an attachment. * * **Request limitations**: Customers can set attachments to public visibility only. */ async createAttachment<T = Models.AttachmentCreateResult>( parameters: Parameters.CreateAttachment, callback: Callback<T>, ): Promise<void>; /** * This method adds one or more temporary files (attached to the request's service desk using * [servicedesk/{serviceDeskId}/attachTemporaryFile](#api-servicedesk-serviceDeskId-attachTemporaryFile-post)) as * attachments to a customer request and set the attachment visibility using the `public` flag. Also, it is possible * to include a comment with the attachments. * * To get a list of attachments for a comment on the request use * [servicedeskapi/request/{issueIdOrKey}/comment/{commentId}/attachment](#api-request-issueIdOrKey-comment-commentId-attachment-get). * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to add an attachment. * * **Request limitations**: Customers can set attachments to public visibility only. */ async createAttachment<T = Models.AttachmentCreateResult>( parameters: Parameters.CreateAttachment, callback?: never, ): Promise<T>; async createAttachment<T = Models.AttachmentCreateResult>( parameters: Parameters.CreateAttachment, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/attachment`, method: 'POST', data: { temporaryAttachmentIds: parameters.temporaryAttachmentIds, additionalComment: parameters.additionalComment, public: parameters.public, }, }; return this.client.sendRequest(config, callback); } /** * Returns the contents of an attachment. * * To return a thumbnail of the attachment, use * [servicedeskapi/request/{issueIdOrKey}/attachment/{attachmentId}/thumbnail](#api-rest-servicedeskapi-request-issueidorkey-attachment-attachmentid-thumbnail-get). * * **[Permissions](#permissions) required:** For the issue containing the attachment: * * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is * in. * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission * to view the issue. */ async getAttachmentContent<T = unknown>( parameters: Parameters.GetAttachmentContent, callback: Callback<T>, ): Promise<void>; /** * Returns the contents of an attachment. * * To return a thumbnail of the attachment, use * [servicedeskapi/request/{issueIdOrKey}/attachment/{attachmentId}/thumbnail](#api-rest-servicedeskapi-request-issueidorkey-attachment-attachmentid-thumbnail-get). * * **[Permissions](#permissions) required:** For the issue containing the attachment: * * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is * in. * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission * to view the issue. */ async getAttachmentContent<T = unknown>(parameters: Parameters.GetAttachmentContent, callback?: never): Promise<T>; async getAttachmentContent<T = unknown>( parameters: Parameters.GetAttachmentContent, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/attachment/${parameters.attachmentId}`, method: 'GET', }; return this.client.sendRequest(config, callback); } /** * Returns the thumbnail of an attachment. * * To return the attachment contents, use * [servicedeskapi/request/{issueIdOrKey}/attachment/{attachmentId}](#api-rest-servicedeskapi-request-issueidorkey-attachment-attachmentid-get). * * **[Permissions](#permissions) required:** For the issue containing the attachment: * * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is * in. * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission * to view the issue. */ async getAttachmentThumbnail<T = unknown>( parameters: Parameters.GetAttachmentThumbnail, callback: Callback<T>, ): Promise<void>; /** * Returns the thumbnail of an attachment. * * To return the attachment contents, use * [servicedeskapi/request/{issueIdOrKey}/attachment/{attachmentId}](#api-rest-servicedeskapi-request-issueidorkey-attachment-attachmentid-get). * * **[Permissions](#permissions) required:** For the issue containing the attachment: * * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is * in. * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission * to view the issue. */ async getAttachmentThumbnail<T = unknown>( parameters: Parameters.GetAttachmentThumbnail, callback?: never, ): Promise<T>; async getAttachmentThumbnail<T = unknown>( parameters: Parameters.GetAttachmentThumbnail, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/attachment/${parameters.attachmentId}/thumbnail`, method: 'GET', }; return this.client.sendRequest(config, callback); } /** * This method returns all comments on a customer request. No permissions error is provided if, for example, the user * doesn't have access to the service desk or request, the method simply returns an empty response. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to view the customer request. * * **Response limitations**: Customers are returned public comments only. */ async getRequestComments<T = Models.PagedComment>( parameters: Parameters.GetRequestComments, callback: Callback<T>, ): Promise<void>; /** * This method returns all comments on a customer request. No permissions error is provided if, for example, the user * doesn't have access to the service desk or request, the method simply returns an empty response. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to view the customer request. * * **Response limitations**: Customers are returned public comments only. */ async getRequestComments<T = Models.PagedComment>( parameters: Parameters.GetRequestComments, callback?: never, ): Promise<T>; async getRequestComments<T = Models.PagedComment>( parameters: Parameters.GetRequestComments, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/comment`, method: 'GET', params: { public: parameters.public, internal: parameters.internal, expand: parameters.expand, start: parameters.start, limit: parameters.limit, }, }; return this.client.sendRequest(config, callback); } /** * This method creates a public or private (internal) comment on a customer request, with the comment visibility set * by `public`. The user recorded as the author of the comment. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: User * has Add Comments permission. * * **Request limitations**: Customers can set comments to public visibility only. */ async createRequestComment<T = Models.Comment>( parameters: Parameters.CreateRequestComment, callback: Callback<T>, ): Promise<void>; /** * This method creates a public or private (internal) comment on a customer request, with the comment visibility set * by `public`. The user recorded as the author of the comment. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: User * has Add Comments permission. * * **Request limitations**: Customers can set comments to public visibility only. */ async createRequestComment<T = Models.Comment>( parameters: Parameters.CreateRequestComment, callback?: never, ): Promise<T>; async createRequestComment<T = Models.Comment>( parameters: Parameters.CreateRequestComment, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/comment`, method: 'POST', data: { body: parameters.body, public: parameters.public, }, }; return this.client.sendRequest(config, callback); } /** * This method returns details of a customer request's comment. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to view the customer request. * * **Response limitations**: Customers can only view public comments on requests where they are the reporter or a * participant whereas agents can see both internal and public comments. */ async getRequestCommentById<T = Models.Comment>( parameters: Parameters.GetRequestCommentById, callback: Callback<T>, ): Promise<void>; /** * This method returns details of a customer request's comment. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to view the customer request. * * **Response limitations**: Customers can only view public comments on requests where they are the reporter or a * participant whereas agents can see both internal and public comments. */ async getRequestCommentById<T = Models.Comment>( parameters: Parameters.GetRequestCommentById, callback?: never, ): Promise<T>; async getRequestCommentById<T = Models.Comment>( parameters: Parameters.GetRequestCommentById, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/comment/${parameters.commentId}`, method: 'GET', params: { expand: parameters.expand, }, }; return this.client.sendRequest(config, callback); } /** * This method returns the attachments referenced in a comment. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to view the customer request. * * **Response limitations**: Customers can only view public comments, and retrieve their attachments, on requests * where they are the reporter or a participant whereas agents can see both internal and public comments. */ async getCommentAttachments<T = Models.PagedAttachment>( parameters: Parameters.GetCommentAttachments, callback: Callback<T>, ): Promise<void>; /** * This method returns the attachments referenced in a comment. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to view the customer request. * * **Response limitations**: Customers can only view public comments, and retrieve their attachments, on requests * where they are the reporter or a participant whereas agents can see both internal and public comments. */ async getCommentAttachments<T = Models.PagedAttachment>( parameters: Parameters.GetCommentAttachments, callback?: never, ): Promise<T>; async getCommentAttachments<T = Models.PagedAttachment>( parameters: Parameters.GetCommentAttachments, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/comment/${parameters.commentId}/attachment`, method: 'GET', headers: { 'X-ExperimentalApi': 'opt-in', }, params: { start: parameters.start, limit: parameters.limit, }, }; return this.client.sendRequest(config, callback); } /** * This method returns the notification subscription status of the user making the request. Use this method to * determine if the user is subscribed to a customer request's notifications. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to view the customer request. */ async getSubscriptionStatus<T = Models.RequestNotificationSubscription>( parameters: Parameters.GetSubscriptionStatus, callback: Callback<T>, ): Promise<void>; /** * This method returns the notification subscription status of the user making the request. Use this method to * determine if the user is subscribed to a customer request's notifications. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to view the customer request. */ async getSubscriptionStatus<T = Models.RequestNotificationSubscription>( parameters: Parameters.GetSubscriptionStatus, callback?: never, ): Promise<T>; async getSubscriptionStatus<T = Models.RequestNotificationSubscription>( parameters: Parameters.GetSubscriptionStatus, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/notification`, method: 'GET', }; return this.client.sendRequest(config, callback); } /** * This method subscribes the user to receiving notifications from a customer request. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to view the customer request. */ async subscribe<T = void>(parameters: Parameters.Subscribe, callback: Callback<T>): Promise<void>; /** * This method subscribes the user to receiving notifications from a customer request. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to view the customer request. */ async subscribe<T = void>(parameters: Parameters.Subscribe, callback?: never): Promise<T>; async subscribe<T = void>(parameters: Parameters.Subscribe, callback?: Callback<T>): Promise<void | T> { const config: RequestConfig = { url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/notification`, method: 'PUT', }; return this.client.sendRequest(config, callback); } /** * This method unsubscribes the user from notifications from a customer request. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to view the customer request. */ async unsubscribe<T = void>(parameters: Parameters.Unsubscribe, callback: Callback<T>): Promise<void>; /** * This method unsubscribes the user from notifications from a customer request. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to view the customer request. */ async unsubscribe<T = void>(parameters: Parameters.Unsubscribe, callback?: never): Promise<T>; async unsubscribe<T = void>(parameters: Parameters.Unsubscribe, callback?: Callback<T>): Promise<void | T> { const config: RequestConfig = { url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/notification`, method: 'DELETE', }; return this.client.sendRequest(config, callback); } /** * This method returns a list of all the participants on a customer request. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to view the customer request. */ async getRequestParticipants<T = Models.PagedUser>( parameters: Parameters.GetRequestParticipants, callback: Callback<T>, ): Promise<void>; /** * This method returns a list of all the participants on a customer request. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to view the customer request. */ async getRequestParticipants<T = Models.PagedUser>( parameters: Parameters.GetRequestParticipants, callback?: never, ): Promise<T>; async getRequestParticipants<T = Models.PagedUser>( parameters: Parameters.GetRequestParticipants, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/participant`, method: 'GET', params: { start: parameters.start, limit: parameters.limit, }, }; return this.client.sendRequest(config, callback); } /** * This method adds participants to a customer request. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to manage participants on the customer request. * * Note, participants can be added when creating a customer request using the * [request](https://developer.atlassian.com/cloud/jira/service-desk/rest/api-group-request/) resource, by defining * the participants in the `requestParticipants` field. */ async addRequestParticipants<T = Models.PagedUser>( parameters: Parameters.AddRequestParticipants, callback: Callback<T>, ): Promise<void>; /** * This method adds participants to a customer request. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to manage participants on the customer request. * * Note, participants can be added when creating a customer request using the * [request](https://developer.atlassian.com/cloud/jira/service-desk/rest/api-group-request/) resource, by defining * the participants in the `requestParticipants` field. */ async addRequestParticipants<T = Models.PagedUser>( parameters: Parameters.AddRequestParticipants, callback?: never, ): Promise<T>; async addRequestParticipants<T = Models.PagedUser>( parameters: Parameters.AddRequestParticipants, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/participant`, method: 'POST', data: { usernames: parameters.usernames, accountIds: parameters.accountIds, }, }; return this.client.sendRequest(config, callback); } /** * This method removes participants from a customer request. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to manage participants on the customer request. */ async removeRequestParticipants<T = Models.PagedUser>( parameters: Parameters.RemoveRequestParticipants, callback: Callback<T>, ): Promise<void>; /** * This method removes participants from a customer request. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to manage participants on the customer request. */ async removeRequestParticipants<T = Models.PagedUser>( parameters: Parameters.RemoveRequestParticipants, callback?: never, ): Promise<T>; async removeRequestParticipants<T = Models.PagedUser>( parameters: Parameters.RemoveRequestParticipants, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/participant`, method: 'DELETE', data: { usernames: parameters.usernames, accountIds: parameters.accountIds, }, }; return this.client.sendRequest(config, callback); } /** * This method returns all the SLA records on a customer request. A customer request can have zero or more SLAs. Each * SLA can have recordings for zero or more "completed cycles" and zero or 1 "ongoing cycle". Each cycle includes * information on when it started and stopped, and whether it breached the SLA goal. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: Agent * for the Service Desk containing the queried customer request. */ async getSlaInformation<T = Models.PagedSlaInformation>( parameters: Parameters.GetSlaInformation, callback: Callback<T>, ): Promise<void>; /** * This method returns all the SLA records on a customer request. A customer request can have zero or more SLAs. Each * SLA can have recordings for zero or more "completed cycles" and zero or 1 "ongoing cycle". Each cycle includes * information on when it started and stopped, and whether it breached the SLA goal. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: Agent * for the Service Desk containing the queried customer request. */ async getSlaInformation<T = Models.PagedSlaInformation>( parameters: Parameters.GetSlaInformation, callback?: never, ): Promise<T>; async getSlaInformation<T = Models.PagedSlaInformation>( parameters: Parameters.GetSlaInformation, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/sla`, method: 'GET', params: { start: parameters.start, limit: parameters.limit, }, }; return this.client.sendRequest(config, callback); } /** * This method returns the details for an SLA on a customer request. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: Agent * for the Service Desk containing the queried customer request. */ async getSlaInformationById<T = Models.SlaInformation>( parameters: Parameters.GetSlaInformationById, callback: Callback<T>, ): Promise<void>; /** * This method returns the details for an SLA on a customer request. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: Agent * for the Service Desk containing the queried customer request. */ async getSlaInformationById<T = Models.SlaInformation>( parameters: Parameters.GetSlaInformationById, callback?: never, ): Promise<T>; async getSlaInformationById<T = Models.SlaInformation>( parameters: Parameters.GetSlaInformationById, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/sla/${parameters.slaMetricId}`, method: 'GET', }; return this.client.sendRequest(config, callback); } /** * This method returns a list of all the statuses a customer Request has achieved. A status represents the state of an * issue in its workflow. An issue can have one active status only. The list returns the status history in * chronological order, most recent (current) status first. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to view the customer request. */ async getCustomerRequestStatus<T = Models.PagedCustomerRequestStatus>( parameters: Parameters.GetCustomerRequestStatus, callback: Callback<T>, ): Promise<void>; /** * This method returns a list of all the statuses a customer Request has achieved. A status represents the state of an * issue in its workflow. An issue can have one active status only. The list returns the status history in * chronological order, most recent (current) status first. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to view the customer request. */ async getCustomerRequestStatus<T = Models.PagedCustomerRequestStatus>( parameters: Parameters.GetCustomerRequestStatus, callback?: never, ): Promise<T>; async getCustomerRequestStatus<T = Models.PagedCustomerRequestStatus>( parameters: Parameters.GetCustomerRequestStatus, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/status`, method: 'GET', params: { start: parameters.start, limit: parameters.limit, }, }; return this.client.sendRequest(config, callback); } /** * This method returns a list of transitions, the workflow processes that moves a customer request from one status to * another, that the user can perform on a request. Use this method to provide a user with a list if the actions they * can take on a customer request. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to view the customer request. */ async getCustomerTransitions<T = Models.PagedCustomerTransition>( parameters: Parameters.GetCustomerTransitions, callback: Callback<T>, ): Promise<void>; /** * This method returns a list of transitions, the workflow processes that moves a customer request from one status to * another, that the user can perform on a request. Use this method to provide a user with a list if the actions they * can take on a customer request. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: * Permission to view the customer request. */ async getCustomerTransitions<T = Models.PagedCustomerTransition>( parameters: Parameters.GetCustomerTransitions, callback?: never, ): Promise<T>; async getCustomerTransitions<T = Models.PagedCustomerTransition>( parameters: Parameters.GetCustomerTransitions, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/transition`, method: 'GET', params: { start: parameters.start, limit: parameters.limit, }, }; return this.client.sendRequest(config, callback); } /** * This method performs a customer transition for a given request and transition. An optional comment can be included * to provide a reason for the transition. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: The * user must be able to view the request and have the Transition Issues permission. If a comment is passed the user * must have the Add Comments permission. */ async performCustomerTransition<T = void>( parameters: Parameters.PerformCustomerTransition, callback: Callback<T>, ): Promise<void>; /** * This method performs a customer transition for a given request and transition. An optional comment can be included * to provide a reason for the transition. * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: The * user must be able to view the request and have the Transition Issues permission. If a comment is passed the user * must have the Add Comments permission. */ async performCustomerTransition<T = void>( parameters: Parameters.PerformCustomerTransition, callback?: never, ): Promise<T>; async performCustomerTransition<T = void>( parameters: Parameters.PerformCustomerTransition, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/transition`, method: 'POST', data: { id: parameters.id, additionalComment: parameters.additionalComment, }, }; return this.client.sendRequest(config, callback); } /** * This method retrieves a feedback of a request using it's `requestKey` or `requestId` * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: User * has view request permissions. */ async getFeedback<T = Models.CsatFeedbackFull>( parameters: Parameters.GetFeedback, callback: Callback<T>, ): Promise<void>; /** * This method retrieves a feedback of a request using it's `requestKey` or `requestId` * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: User * has view request permissions. */ async getFeedback<T = Models.CsatFeedbackFull>(parameters: Parameters.GetFeedback, callback?: never): Promise<T>; async getFeedback<T = Models.CsatFeedbackFull>( parameters: Parameters.GetFeedback, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: `/rest/servicedeskapi/request/${parameters.requestIdOrKey}/feedback`, method: 'GET', headers: { 'X-ExperimentalApi': 'opt-in', }, }; return this.client.sendRequest(config, callback); } /** * This method adds a feedback on a request using it's `requestKey` or `requestId` * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: User * must be the reporter or an Atlassian Connect app. */ async postFeedback<T = Models.CsatFeedbackFull>( parameters: Parameters.PostFeedback, callback: Callback<T>, ): Promise<void>; /** * This method adds a feedback on a request using it's `requestKey` or `requestId` * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: User * must be the reporter or an Atlassian Connect app. */ async postFeedback<T = Models.CsatFeedbackFull>(parameters: Parameters.PostFeedback, callback?: never): Promise<T>; async postFeedback<T = Models.CsatFeedbackFull>( parameters: Parameters.PostFeedback, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: `/rest/servicedeskapi/request/${parameters.requestIdOrKey}/feedback`, method: 'POST', headers: { 'X-ExperimentalApi': 'opt-in', }, data: { type: parameters.type, rating: parameters.rating, comment: parameters.comment, }, }; return this.client.sendRequest(config, callback); } /** * This method deletes the feedback of request using it's `requestKey` or `requestId` * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: User * must be the reporter or an Atlassian Connect app. */ async deleteFeedback<T = void>(parameters: Parameters.DeleteFeedback, callback: Callback<T>): Promise<void>; /** * This method deletes the feedback of request using it's `requestKey` or `requestId` * * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: User * must be the reporter or an Atlassian Connect app. */ async deleteFeedback<T = void>(parameters: Parameters.DeleteFeedback, callback?: never): Promise<T>; async deleteFeedback<T = void>(parameters: Parameters.DeleteFeedback, callback?: Callback<T>): Promise<void | T> { const config: RequestConfig = { url: `/rest/servicedeskapi/request/${parameters.requestIdOrKey}/feedback`, method: 'DELETE', headers: { 'X-ExperimentalApi': 'opt-in', }, }; return this.client.sendRequest(config, callback); } }