Internal
Create a new instance of the service.
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.
Permissions required: None.
Optional
check?: "type" | "syntax" | "complexity"The check to perform:
syntax
Each expression's syntax is checked to ensure the expression can
be parsed. Also, syntactic limits are validated. For example, the expression's
length.type
EXPERIMENTAL. Each expression is type checked and the final type of
the expression inferred. Any type errors that would result in the expression
failure at runtime are reported. For example, accessing properties that don't
exist or passing the wrong number of arguments to functions. Also performs the
syntax check.complexity
EXPERIMENTAL. Determines the formulae for how many expensive
operations
each expression may execute.The Jira expressions to analyse.
Returned if the request is successful.
example:
{
"results": [
{
"expression": "analysed expression",
"errors": [
{
"line": 1,
"column": 4,
"message": "!, -, typeof, (, IDENTIFIER, null, true, false, NUMBER, STRING, TEMPLATE_LITERAL, new, [ or { expected, > encountered.",
"type": "syntax"
},
{
"message": "Jira expression is too long (1040), limit: 1000 characters",
"type": "other"
},
{
"message": "Jira expression has too many nodes (150), limit: 100 leaves",
"type": "other"
}
],
"valid": false
},
{
"expression": "issues.map(i => {idAndKey: [i.id, i.key], summary: i.summary, comments: i.comments})",
"valid": true,
"type": "List<{idAndKey: [Number, String], summary: String, comments: List<Comment>}>",
"complexity": {
"expensiveOperations": "N",
"variables": {
"N": "issues"
}
}
},
{
"expression": "issues.map(i => i.id > '0')",
"errors": [
{
"expression": "i.id > 0",
"message": "Can't compare Number to String.",
"type": "type"
}
],
"valid": false,
"type": "TypeError"
}
]
}
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 for more details.
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):
The current user. Always available and equal to null
if the request is
anonymous.app
(App):
The Connect
app
that made the request. Available only for authenticated requests made by
Connect Apps (read more here: Authentication for Connect
apps).issue
(Issue):
The current issue. Available only when the issue is provided in the request
context object.issues
(List
of
Issues):
A collection of issues matching a JQL query. Available only when JQL is
provided in the request context object.project
(Project):
The current project. Available only when the project is provided in the request
context object.sprint
(Sprint):
The current sprint. Available only when the sprint is provided in the request
context object.board
(Board):
The current board. Available only when the board is provided in the request
context object.serviceDesk
(ServiceDesk):
The current service desk. Available only when the service desk is provided in
the request context object.customerRequest
(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
specified as an Atlassian account ID.issue
: An
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 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
).
Optional
expand?: stringUse expand to include additional information in the response.
This parameter accepts meta.complexity
that returns information about the
expression complexity. For example, the number of expensive operations used by
the expression and how close the expression is to reaching the complexity
limit.
Useful when designing and debugging your expressions.
The Jira expression and the evaluation context.
Returned if the evaluation results in a value. The result is a JSON primitive value, list, or object.
example:
{
"value": "The expression's result. This value can be any JSON, not necessarily a String",
"meta": {
"complexity": {
"steps": {
"value": 1,
"limit": 10000
},
"expensiveOperations": {
"value": 3,
"limit": 10
},
"beans": {
"value": 0,
"limit": 1000
},
"primitiveValues": {
"value": 1,
"limit": 10000
}
},
"issues": {
"jql": {
"startAt": 0,
"maxResults": 1000,
"count": 140,
"totalCount": 140,
"validationWarnings": [
"There is a problem with the JQL query."
]
}
}
}
}
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 for more details.
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):
The current user. Always available and equal to null
if the request is
anonymous.app
(App):
The Connect
app
that made the request. Available only for authenticated requests made by
Connect apps (read more here: Authentication for Connect
apps).issue
(Issue):
The current issue. Available only when the issue is provided in the request
context object.issues
(List
of
Issues):
A collection of issues matching a JQL query. Available only when JQL is
provided in the request context object.project
(Project):
The current project. Available only when the project is provided in the request
context object.sprint
(Sprint):
The current sprint. Available only when the sprint is provided in the request
context object.board
(Board):
The current board. Available only when the board is provided in the request
context object.serviceDesk
(ServiceDesk):
The current service desk. Available only when the service desk is provided in
the request context object.customerRequest
(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
specified as an Atlassian account ID.issue
: An
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 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
).
Optional
expand?: stringUse expand to include additional information in the response.
This parameter accepts meta.complexity
that returns information about the
expression complexity. For example, the number of expensive operations used by
the expression and how close the expression is to reaching the complexity
limit.
Useful when designing and debugging your expressions.
The Jira expression and the evaluation context.
Returned if the evaluation results in a value. The result is a JSON primitive value, list, or object.
example:
{
"value": "The expression's result. This value can be any JSON, not necessarily a String",
"meta": {
"complexity": {
"steps": {
"value": 1,
"limit": 10000
},
"expensiveOperations": {
"value": 3,
"limit": 10
},
"beans": {
"value": 0,
"limit": 1000
},
"primitiveValues": {
"value": 1,
"limit": 10000
}
},
"issues": {
"jql": {
"nextPageToken": "EgQIlMIC"
}
}
}
}
Protected
Static
initialize
This resource is a collection of operations for Jira expressions.
See
https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-jira-expressions