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.

343 lines (335 loc) 22.1 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 JiraExpressions { constructor(private client: Client) {} /** * Analyses and validates Jira expressions. * * As an experimental feature, this operation can also attempt to type-check the expressions. * * Learn more about Jira expressions in the * [documentation](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/). * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required**: None. */ async analyseExpression<T = Models.JiraExpressionsAnalysis>( parameters: Parameters.AnalyseExpression | undefined, callback: Callback<T>, ): Promise<void>; /** * Analyses and validates Jira expressions. * * As an experimental feature, this operation can also attempt to type-check the expressions. * * Learn more about Jira expressions in the * [documentation](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/). * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required**: None. */ async analyseExpression<T = Models.JiraExpressionsAnalysis>( parameters?: Parameters.AnalyseExpression, callback?: never, ): Promise<T>; async analyseExpression<T = Models.JiraExpressionsAnalysis>( parameters?: Parameters.AnalyseExpression, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: '/rest/api/2/expression/analyse', method: 'POST', params: { check: parameters?.check, }, data: { contextVariables: parameters?.contextVariables, expressions: parameters?.expressions, }, }; return this.client.sendRequest(config, callback); } /** * Evaluates a Jira expression and returns its value. * * This resource can be used to test Jira expressions that you plan to use elsewhere, or to fetch data in a flexible * way. Consult the [Jira expressions * documentation](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/) for more details. * * #### Context variables * * The following context variables are available to Jira expressions evaluated by this resource. Their presence * depends on various factors; usually you need to manually request them in the context object sent in the payload, * but some of them are added automatically under certain conditions. * * - `user` ([User](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#user)): The * current user. Always available and equal to `null` if the request is anonymous. * - `app` ([App](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#app)): The * [Connect app](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) that made the request. * Available only for authenticated requests made by Connect Apps (read more here: [Authentication for Connect * apps](https://developer.atlassian.com/cloud/jira/platform/security-for-connect-apps/)). * - `issue` ([Issue](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)): The * current issue. Available only when the issue is provided in the request context object. * - `issues` ([List](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#list) of * [Issues](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)): A * collection of issues matching a JQL query. Available only when JQL is provided in the request context object. * - `project` ([Project](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#project)): * The current project. Available only when the project is provided in the request context object. * - `sprint` ([Sprint](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#sprint)): * The current sprint. Available only when the sprint is provided in the request context object. * - `board` ([Board](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#board)): The * current board. Available only when the board is provided in the request context object. * - `serviceDesk` * ([ServiceDesk](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#servicedesk)): * The current service desk. Available only when the service desk is provided in the request context object. * - `customerRequest` * ([CustomerRequest](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#customerrequest)): * The current customer request. Available only when the customer request is provided in the request context * object. * * Also, custom context variables can be passed in the request with their types. Those variables can be accessed by * key in the Jira expression. These variable types are available for use in a custom context: * * - `user`: A [user](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#user) * specified as an Atlassian account ID. * - `issue`: An [issue](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue) * specified by ID or key. All the fields of the issue object are available in the Jira expression. * - `json`: A JSON object containing custom content. * - `list`: A JSON list of `user`, `issue`, or `json` variable types. * * This operation can be accessed anonymously. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required**: None. * However, an expression may return different results for different users depending on their permissions. For * example, different users may see different comments on the same issue.\ * Permission to access Jira Software is required to access Jira Software context variables (`board` and `sprint`) or * fields (for example, `issue.sprint`). */ async evaluateJiraExpression<T = Models.JiraExpressionResult>( parameters: Parameters.EvaluateJiraExpression, callback: Callback<T>, ): Promise<void>; /** * Evaluates a Jira expression and returns its value. * * This resource can be used to test Jira expressions that you plan to use elsewhere, or to fetch data in a flexible * way. Consult the [Jira expressions * documentation](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/) for more details. * * #### Context variables * * The following context variables are available to Jira expressions evaluated by this resource. Their presence * depends on various factors; usually you need to manually request them in the context object sent in the payload, * but some of them are added automatically under certain conditions. * * - `user` ([User](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#user)): The * current user. Always available and equal to `null` if the request is anonymous. * - `app` ([App](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#app)): The * [Connect app](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) that made the request. * Available only for authenticated requests made by Connect Apps (read more here: [Authentication for Connect * apps](https://developer.atlassian.com/cloud/jira/platform/security-for-connect-apps/)). * - `issue` ([Issue](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)): The * current issue. Available only when the issue is provided in the request context object. * - `issues` ([List](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#list) of * [Issues](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)): A * collection of issues matching a JQL query. Available only when JQL is provided in the request context object. * - `project` ([Project](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#project)): * The current project. Available only when the project is provided in the request context object. * - `sprint` ([Sprint](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#sprint)): * The current sprint. Available only when the sprint is provided in the request context object. * - `board` ([Board](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#board)): The * current board. Available only when the board is provided in the request context object. * - `serviceDesk` * ([ServiceDesk](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#servicedesk)): * The current service desk. Available only when the service desk is provided in the request context object. * - `customerRequest` * ([CustomerRequest](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#customerrequest)): * The current customer request. Available only when the customer request is provided in the request context * object. * * Also, custom context variables can be passed in the request with their types. Those variables can be accessed by * key in the Jira expression. These variable types are available for use in a custom context: * * - `user`: A [user](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#user) * specified as an Atlassian account ID. * - `issue`: An [issue](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue) * specified by ID or key. All the fields of the issue object are available in the Jira expression. * - `json`: A JSON object containing custom content. * - `list`: A JSON list of `user`, `issue`, or `json` variable types. * * This operation can be accessed anonymously. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required**: None. * However, an expression may return different results for different users depending on their permissions. For * example, different users may see different comments on the same issue.\ * Permission to access Jira Software is required to access Jira Software context variables (`board` and `sprint`) or * fields (for example, `issue.sprint`). */ async evaluateJiraExpression<T = Models.JiraExpressionResult>( parameters: Parameters.EvaluateJiraExpression, callback?: never, ): Promise<T>; async evaluateJiraExpression<T = Models.JiraExpressionResult>( parameters: Parameters.EvaluateJiraExpression, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: '/rest/api/2/expression/eval', method: 'POST', params: { expand: parameters.expand, }, data: { context: parameters.context, expression: parameters.expression, }, }; return this.client.sendRequest(config, callback); } /** * Evaluates a Jira expression and returns its value. The difference between this and `eval` is that this endpoint * uses the enhanced search API when evaluating JQL queries. This API is eventually consistent, unlike the strongly * consistent `eval` API. This allows for better performance and scalability. In addition, this API's response for JQL * evaluation is based on a scrolling view (backed by a `nextPageToken`) instead of a paginated view (backed by * `startAt` and `totalCount`). * * This resource can be used to test Jira expressions that you plan to use elsewhere, or to fetch data in a flexible * way. Consult the [Jira expressions * documentation](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/) for more details. * * #### Context variables * * The following context variables are available to Jira expressions evaluated by this resource. Their presence * depends on various factors; usually you need to manually request them in the context object sent in the payload, * but some of them are added automatically under certain conditions. * * - `user` ([User](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#user)): The * current user. Always available and equal to `null` if the request is anonymous. * - `app` ([App](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#app)): The * [Connect app](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) that made the request. * Available only for authenticated requests made by Connect apps (read more here: [Authentication for Connect * apps](https://developer.atlassian.com/cloud/jira/platform/security-for-connect-apps/)). * - `issue` ([Issue](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)): The * current issue. Available only when the issue is provided in the request context object. * - `issues` ([List](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#list) of * [Issues](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)): A * collection of issues matching a JQL query. Available only when JQL is provided in the request context object. * - `project` ([Project](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#project)): * The current project. Available only when the project is provided in the request context object. * - `sprint` ([Sprint](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#sprint)): * The current sprint. Available only when the sprint is provided in the request context object. * - `board` ([Board](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#board)): The * current board. Available only when the board is provided in the request context object. * - `serviceDesk` * ([ServiceDesk](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#servicedesk)): * The current service desk. Available only when the service desk is provided in the request context object. * - `customerRequest` * ([CustomerRequest](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#customerrequest)): * The current customer request. Available only when the customer request is provided in the request context * object. * * In addition, you can pass custom context variables along with their types. You can then access them from the Jira * expression by key. You can use the following variables in a custom context: * * - `user`: A [user](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#user) * specified as an Atlassian account ID. * - `issue`: An [issue](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue) * specified by ID or key. All the fields of the issue object are available in the Jira expression. * - `json`: A JSON object containing custom content. * - `list`: A JSON list of `user`, `issue`, or `json` variable types. * * This operation can be accessed anonymously. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required**: None. * However, an expression may return different results for different users depending on their permissions. For * example, different users may see different comments on the same issue.\ * Permission to access Jira Software is required to access Jira Software context variables (`board` and `sprint`) or * fields (for example, `issue.sprint`). */ async evaluateJiraExpressionUsingEnhancedSearch<T = Models.EvaluatedJiraExpression>( parameters: Parameters.EvaluateJiraExpressionUsingEnhancedSearch, callback: Callback<T>, ): Promise<void>; /** * Evaluates a Jira expression and returns its value. The difference between this and `eval` is that this endpoint * uses the enhanced search API when evaluating JQL queries. This API is eventually consistent, unlike the strongly * consistent `eval` API. This allows for better performance and scalability. In addition, this API's response for JQL * evaluation is based on a scrolling view (backed by a `nextPageToken`) instead of a paginated view (backed by * `startAt` and `totalCount`). * * This resource can be used to test Jira expressions that you plan to use elsewhere, or to fetch data in a flexible * way. Consult the [Jira expressions * documentation](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/) for more details. * * #### Context variables * * The following context variables are available to Jira expressions evaluated by this resource. Their presence * depends on various factors; usually you need to manually request them in the context object sent in the payload, * but some of them are added automatically under certain conditions. * * - `user` ([User](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#user)): The * current user. Always available and equal to `null` if the request is anonymous. * - `app` ([App](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#app)): The * [Connect app](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) that made the request. * Available only for authenticated requests made by Connect apps (read more here: [Authentication for Connect * apps](https://developer.atlassian.com/cloud/jira/platform/security-for-connect-apps/)). * - `issue` ([Issue](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)): The * current issue. Available only when the issue is provided in the request context object. * - `issues` ([List](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#list) of * [Issues](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)): A * collection of issues matching a JQL query. Available only when JQL is provided in the request context object. * - `project` ([Project](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#project)): * The current project. Available only when the project is provided in the request context object. * - `sprint` ([Sprint](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#sprint)): * The current sprint. Available only when the sprint is provided in the request context object. * - `board` ([Board](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#board)): The * current board. Available only when the board is provided in the request context object. * - `serviceDesk` * ([ServiceDesk](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#servicedesk)): * The current service desk. Available only when the service desk is provided in the request context object. * - `customerRequest` * ([CustomerRequest](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#customerrequest)): * The current customer request. Available only when the customer request is provided in the request context * object. * * In addition, you can pass custom context variables along with their types. You can then access them from the Jira * expression by key. You can use the following variables in a custom context: * * - `user`: A [user](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#user) * specified as an Atlassian account ID. * - `issue`: An [issue](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue) * specified by ID or key. All the fields of the issue object are available in the Jira expression. * - `json`: A JSON object containing custom content. * - `list`: A JSON list of `user`, `issue`, or `json` variable types. * * This operation can be accessed anonymously. * * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required**: None. * However, an expression may return different results for different users depending on their permissions. For * example, different users may see different comments on the same issue.\ * Permission to access Jira Software is required to access Jira Software context variables (`board` and `sprint`) or * fields (for example, `issue.sprint`). */ async evaluateJiraExpressionUsingEnhancedSearch<T = Models.EvaluatedJiraExpression>( parameters: Parameters.EvaluateJiraExpressionUsingEnhancedSearch, callback?: never, ): Promise<T>; async evaluateJiraExpressionUsingEnhancedSearch<T = Models.EvaluatedJiraExpression>( parameters: Parameters.EvaluateJiraExpressionUsingEnhancedSearch, callback?: Callback<T>, ): Promise<void | T> { const config: RequestConfig = { url: '/rest/api/2/expression/evaluate', method: 'POST', params: { expand: parameters.expand, }, data: { expression: parameters.expression, context: parameters.context, }, }; return this.client.sendRequest(config, callback); } }